[PATCH 4/6] Allow "git notes merge" to use refs/remote-notes/ as a source.
From: Yann Dirson <hidden>
Date: 2016-06-15 22:51:29
Subsystem:
documentation, the rest · Maintainers:
Jonathan Corbet, Linus Torvalds
Signed-off-by: Yann Dirson <redacted> --- Documentation/git-notes.txt | 5 +++++ builtin/notes.c | 4 ++-- notes.c | 5 +++-- notes.h | 2 +- revision.c | 2 +- 5 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/Documentation/git-notes.txt b/Documentation/git-notes.txt
index 6a187f2..7ce8a24 100644
--- a/Documentation/git-notes.txt
+++ b/Documentation/git-notes.txt@@ -104,6 +104,11 @@ and instructs the user to manually resolve the conflicts there. When done, the user can either finalize the merge with 'git notes merge --commit', or abort the merge with 'git notes merge --abort'. ++ +In addition to `refs/notes/`, the remote notes ref is accepted +from the `refs/remote-notes/` namespace. This is intended to +provide notes with support for a workflow similar to the one used +for heads references. remove:: Remove the notes for given objects (defaults to HEAD). When
diff --git a/builtin/notes.c b/builtin/notes.c
index ae89d38..6bff44f 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c@@ -905,7 +905,7 @@ static int merge(int argc, const char **argv, const char *prefix) o.local_ref = default_notes_ref(); strbuf_addstr(&remote_ref, argv[0]); - expand_notes_ref(&remote_ref); + expand_notes_ref(&remote_ref, 1); o.remote_ref = remote_ref.buf; if (strategy) {
@@ -1075,7 +1075,7 @@ int cmd_notes(int argc, const char **argv, const char *prefix) if (override_notes_ref) { struct strbuf sb = STRBUF_INIT; strbuf_addstr(&sb, override_notes_ref); - expand_notes_ref(&sb); + expand_notes_ref(&sb, 0); setenv("GIT_NOTES_REF", sb.buf, 1); strbuf_release(&sb); }
diff --git a/notes.c b/notes.c
index 1a5676a..12afc02 100644
--- a/notes.c
+++ b/notes.c@@ -1282,9 +1282,10 @@ int copy_note(struct notes_tree *t, return 0; } -void expand_notes_ref(struct strbuf *sb) +void expand_notes_ref(struct strbuf *sb, int allow_remotes) { - if (!prefixcmp(sb->buf, "refs/notes/")) + if (!prefixcmp(sb->buf, "refs/notes/") || + (allow_remotes && !prefixcmp(sb->buf, "refs/remote-notes/"))) return; /* we're happy */ else if (!prefixcmp(sb->buf, "notes/")) strbuf_insert(sb, 0, "refs/", 5);
diff --git a/notes.h b/notes.h
index d8ae29d..80219ec 100644
--- a/notes.h
+++ b/notes.h@@ -317,6 +317,6 @@ void string_list_add_refs_from_colon_sep(struct string_list *list, const char *globs); /* Expand inplace a note ref like "foo" or "notes/foo" into "refs/notes/foo" */ -void expand_notes_ref(struct strbuf *sb); +void expand_notes_ref(struct strbuf *sb, int allow_remotes); #endif
diff --git a/revision.c b/revision.c
index c46cfaa..b482314 100644
--- a/revision.c
+++ b/revision.c@@ -1393,7 +1393,7 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg } else strbuf_addstr(&buf, arg+8); - expand_notes_ref(&buf); + expand_notes_ref(&buf, 1); string_list_append(&revs->notes_opt.extra_notes_refs, strbuf_detach(&buf, NULL)); } else if (!strcmp(arg, "--no-notes")) {
--
1.7.5.3