diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-08-25 14:57:08 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-08-25 14:57:08 -0700 |
commit | 32561f5dd39da3ac720f6778bc2e8aafed771eb5 (patch) | |
tree | c066f6a534665f2db781e6223544f9bbd31fe99c /builtin/notes.c | |
parent | 5d5be8167db3bcaf9836cac7fdd785c564484e06 (diff) | |
parent | b02e8595e263e284e45a6262b92ef158b6966478 (diff) | |
download | git-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.c | 6 |
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()); |