Dear diary, on Tue, Nov 08, 2005 at 07:00:11AM CET, I got a letter
where Junio C Hamano [off-list ref] told me that...
Nobody complained so far about this, probably because two side
adding different versions is rare enough. And the reasoning
behind the current behaviour is probably because the tool cannot
automerge them sensibly anyway. Leaving the SHA1 in index file
might probably be easier to clean up by hand (e.g. see ls-files
--unmerged, and cut&paste the desired SHA1 to 'git-cat-file
blob' command line, or something silly like that). But if we
were to go that route, adding --stage=[123] flag so that the
user can say 'git-checkout-index --stage=3 file3'might have
helped a bit more.
#
# Added in both (different in each).
#
".$id1$id2")
#echo "Adding $file"
filev="$file"
while [ -e "$filev~1" ] || [ -e "$filev~2" ]; do
filev="$filev~"
done
error "File $file added in both branches, but different in each!"
error "Conflicting versions saved as '$filev~1' and '$filev~2'."
git-update-index --add --cacheinfo "$mode1" "$id1" "$file" &&
git-checkout-index -u -f -- "$file" &&
mv "$file" "$filev~1" ||
error "Cannot create '$filev~1'"
git-update-index --add --cacheinfo "$mode2" "$id2" "$file" &&
git-checkout-index -u -f -- "$file" &&
mv "$file" "$filev~2" ||
error "Cannot create '$filev~2'"
exit 1
;;
is what Cogito's automerger does. It ain't very pretty, but it works.
:-) (At least it seems to.) I yet need to add some conflicts tracking to
Cogito to prevent accidental checking in of conflicts.
We could instead use the attached patch to get the behaviour you
are expecting. I have a feeling that the result from this might
be a little more intuitive and easier to resolve by hand than
the current one. Although we may end up unresolvable mess in
file3 if either side is binary, in that case the user can still
sift through 'diff-tree A B file3' output to find out the
relevant SHA1 to recover the blobs from both sides by hand
anyway. Does anybody have strong opinion on this?
I think having
<<<<<
file1
=====
file2
>>>>>
is an awful PITA to resolve, especially when the files actually are
similar. Running some vimdiff (or just diff and possibly applying either
way) on two separate files is much more convenient.
--
Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
VI has two modes: the one in which it beeps and the one in which
it doesn't.