notes: teach git-notes about notes.<name>.mergeStrategy option
Teach notes about a new "notes.<name>.mergeStrategy" option for configuring the notes merge strategy when merging into refs/notes/<name>. This option allows for the selection of merge strategy for particular notes refs, rather than all notes ref merges, as user may not want cat_sort_uniq for all refs, but only some. Note that the <name> is the local reference we are merging into, not the remote ref we merged from. The assumption is that users will mostly want to configure separate local ref merge strategies rather than strategies depending on which remote ref they merge from. notes.<name>.mergeStrategy overrides the general behavior as it is more specific. Signed-off-by: Jacob Keller <jacob.keller@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
d2d68d9975
commit
4f655e22b7
@ -383,6 +383,17 @@ test_expect_success 'reset to pre-merge state (y)' '
|
||||
verify_notes y y
|
||||
'
|
||||
|
||||
test_expect_success 'merge z into y with "ours" per-ref configuration option => Non-conflicting 3-way merge' '
|
||||
git -c notes.y.mergeStrategy="ours" notes merge z &&
|
||||
verify_notes y ours
|
||||
'
|
||||
|
||||
test_expect_success 'reset to pre-merge state (y)' '
|
||||
git update-ref refs/notes/y refs/notes/y^1 &&
|
||||
# Verify pre-merge state
|
||||
verify_notes y y
|
||||
'
|
||||
|
||||
cat <<EOF | sort >expect_notes_theirs
|
||||
9b4b2c61f0615412da3c10f98ff85b57c04ec765 $commit_sha15
|
||||
5de7ea7ad4f47e7ff91989fb82234634730f75df $commit_sha14
|
||||
@ -534,6 +545,34 @@ test_expect_success 'reset to pre-merge state (y)' '
|
||||
verify_notes y y
|
||||
'
|
||||
|
||||
test_expect_success 'merge z into y with "union" strategy overriding per-ref configuration => Non-conflicting 3-way merge' '
|
||||
git -c notes.y.mergeStrategy="theirs" notes merge --strategy=union z &&
|
||||
verify_notes y union
|
||||
'
|
||||
|
||||
test_expect_success 'reset to pre-merge state (y)' '
|
||||
git update-ref refs/notes/y refs/notes/y^1 &&
|
||||
# Verify pre-merge state
|
||||
verify_notes y y
|
||||
'
|
||||
|
||||
test_expect_success 'merge z into y with "union" per-ref overriding general configuration => Non-conflicting 3-way merge' '
|
||||
git -c notes.y.mergeStrategy="union" -c notes.mergeStrategy="theirs" notes merge z &&
|
||||
verify_notes y union
|
||||
'
|
||||
|
||||
test_expect_success 'reset to pre-merge state (y)' '
|
||||
git update-ref refs/notes/y refs/notes/y^1 &&
|
||||
# Verify pre-merge state
|
||||
verify_notes y y
|
||||
'
|
||||
|
||||
test_expect_success 'merge z into y with "manual" per-ref only checks specific ref configuration => Conflicting 3-way merge' '
|
||||
test_must_fail git -c notes.z.mergeStrategy="union" notes merge z &&
|
||||
git notes merge --abort &&
|
||||
verify_notes y y
|
||||
'
|
||||
|
||||
cat <<EOF | sort >expect_notes_union2
|
||||
d682107b8bf7a7aea1e537a8d5cb6a12b60135f1 $commit_sha15
|
||||
5de7ea7ad4f47e7ff91989fb82234634730f75df $commit_sha14
|
||||
|
Reference in New Issue
Block a user