summaryrefslogtreecommitdiff
path: root/notes.c
diff options
context:
space:
mode:
authorJacob Keller <jacob.keller@gmail.com>2015-12-29 14:40:28 -0800
committerJunio C Hamano <gitster@pobox.com>2016-01-17 13:59:01 -0800
commitb3715b75226668e26f1f2abe7e2f93cdbbf6e2f5 (patch)
treeb0d30e72a4bf580210ea8fbe3531b395eb233e3b /notes.c
parent28274d02c489f4c7e68153056e9061a46f62d7a0 (diff)
downloadgit-b3715b75226668e26f1f2abe7e2f93cdbbf6e2f5.tar.gz
notes: allow merging from arbitrary referencesjk/notes-merge-from-anywhere
Create a new expansion function, expand_loose_notes_ref which will first check whether the ref can be found using get_sha1. If it can't be found then it will fallback to using expand_notes_ref. The content of the strbuf will not be changed if the notes ref can be located using get_sha1. Otherwise, it may be updated as done by expand_notes_ref. Since we now support merging from non-notes refs, remove the test case associated with that behavior. Add a test case for merging from a non-notes ref. Signed-off-by: Jacob Keller <jacob.keller@gmail.com> Reviewed-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'notes.c')
-rw-r--r--notes.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/notes.c b/notes.c
index db77922130..086cc483e5 100644
--- a/notes.c
+++ b/notes.c
@@ -1303,3 +1303,13 @@ void expand_notes_ref(struct strbuf *sb)
else
strbuf_insert(sb, 0, "refs/notes/", 11);
}
+
+void expand_loose_notes_ref(struct strbuf *sb)
+{
+ unsigned char object[20];
+
+ if (get_sha1(sb->buf, object)) {
+ /* fallback to expand_notes_ref */
+ expand_notes_ref(sb);
+ }
+}