Thread (1 message) 1 message, 1 author, 2016-06-15

Re: Null deref in recursive merge in df73af5f667a479764d2b2195cb0cb60b0b89e3d

From: Fredrik Kuivinen <hidden>
Date: 2016-06-15 22:47:16

On Thu, Jul 30, 2009 at 9:45 AM, Junio C Hamano[off-list ref] wrote:
Junio C Hamano [off-list ref] writes:
quoted
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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help