diff options
author | Junio C Hamano <gitster@pobox.com> | 2021-12-21 15:03:16 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-12-21 15:03:16 -0800 |
commit | 13fa77b6899d0068303761c449d9a7e01dd85eb8 (patch) | |
tree | b15e735aa90f701444aaa66ab080695f10a85549 /builtin/notes.c | |
parent | ee1dc493d10d814ceba1a551d9a185b9da627ad8 (diff) | |
parent | 593a2a5d0639b4b4f91ff6e6ffb64e72020f8fd8 (diff) | |
download | git-13fa77b6899d0068303761c449d9a7e01dd85eb8.tar.gz |
Merge branch 'ak/protect-any-current-branch'
"git fetch" without the "--update-head-ok" option ought to protect
a checked out branch from getting updated, to prevent the working
tree that checks it out to go out of sync. The code was written
before the use of "git worktree" got widespread, and only checked
the branch that was checked out in the current worktree, which has
been updated.
(originally called ak/fetch-not-overwrite-any-current-branch)
* ak/protect-any-current-branch:
branch: protect branches checked out in all worktrees
receive-pack: protect current branch for bare repository worktree
receive-pack: clean dead code from update_worktree()
fetch: protect branches checked out in all worktrees
worktree: simplify find_shared_symref() memory ownership model
branch: lowercase error messages
receive-pack: lowercase error messages
fetch: lowercase error messages
Diffstat (limited to 'builtin/notes.c')
-rw-r--r-- | builtin/notes.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/builtin/notes.c b/builtin/notes.c index 85d1abad88..118db9e455 100644 --- a/builtin/notes.c +++ b/builtin/notes.c @@ -860,15 +860,19 @@ static int merge(int argc, const char **argv, const char *prefix) update_ref(msg.buf, default_notes_ref(), &result_oid, NULL, 0, UPDATE_REFS_DIE_ON_ERR); else { /* Merge has unresolved conflicts */ + struct worktree **worktrees; const struct worktree *wt; /* Update .git/NOTES_MERGE_PARTIAL with partial merge result */ update_ref(msg.buf, "NOTES_MERGE_PARTIAL", &result_oid, NULL, 0, UPDATE_REFS_DIE_ON_ERR); /* Store ref-to-be-updated into .git/NOTES_MERGE_REF */ - wt = find_shared_symref("NOTES_MERGE_REF", default_notes_ref()); + worktrees = get_worktrees(); + wt = find_shared_symref(worktrees, "NOTES_MERGE_REF", + default_notes_ref()); if (wt) die(_("a notes merge into %s is already in-progress at %s"), default_notes_ref(), wt->path); + free_worktrees(worktrees); if (create_symref("NOTES_MERGE_REF", default_notes_ref(), NULL)) die(_("failed to store link to current notes ref (%s)"), default_notes_ref()); |