Hi Junio, On Fri, 4 Jan 2019, Junio C Hamano wrote: > "Johannes Schindelin via GitGitGadget" <gitgitgadget@xxxxxxxxx> > writes: > > > From: Johannes Schindelin <johannes.schindelin@xxxxxx> > > > > 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. Will fix the commit message. Thanks! Dscho > > > > > Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> > > --- > > 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: >