On Thu, Jul 30, 2009 at 9:45 AM, Junio C Hamano<gitster@xxxxxxxxx> wrote: > Junio C Hamano <gitster@xxxxxxxxx> writes: > >> The codepath saw that one branch renamed dev-ubuntu/ stuff to dev/ at that >> "unmerged" path, while the other branch added something else to the same >> path, and decided to add that at an alternative path, and the intent of >> that is so that it can safely resolve the "renamed" side to its final >> destination. The added update_file() call is about finishing that >> conflict resolution the code forgets to do. > > By the way, (I am CC'ing Fredrik, the author of the merge-recursive.py, > the original implementation, even though I haven't seen him around here > for a long time. Two "thieves" are also CC'ed), I think the way recursive > strategy tries to handle rename/add and rename/rename conflicts by coming > up with a temporary pathname is fundamentally wrong. It was a long time ago I looked at the merge stuff (or any git code in fact) so I may have forgotten some things. However, as far as I can see your analysis is correct and the temporary pathname stuff can be avoided when the conflicts only involve files (and no directories). As you wrote, for D/F conflicts one need the temporary pathnames in order to build a tree which is used in the virtual ancestor. [Nice analysis of when temporary pathnames are needed and when they are not needed snipped.] - Fredrik PS. I am sorry for the late reply. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html