worktree.c: make find_shared_symref() return struct worktree *

This gives the caller more information and they can answer things like,
"is it the main worktree" or "is it the current worktree". The latter
question is needed for the "checkout a rebase branch" case later.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Nguyễn Thái Ngọc Duy
2016-04-22 20:01:27 +07:00
committed by Junio C Hamano
parent 69dfe3b942
commit d3b9ac07eb
5 changed files with 28 additions and 23 deletions

View File

@ -847,15 +847,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;
const struct worktree *wt;
/* 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)
wt = find_shared_symref("NOTES_MERGE_REF", default_notes_ref());
if (wt)
die(_("A notes merge into %s is already in-progress at %s"),
default_notes_ref(), existing);
default_notes_ref(), wt->path);
if (create_symref("NOTES_MERGE_REF", default_notes_ref(), NULL))
die("Failed to store link to current notes ref (%s)",
default_notes_ref());