Re: git rebase: retain original head?
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Jan 11, 2019, 10:42 UTC
- Message-ID
- <nycvar.QRO.7.76.6.1901111138530.41@tvgsbejvaqbjf.bet>
- In-Reply-To
- <CA+h-Bnvp3mrXBqqY+mdD36feOkx1EhnnQtDXrmPhyW4KzKb_3w@mail.gmail.com>
Hi Markus,
On Wed, 9 Jan 2019, Markus Wiederkehr wrote:
Show 10 quoted lines
> On Wed, Jan 9, 2019 at 3:05 PM Johannes Schindelin > <Johannes.Schindelin@gmx.de> wrote: > > > > Having said that, it is an unintended regression in the built-in rebase. > > Markus, could you come up with a minimal test case, preferably in the form > > of a patch to t/t3415-rebase-autosquash.sh? > > I don't think I'm familiar enough with the test code to be able to > provide a good patch but the following code should illustrate the > regression.
I think that you think you're too unfamiliar with the test code only because you have not had a look.
> git init testrepo > cd testrepo > echo 1 > file && git add file && git commit -m "initial"
test_commit initial
> echo 1 >> file && git commit -am "commit 1"
test_commit 1 initial.t
> # rev_commit_1=$(git rev-parse HEAD) > echo 1 >> file && git commit -am "fixup! $(git rev-parse --short HEAD)"
test_commit "fixup! 1" initial.t
> echo 1 >> file && git commit -am "commit 3"
test_commit 3 initial.t
> rev_orig_head=$(git rev-parse HEAD) > GIT_EDITOR=: git rebase --autosquash -i HEAD~3 > test $(git rev-parse ORIG_HEAD) = $rev_orig_head
test_cmp_rev $rev_orig_head ORIG_HEAD
I leave it to you to make the actual patch.
Ciao, Johannes
Show 14 quoted lines
> > In older versions of git this test succeeded, i.e. ORIG_HEAD pointed > to the previous original head, $rev_orig_head. In git version 2.20.1 > ORIG_HEAD now points to the commit that got fixuped instead, > $rev_commit_1. > > In previous versions ORIG_HEAD only pointed somewhere else if "git > reset" was invoked manually during the rebase operation. I'm not sure > if this is desirable, maybe ORIG_HEAD should always point to the > previous head after rebase completes, no matter what operations were > run in between. What do you think? > > Markus >