diff options
author | Jacob Keller <jacob.keller@gmail.com> | 2015-08-17 14:33:34 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-08-17 15:39:13 -0700 |
commit | 4f655e22b76fed49b0c32bcdcd899934215b9a6d (patch) | |
tree | e48e1263e1150c5c24d21c6cba74e9c2048bd162 /builtin/notes.c | |
parent | d2d68d9975da4a15dfca0e6e59001948e5bf57f9 (diff) | |
download | git-4f655e22b76fed49b0c32bcdcd899934215b9a6d.tar.gz |
notes: teach git-notes about notes.<name>.mergeStrategy optionjk/notes-merge-config
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>
Diffstat (limited to 'builtin/notes.c')
-rw-r--r-- | builtin/notes.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/builtin/notes.c b/builtin/notes.c index 9026d567cd..ebd3e62e87 100644 --- a/builtin/notes.c +++ b/builtin/notes.c @@ -816,7 +816,19 @@ static int merge(int argc, const char **argv, const char *prefix) usage_with_options(git_notes_merge_usage, options); } } else { - git_config_get_notes_strategy("notes.mergeStrategy", &o.strategy); + struct strbuf merge_key = STRBUF_INIT; + const char *short_ref = NULL; + + if (!skip_prefix(o.local_ref, "refs/notes/", &short_ref)) + die("BUG: local ref %s is outside of refs/notes/", + o.local_ref); + + strbuf_addf(&merge_key, "notes.%s.mergeStrategy", short_ref); + + if (git_config_get_notes_strategy(merge_key.buf, &o.strategy)) + git_config_get_notes_strategy("notes.mergeStrategy", &o.strategy); + + strbuf_release(&merge_key); } strbuf_addf(&msg, "notes: Merged notes from %s into %s", |