Re: [PATCH 2/4] rebase: avoid double reflog entry when switching branches
From: Junio C Hamano <hidden>
Date: 2019-01-04 18:38:58
"Johannes Schindelin via GitGitGadget" [off-list ref] writes:
From: Johannes Schindelin <redacted> When switching a branch *and* updating said branch to a different revision, let's avoid a double entry by first updating the branch and then adjusting the symbolic ref HEAD.
Ah, in the original sequence, HEAD is updated twice, leaving two reflog entries for HEAD (and one for the underlying "switch_to" branch by virtue of REF_UPDATE_VIA_HEAD). In the new sequence, update_ref() updates the underlying "switch_to" and then HEAD, so we'd get one reflog entry for each of them. Makes sense. s/let's avoid a double entry/& in HEAD's reflog/ would have avoided wasting reader's time who needlessly wondered where that redundancy came from, though.
quoted hunk ↗ jump to hunk
Signed-off-by: Johannes Schindelin <redacted> --- builtin/rebase.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)diff --git a/builtin/rebase.c b/builtin/rebase.c index e1dfa74ca8..768bea0da8 100644 --- a/builtin/rebase.c +++ b/builtin/rebase.c@@ -438,10 +438,11 @@ static int reset_head(struct object_id *oid, const char *action, detach_head ? REF_NO_DEREF : 0, UPDATE_REFS_MSG_ON_ERR); else { - ret = create_symref("HEAD", switch_to_branch, msg.buf); + ret = update_ref(reflog_orig_head, switch_to_branch, oid, + NULL, 0, UPDATE_REFS_MSG_ON_ERR); if (!ret) - ret = update_ref(reflog_head, "HEAD", oid, NULL, 0, - UPDATE_REFS_MSG_ON_ERR); + ret = create_symref("HEAD", switch_to_branch, + reflog_head); } leave_reset_head: