From: Jacob Keller <jacob.keller@xxxxxxxxx> The documentation for --refs says that it will treat unqualified refs as under refs/notes. Current behavior is to prefix refs/notes to all strings that do not start with refs/notes or notes/, resulting in performing actions on refs such as "refs/notes/refs/foo/bar" instead of attempting to perform actions on "refs/foo/bar". A future patch will introduce the idea of performing non-writable actions to refs outside of refs/notes. Change the behavior of expand_notes_ref to leave qualified refs under refs/* alone. In addition, fix git notes merge <ref> to prevent merges from refs which are not under refs/notes, in a similar way to how we already check note refs in init_notes_check. This is required in order to keep current tests passing without change. A future patch will change the behavior of git notes merge so that it can merge from a ref outside of refs/notes. Signed-off-by: Jacob Keller <jacob.keller@xxxxxxxxx> --- builtin/notes.c | 4 ++++ notes.c | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/builtin/notes.c b/builtin/notes.c index 6371d536d164..0f55d38983f0 100644 --- a/builtin/notes.c +++ b/builtin/notes.c @@ -810,6 +810,10 @@ 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); + if (!starts_with(remote_ref.buf, "refs/notes")) + die("Refusing to merge notes from %s (outside of refs/notes/)", + remote_ref.buf); + o.remote_ref = remote_ref.buf; t = init_notes_check("merge", NOTES_INIT_WRITABLE); diff --git a/notes.c b/notes.c index 6ef347ca3ac4..d49168fb3f01 100644 --- a/notes.c +++ b/notes.c @@ -1296,8 +1296,8 @@ int copy_note(struct notes_tree *t, void expand_notes_ref(struct strbuf *sb) { - if (starts_with(sb->buf, "refs/notes/")) - return; /* we're happy */ + if (starts_with(sb->buf, "refs/")) + return; /* fully qualified, so we're happy */ else if (starts_with(sb->buf, "notes/")) strbuf_insert(sb, 0, "refs/", 5); else -- 2.6.0.rc2.248.g5b5be23 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html