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
This commit is contained in:
@ -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());
|
||||
|
||||
Reference in New Issue
Block a user