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

Re: Null deref in recursive merge in df73af5f667a479764d2b2195cb0cb60b0b89e3d

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:47:07

Hi,

On Thu, 30 Jul 2009, Junio C Hamano 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.

If our branch (stage #2) added by renaming and their branch (stage #3)
added by creating the same path, why can't we simply leave these two
stages in unmerged state without funny "unique_path()" renaming?
AFAIR we could not leave the two in unmerged state because the "recursive" 
part of the recursive merge demands that we be able (at the intermediate 
merges) to write a tree.

But I agree that coming up with unique paths is wrong: if it is a 
rename/rename conflict, it should be

	<<<<<<<
	=======
	<file1>
	>>>>>>>

for one and

	<<<<<<<
	<file2>
	=======
	>>>>>>>

for the other rename target.

Ciao,
Dscho
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help