Code

git notes merge: Add automatic conflict resolvers (ours, theirs, union)
authorJohan Herland <johan@herland.net>
Sun, 14 Nov 2010 23:55:12 +0000 (00:55 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 17 Nov 2010 21:21:58 +0000 (13:21 -0800)
commit3228e67120a8c71bf7804a5c52448a841d6f3b58
tree7cd1562259a3942cc2811c2a4f557d077649698a
parent2085b16aefdbb1dc081aa40c62eb8110a222731d
git notes merge: Add automatic conflict resolvers (ours, theirs, union)

The new -s/--strategy command-line option to 'git notes merge' allow the user
to choose how notes merge conflicts should be resolved. There are four valid
strategies to choose from:

1. "manual" (the default): This will let the user manually resolve conflicts.
   This option currently fails with an error message. It will be implemented
   properly in future patches.

2. "ours": This automatically chooses the local version of a conflict, and
   discards the remote version.

3. "theirs": This automatically chooses the remote version of a conflict, and
   discards the local version.

4. "union": This automatically resolves the conflict by appending the remote
   version to the local version.

The strategies are implemented using the combine_notes_* functions from the
notes.h API.

The patch also includes testcases verifying the correct implementation of
these strategies.

This patch has been improved by the following contributions:
- Jonathan Nieder: Future-proof by always checking add_note() return value
- Stephen Boyd: Use test_commit
- Stephen Boyd: Use correct option name

Thanks-to: Jonathan Nieder <jrnieder@gmail.com>
Thanks-to: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/notes.c
notes-merge.c
notes-merge.h
t/t3309-notes-merge-auto-resolve.sh [new file with mode: 0755]