git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v4 1/1] rebase.c: make sure the active branch isn't moved when autostashing

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 28, 2019, 16:03 UTC
Message-ID
<xmqq8srd1dld.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<xmqqh8611eza.fsf@gitster-ct.c.googlers.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 7 quoted lines
> IIUC, the bug is twofold:
> ...
>  - A message is given only when the above happens.  When rebasing
> ...
>    That "reset --hard" is done only to clean the index and the
>    working tree and talking about "HEAD is now..." is a bug in its
>    context.
Actually, this "latter" bug can further be split into two
 * The "HEAD is now" is given only when autostash feature needs to
   clean the working tree, and we have never moved HEAD anyway.
 * The message does not indicate what we are rebuilding on top of.

and dealt with separately, so with that in mind the step that would follow the first patch, i.e.

Show 5 quoted lines
> ... update
> this patch to add logic to give a pointless and misleading "HEAD is
> now at..." message so that we will report the location of HEAD where
> the "rebase --autostash" command started at, to fix only the first
> bug.

may become different. The fact that the "HEAD is now..." is given only when autostash actually happens _might_ be taken as a feature by some users---the location of HEAD reported by the message is irrelevant to them (we know that as a fact---we have been reporting a wrong commit all along anyway), but the single-bit "we got a message" is a signal that "--autostash" had something valuable to save.

So the second step may be to replace the "HEAD is now..." message we add back (relative to Ben's patch under discussion) to the first patch with a more direct "stashed away your local changes" message (perhaps with diffstat??? I do not care about the details, as we are talking about resurrecting one single useful bit of information and extending it futher is beyond the scope of this analysis).

And the last point, i.e. "First, rewinding head to replay your work..." does not give enough information to be truly useful, is a totally separate bug (that Ben's patch does not even mention or attempt to address), so we can leave it out of this analysis, too.

So, yeah, if we are to spend extra effort to polish Ben's patch further while keeping the "fix things without making unnecessary changes", I think the approach that takes least amount of effort may not to make the code manually say "Head is at ...", but to add a new message to report that autostash happened. That fixes two bugs (i.e. the original bug, and the "we autostashed" bit is reported in a roundabout and misleading way via "HEAD is now at ...") in a single patch ;-)

Previous: Junio C HamanoNext: Ben Wijen
Message 18 of 38 in “git rebase: Make sure upstream branch is left alone.”
  1. 0/2 git rebase: Make sure upstream branch is left alone.Ben Wijen, Aug 18, 2019
  2. 2/2 rebase.c: make sure current branch isn't moved when autostashingBen Wijen, Aug 18, 2019
  3. Phillip WoodAug 20, 2019
  4. BenAug 20, 2019
  5. 0/1 git rebase: Make sure upstream branch is left alone.Ben Wijen, Aug 20, 2019
  6. 1/1 rebase.c: make sure current branch isn't moved when autostashingBen Wijen, Aug 20, 2019
  7. Eric SunshineAug 20, 2019
  8. Junio C HamanoAug 20, 2019
  9. 0/1 rebase.c: make sure the active branch isn't moved when autostashingBen Wijen, Aug 21, 2019
  10. 1/1 rebase.c: make sure the active branch isn't moved when autostashingBen Wijen, Aug 21, 2019
  11. Johannes SchindelinAug 22, 2019
  12. Junio C HamanoAug 22, 2019
  13. 1/1 rebase.c: make sure the active branch isn't moved when autostashingBen Wijen, Aug 26, 2019
  14. 1/1 rebase.c: make sure the active branch isn't moved when autostashingBen Wijen, Aug 26, 2019
  15. SZEDER GáborAug 26, 2019
  16. Johannes SchindelinAug 28, 2019
  17. Junio C HamanoAug 28, 2019
  18. Junio C HamanoAug 28, 2019
  19. 0/2 rebase.c: make sure current branch isn't moved when autostashingBen Wijen, Aug 29, 2019
  20. 1/2 builtin/rebase.c: make sure the active branch isn't moved when autostashingBen Wijen, Aug 29, 2019
  21. 2/2 builtin/rebase.c: Remove pointless messageBen Wijen, Aug 29, 2019
  22. 0/2 rebase.c: make sure current branch isn't moved when autostashingBen Wijen, Aug 30, 2019
  23. 1/2 builtin/rebase.c: make sure the active branch isn't moved when autostashingBen Wijen, Aug 30, 2019
  24. Junio C HamanoAug 30, 2019
  25. BenAug 31, 2019
  26. Junio C HamanoSep 1, 2019
  27. BenSep 1, 2019
  28. Junio C HamanoSep 2, 2019
  29. 2/2 builtin/rebase.c: Remove pointless messageBen Wijen, Aug 30, 2019
  30. 2/2 builtin/rebase.c: Remove pointless messageBen Wijen, Aug 30, 2019
  31. Junio C HamanoAug 30, 2019
  32. BenAug 31, 2019
  33. 1/2 t3420: never change upstream branchBen Wijen, Aug 18, 2019
  34. Junio C HamanoAug 19, 2019
  35. Phillip WoodAug 20, 2019
  36. Phillip WoodAug 19, 2019
  37. BenAug 19, 2019
  38. Junio C HamanoAug 19, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.