From: Junio C Hamano Date: Fri, 02 Dec 2005 05:46:12 GMT Subject: Re: What's new in git.git master branch Message-ID: <7v7jao9hln.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <7vmzjljgwo.fsf@assigned-by-dhcp.cox.net> Junio C Hamano writes: > Fredrik Kuivinen writes: > >> It turns out that this change breaks the directory/file conflict >> handling in git-merge-recursive. >> >> git-ls-tree -r -z >> >> Should we do it that way or should ls-tree be changed? > > Ouch. Sorry, I should have been more careful. So we updated ls-tree to take -t flag which shows tree entries under -r flag. I'd appreciate if you test the attached patch. > Also I think I broke the case where base trees need to be merged > in 58cce8a8 commit (I changed processEntry not to collapse the > index entry when file content changes cannot be automerged, but > that change has to be done only for the final merge, and merges > between base trees must collapse to be able to write the index > file out as a tree). I think that the above worry was unfounded, because the updateFileExt call I removed to prevent it from collapsing the unmerged entries was in effect only in !cacheOnly case (i.e. callDepth == 0). -- >8 -- [PATCH] merge-recursive: adjust git-ls-tree use for the latest. You need to pass -t flag if you want to see tree objects in "git-ls-tree -r" output these days. This change broke the tree structure reading code in git-merge-recursive used to detect D/F conflicts. Signed-off-by: Junio C Hamano --- git-merge-recursive.py | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) a6b51f11ab7f7f838a9b17f81059eebfc36e4c84 diff --git a/git-merge-recursive.py b/git-merge-recursive.py index e599b11..b7fb096 100755 --- a/git-merge-recursive.py +++ b/git-merge-recursive.py @@ -98,7 +98,7 @@ getFilesRE = re.compile(r'^([0-7]+) (\S+ def getFilesAndDirs(tree): files = Set() dirs = Set() - out = runProgram(['git-ls-tree', '-r', '-z', tree]) + out = runProgram(['git-ls-tree', '-r', '-z', '-t', tree]) for l in out.split('\0'): m = getFilesRE.match(l) if m: -- 0.99.9.GIT