Hello,
There is a thread on the linux-arm-kernel ML that discusses handling of merge conflicts with git.[1]
I played around a bit with that and wondered about a few things:
ukleinek@zentaur:~/gsrc/linux-2.6$ git checkout -b test adf6d34e460387ee3e8f1e1875d Switched to a new branch "test"
ukleinek@zentaur:~/gsrc/linux-2.6$ git merge v2.6.25 Auto-merged MAINTAINERS CONFLICT (delete/modify): drivers/leds/leds-tosa.c deleted in HEAD and modified in v2.6.25. Version v2.6.25 of drivers/leds/leds-tosa.c left in tree. Auto-merged drivers/serial/imx.c Automatic merge failed; fix conflicts and then commit the result.
Now "git diff --merge" shows:
diff --cc drivers/leds/leds-tosa.c index 7ebecc4,0000000..9e0a188 ...
Shouldn't that better be reversed, i.e. 9e0a188..7ebecc4,0000000?
The resolution was to delete drivers/leds/leds-tosa.c:
ukleinek@zentaur:~/gsrc/linux-2.6$ git rm drivers/leds/leds-tosa.c rm 'drivers/leds/leds-tosa.c' rm 'drivers/leds/leds-tosa.c'
ukleinek@zentaur:~/gsrc/linux-2.6$ git commit Created commit 99a64ab: Merge commit 'v2.6.25' into test
Now "git show" doesn't show the conflict resolution as it does for other conflicting merges. Adding -p and/or --cc didn't help either. Looking at the source I think the problem is that diff_tree_combined only shows diffs for paths that are touched by every parent. I'm not sure how I want to have the diff shown, but showing nothing seems wrong. Ideas?
Another thing is that rerere don't record my resolution.
Best regards Uwe
[1] http://thread.gmane.org/gmane.linux.ports.arm.kernel/40654/focus=40656
-- Uwe Kleine-König, Software Engineer Digi International GmbH Branch Breisach, Küferstrasse 8, 79206 Breisach, Germany Tax: 315/5781/0242 / VAT: DE153662976 / Reg. Amtsgericht Dortmund HRB 13962