git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: More merge questions (why doesn't this work?)

From
Junio C Hamano <junkio@cox.net>
Date
Dec 2, 2005, 10:12 UTC
Message-ID
<7vacfj6c4l.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<20051202091946.1631.qmail@science.horizon.com>
linux@horizon.com writes:
> Which should be case 10 of the t/t1000-read-tree-m-3way.sh
> table and succeed.

Yes. The reason is git-read-tree's behaviour was changed underneath while octopus was looking elsewhere ;-). See Documentation/technical/trivial-merge.txt, last couple of lines.

There are two schools of thoughts about "both sides remove" (case #10) case. Some people argued that "the branches might have renamed that path to different paths and might indicate a rename/rename conflict" (meaning read-tree should not consider it trivial, and leave that to upper level "policy layer" to decide). merge-one-file policy simply says "no, they both wanted to remove them". If I recall correctly, read-tree itself merged this case before multi-base rewrite happened (if you are curious, run 'git whatchanged -p read-tree.c' and look for "Rewrite read-tree").

> 1) The MAJOR difference between "git checkout" and "git reset --hard"

True. "git reset --hard" should be used without <rev> by novices and with <rev> after they understand what they are doing (it is used for rewinding/warping heads).

> 2) Don't use "git branch" to create branches, unless you really
>    *don't* want to switch to them.  Use "git checkout -b".

Because...? "git branch foo && git checkout foo" may be suboptimal to type, but it is not _wrong_; it does not do anything bad or incorrect.

> 3) Dumb question: why does "git-commit-tree" need "-p" before the
>    parent commit arguments?  Isn't just argv[2]..argv[argc-1]
>    good enough?
1. Why not?
2. I myself wondered about it long time ago.
3. It does not matter; nobody types that command by hand.
4. It allows us to later add some other flags to commit-tree
   (none planned currently).
> 4) If the "git-read-tree" docs for "--reset", does "ignored" mean
>    "not overwritten" or "overwritten"?

That sentence is very poorly written; a better paraphrasing is appreciated.

	$ git whatchanged -S--reset \
        	read-tree.c Documentation/git-read-tree.txt 

shows logs for 438195ccedce7270cf5ba167a940c90467cb72d7 commit (run "git-cat-file commit 438195cc" to read it). It ignores existing unmerged entries when reconstructing the index from the given tree ("git-read-tree -m", given an unmerged index, refuses to operate, but "--reset" *ignores* the unmerged ones hence it does not refuse to operate).

> 5) The final "error" message on "git-merge --no-commit" is a bit
>    alarming for a newbie who uses it...

First of all, --no-commit is not meant to be used by newbies, but you are right. Patches to make the failure message conditional are welcome. It should switch on these three cases:

 - "--no-commit" option is given, but a merge conflict would
   have prevented autocommit anyway;
 - "--no-commit" option is given, but automerge succeeded;
 - conflict prevented autocommit.
> 6) The "pickaxe" options are being a bit confusing, and the fact they're
>    only documented in cvs-migration.txt doesn't help.

Docs of git-diff-* family have OPTIONS section, at the end of which refers you to the diffcore documentation. Suggestions to a better organization and a patch is appropriate here.

> 7) The git-tag man page could use a little better description of -a.
Please.  It should have the same "OPTIONS" section as others do.
Previous: linux@horizon.comNext: Sven Verdoolaege
Message 39 of 64 in “git-name-rev off-by-one bug”
  1. linux@horizon.comNov 28, 2005
  2. Junio C HamanoNov 29, 2005
  3. linux@horizon.comNov 29, 2005
  4. Junio C HamanoNov 29, 2005
  5. Junio C HamanoNov 30, 2005
  6. Petr BaudisNov 29, 2005
  7. Junio C HamanoNov 29, 2005
  8. Petr BaudisDec 4, 2005
  9. as promised, docs: git for the confusedlinux@horizon.com, Dec 8, 2005
  10. Junio C HamanoDec 8, 2005
  11. H. Peter AnvinDec 8, 2005
  12. Alan ChandlerDec 9, 2005
  13. Petr BaudisDec 9, 2005
  14. Josef WeidendorferDec 9, 2005
  15. linux@horizon.comNov 29, 2005
  16. Junio C HamanoNov 29, 2005
  17. linux@horizon.comNov 30, 2005
  18. Junio C HamanoNov 30, 2005
  19. Junio C HamanoNov 30, 2005
  20. Linus TorvaldsNov 30, 2005
  21. Junio C HamanoNov 30, 2005
  22. Junio C HamanoNov 30, 2005
  23. Linus TorvaldsNov 30, 2005
  24. Linus TorvaldsNov 30, 2005
  25. Junio C HamanoNov 30, 2005
  26. Junio C HamanoNov 30, 2005
  27. Linus TorvaldsNov 30, 2005
  28. Linus TorvaldsNov 30, 2005
  29. Junio C HamanoDec 2, 2005
  30. merge-one-file: make sure we create the merged file.Junio C Hamano, Dec 2, 2005
  31. merge-one-file: make sure we do not mismerge symbolic links.Junio C Hamano, Dec 2, 2005
  32. git-merge documentation: conflicting merge leaves higher stages in indexJunio C Hamano, Dec 2, 2005
  33. linux@horizon.comNov 30, 2005
  34. Junio C HamanoNov 30, 2005
  35. More merge questionslinux@horizon.com, Nov 30, 2005
  36. Daniel BarkalowNov 30, 2005
  37. Junio C HamanoNov 30, 2005
  38. linux@horizon.comDec 2, 2005
  39. Junio C HamanoDec 2, 2005
  40. Sven VerdoolaegeDec 2, 2005
  41. Junio C HamanoDec 2, 2005
  42. Sven VerdoolaegeDec 5, 2005
  43. linux@horizon.comDec 2, 2005
  44. Junio C HamanoDec 2, 2005
  45. linux@horizon.comDec 2, 2005
  46. Junio C HamanoDec 2, 2005
  47. Linus TorvaldsDec 2, 2005
  48. linux@horizon.comDec 2, 2005
  49. linux@horizon.comDec 2, 2005
  50. Linus TorvaldsNov 30, 2005
  51. Junio C HamanoNov 30, 2005
  52. Junio C HamanoNov 30, 2005
  53. Junio C HamanoNov 30, 2005
  54. linux@horizon.comNov 30, 2005
  55. Daniel BarkalowNov 30, 2005
  56. Daniel BarkalowNov 30, 2005
  57. Junio C HamanoNov 30, 2005
  58. Daniel BarkalowNov 30, 2005
  59. Junio C HamanoNov 30, 2005
  60. Daniel BarkalowNov 30, 2005
  61. Junio C HamanoDec 1, 2005
  62. Junio C HamanoDec 1, 2005
  63. Petr BaudisDec 1, 2005
  64. Randal L. SchwartzDec 1, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.