summaryrefslogtreecommitdiff
path: root/builtin/notes.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-08-25 14:57:08 -0700
committerJunio C Hamano <gitster@pobox.com>2015-08-25 14:57:08 -0700
commit32561f5dd39da3ac720f6778bc2e8aafed771eb5 (patch)
treec066f6a534665f2db781e6223544f9bbd31fe99c /builtin/notes.c
parent5d5be8167db3bcaf9836cac7fdd785c564484e06 (diff)
parentb02e8595e263e284e45a6262b92ef158b6966478 (diff)
downloadgit-32561f5dd39da3ac720f6778bc2e8aafed771eb5.tar.gz
Merge branch 'dt/notes-multiple'
When linked worktree is used, simultaneous "notes merge" instances for the same ref in refs/notes/* are prevented from stomping on each other. * dt/notes-multiple: notes: handle multiple worktrees worktrees: add find_shared_symref
Diffstat (limited to 'builtin/notes.c')
-rw-r--r--builtin/notes.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/builtin/notes.c b/builtin/notes.c
index 63f95fc554..0423480827 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -19,6 +19,7 @@
#include "string-list.h"
#include "notes-merge.h"
#include "notes-utils.h"
+#include "branch.h"
static const char * const git_notes_usage[] = {
N_("git notes [--ref <notes-ref>] [list [<object>]]"),
@@ -825,10 +826,15 @@ static int merge(int argc, const char **argv, const char *prefix)
update_ref(msg.buf, default_notes_ref(), result_sha1, NULL,
0, UPDATE_REFS_DIE_ON_ERR);
else { /* Merge has unresolved conflicts */
+ char *existing;
/* Update .git/NOTES_MERGE_PARTIAL with partial merge result */
update_ref(msg.buf, "NOTES_MERGE_PARTIAL", result_sha1, NULL,
0, UPDATE_REFS_DIE_ON_ERR);
/* Store ref-to-be-updated into .git/NOTES_MERGE_REF */
+ existing = find_shared_symref("NOTES_MERGE_REF", default_notes_ref());
+ if (existing)
+ die(_("A notes merge into %s is already in-progress at %s"),
+ default_notes_ref(), existing);
if (create_symref("NOTES_MERGE_REF", default_notes_ref(), NULL))
die("Failed to store link to current notes ref (%s)",
default_notes_ref());