{"thread":{"id":"50180","subject":"git rebase: retain original head?","startedAt":"2019-01-08T15:06:19Z","lastAt":"2019-02-28T10:10:34Z","messageCount":11,"participants":["Markus Wiederkehr","Andreas Schwab","Jacob Keller","Johannes Schindelin","Nazri Ramliy"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"366331","messageId":"CA+h-Bnuf6u=hkPBcxhMm06FbfkS+jtrozu+inqqmUY1cNkXrWQ@mail.gmail.com","threadId":"50180","inReplyTo":null,"subject":"git rebase: retain original head?","fromName":"Markus Wiederkehr","fromEmail":"markus.wiederkehr@gmail.com","sentAt":"2019-01-08T15:06:06Z","receivedAt":"2019-01-08T15:06:19Z","isPatch":false,"sender":{"key":"markus.wiederkehr@gmail.com","avatar":null},"body":"Hello,\n\nI frequently run an interactive rebase to change the order of recent\ncommits, apply fixups, etc. When merge conflicts occur I often want to\ncompare the result with the original head prior to starting the\nrebase.\n\nIn the past I used \"git diff ORIG_HEAD\". This used to work as long as\nI did not manually invoke \"git reset\" during the operation.\n\nSince git version 2.20.1 (not sure, maybe 2.20.0?) this no longer\nworks because ORIG_HEAD seems to get modified by fixup commits during\nrebase. Now I have to search through reflog to find the commit I want\nto compare the current head to.\n\nDuring the rebase operation the original head seems to get stored in\n'rebase-merge/orig-head'. Unfortunately this references gets removed\nafter the rebase operation completes.\n\nWould it be possible to retain this information? Could you set\nORIG_HEAD back to rebase-merge/orig-head after rebase completes?\nAlternatively, could something like REBASE_HEAD be added for this\npurpose?\n\nUndoing a rebase would be related to this and is a very popular\nquestion on SO [1]. Users recommend using \"git reset --hard ORIG_HEAD\"\nwhich now no longer works.\n\nRegards,\nMarkus\n\n[1] https://stackoverflow.com/questions/134882\n"},{"id":"366345","messageId":"87va2zavu1.fsf@igel.home","threadId":"50180","inReplyTo":"CA+h-Bnuf6u=hkPBcxhMm06FbfkS+jtrozu+inqqmUY1cNkXrWQ@mail.gmail.com","subject":"Re: git rebase: retain original head?","fromName":"Andreas Schwab","fromEmail":"schwab@linux-m68k.org","sentAt":"2019-01-08T17:43:50Z","receivedAt":"2019-01-08T17:43:55Z","isPatch":false,"sender":{"key":"schwab@linux-m68k.org","avatar":"https://avatars.githubusercontent.com/u/2175493?v=4"},"body":"On Jan 08 2019, Markus Wiederkehr <markus.wiederkehr@gmail.com> wrote:\n\n> During the rebase operation the original head seems to get stored in\n> 'rebase-merge/orig-head'. Unfortunately this references gets removed\n> after the rebase operation completes.\n>\n> Would it be possible to retain this information?\n\nYou could use the reflog of the current branch, where it is the second\nentry.\n\nAndreas.\n\n-- \nAndreas Schwab, schwab@linux-m68k.org\nGPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1\n\"And now for something completely different.\"\n"},{"id":"366363","messageId":"CA+h-BnvN7+ETU-vFxAGDvs0gvXUjAAhMkvTPUxoRTt2Gb4b2ow@mail.gmail.com","threadId":"50180","inReplyTo":"87va2zavu1.fsf@igel.home","subject":"Re: git rebase: retain original head?","fromName":"Markus Wiederkehr","fromEmail":"markus.wiederkehr@gmail.com","sentAt":"2019-01-08T20:38:21Z","receivedAt":"2019-01-08T20:38:35Z","isPatch":false,"sender":{"key":"markus.wiederkehr@gmail.com","avatar":null},"body":"On Tue, Jan 8, 2019 at 6:43 PM Andreas Schwab <schwab@linux-m68k.org> wrote:\n>\n> On Jan 08 2019, Markus Wiederkehr <markus.wiederkehr@gmail.com> wrote:\n>\n> > Would it be possible to retain this information?\n>\n> You could use the reflog of the current branch, where it is the second\n> entry.\n\nIt is not, depending on what happens in the rebase it could be any\nentry. That's why I always have to search for the right one, which is\ntedious.\n\nExample:\n\n$ git rebase -i root-tag\n... (apply one fixup)\n$ git reflog\n906caf1c (HEAD -> master) HEAD@{0}: rebase -i (finish): returning to\nrefs/heads/master\n4906caf1c (HEAD -> master) HEAD@{1}: rebase -i (pick): qux\n85dab37b4 HEAD@{2}: rebase -i (pick): baz\n7de7420d2 HEAD@{3}: rebase -i (fixup): bar\n9bc0461c0 HEAD@{4}: rebase -i (start): checkout root-tag\na150b73ca HEAD@{5}: commit: foo\n\nHere I have to use HEAD@{5}.\n\nMarkus\n\nOn Tue, Jan 8, 2019 at 6:43 PM Andreas Schwab <schwab@linux-m68k.org> wrote:\n>\n> On Jan 08 2019, Markus Wiederkehr <markus.wiederkehr@gmail.com> wrote:\n>\n> > During the rebase operation the original head seems to get stored in\n> > 'rebase-merge/orig-head'. Unfortunately this references gets removed\n> > after the rebase operation completes.\n> >\n> > Would it be possible to retain this information?\n>\n> You could use the reflog of the current branch, where it is the second\n> entry.\n>\n> Andreas.\n>\n> --\n> Andreas Schwab, schwab@linux-m68k.org\n> GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1\n> \"And now for something completely different.\"\n"},{"id":"366364","messageId":"87r2dmc1q0.fsf@igel.home","threadId":"50180","inReplyTo":"CA+h-BnvN7+ETU-vFxAGDvs0gvXUjAAhMkvTPUxoRTt2Gb4b2ow@mail.gmail.com","subject":"Re: git rebase: retain original head?","fromName":"Andreas Schwab","fromEmail":"schwab@linux-m68k.org","sentAt":"2019-01-08T20:51:19Z","receivedAt":"2019-01-08T20:51:26Z","isPatch":false,"sender":{"key":"schwab@linux-m68k.org","avatar":"https://avatars.githubusercontent.com/u/2175493?v=4"},"body":"On Jan 08 2019, Markus Wiederkehr <markus.wiederkehr@gmail.com> wrote:\n\n> On Tue, Jan 8, 2019 at 6:43 PM Andreas Schwab <schwab@linux-m68k.org> wrote:\n>>\n>> On Jan 08 2019, Markus Wiederkehr <markus.wiederkehr@gmail.com> wrote:\n>>\n>> > Would it be possible to retain this information?\n>>\n>> You could use the reflog of the current branch, where it is the second\n>> entry.\n>\n> It is not, depending on what happens in the rebase it could be any\n> entry.\n\nDon't look at the HEAD reflog, use the branch reflog, ie. @{1}.\n\nAndreas.\n\n-- \nAndreas Schwab, schwab@linux-m68k.org\nGPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1\n\"And now for something completely different.\"\n"},{"id":"366368","messageId":"CA+P7+xq++4W32JT9WcasXn=Oj9W-U1eteFgpLZn8GVqeO0foog@mail.gmail.com","threadId":"50180","inReplyTo":"CA+h-BnvN7+ETU-vFxAGDvs0gvXUjAAhMkvTPUxoRTt2Gb4b2ow@mail.gmail.com","subject":"Re: git rebase: retain original head?","fromName":"Jacob Keller","fromEmail":"jacob.keller@gmail.com","sentAt":"2019-01-08T21:22:45Z","receivedAt":"2019-01-08T21:23:00Z","isPatch":false,"sender":{"key":"jacob.keller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/874719?v=4"},"body":"On Tue, Jan 8, 2019 at 12:47 PM Markus Wiederkehr\n<markus.wiederkehr@gmail.com> wrote:\n>\n> On Tue, Jan 8, 2019 at 6:43 PM Andreas Schwab <schwab@linux-m68k.org> wrote:\n> >\n> > On Jan 08 2019, Markus Wiederkehr <markus.wiederkehr@gmail.com> wrote:\n> >\n> > > Would it be possible to retain this information?\n> >\n> > You could use the reflog of the current branch, where it is the second\n> > entry.\n>\n> It is not, depending on what happens in the rebase it could be any\n> entry. That's why I always have to search for the right one, which is\n> tedious.\n>\n> Example:\n>\n> $ git rebase -i root-tag\n> ... (apply one fixup)\n> $ git reflog\n> 906caf1c (HEAD -> master) HEAD@{0}: rebase -i (finish): returning to\n> refs/heads/master\n> 4906caf1c (HEAD -> master) HEAD@{1}: rebase -i (pick): qux\n> 85dab37b4 HEAD@{2}: rebase -i (pick): baz\n> 7de7420d2 HEAD@{3}: rebase -i (fixup): bar\n> 9bc0461c0 HEAD@{4}: rebase -i (start): checkout root-tag\n> a150b73ca HEAD@{5}: commit: foo\n>\n> Here I have to use HEAD@{5}.\n>\n\nHe meant using:\n\n$ git reflog master\n\nwhich only shows changes directly to the master ref, not to HEAD.\nDuring a git rebase operations don't modify the master ref until after\nthe rebase finishes. This, of course, assumes you're on a branch.\n\nIf so, you should even be able to use master@{1} and be safe in\nassuming it always refers to what the branch was before the rebase\nstarted.\n\nThanks,\nJake\n"},{"id":"366412","messageId":"CA+h-Bnu4mq9FZ7dBnCpKfaYeSQM-JTqNO6a1FBKyBSNQ3sR71w@mail.gmail.com","threadId":"50180","inReplyTo":"87r2dmc1q0.fsf@igel.home","subject":"Re: git rebase: retain original head?","fromName":"Markus Wiederkehr","fromEmail":"markus.wiederkehr@gmail.com","sentAt":"2019-01-09T13:48:19Z","receivedAt":"2019-01-09T13:48:33Z","isPatch":false,"sender":{"key":"markus.wiederkehr@gmail.com","avatar":null},"body":"On Tue, Jan 8, 2019 at 10:29 PM Andreas Schwab <schwab@linux-m68k.org> wrote:\n>\n> On Jan 08 2019, Markus Wiederkehr <markus.wiederkehr@gmail.com> wrote:\n>\n> > It is not, depending on what happens in the rebase it could be any\n> > entry.\n>\n> Don't look at the HEAD reflog, use the branch reflog, ie. @{1}.\n\nThat's exactly what I was looking for, thanks!\n"},{"id":"366413","messageId":"nycvar.QRO.7.76.6.1901091501320.41@tvgsbejvaqbjf.bet","threadId":"50180","inReplyTo":"CA+P7+xq++4W32JT9WcasXn=Oj9W-U1eteFgpLZn8GVqeO0foog@mail.gmail.com","subject":"Re: git rebase: retain original head?","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2019-01-09T14:05:38Z","receivedAt":"2019-01-09T14:05:57Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Jake,\n\nOn Tue, 8 Jan 2019, Jacob Keller wrote:\n\n> On Tue, Jan 8, 2019 at 12:47 PM Markus Wiederkehr\n> <markus.wiederkehr@gmail.com> wrote:\n> >\n> > On Tue, Jan 8, 2019 at 6:43 PM Andreas Schwab <schwab@linux-m68k.org> wrote:\n> > >\n> > > On Jan 08 2019, Markus Wiederkehr <markus.wiederkehr@gmail.com> wrote:\n> > >\n> > > > Would it be possible to retain this information?\n> > >\n> > > You could use the reflog of the current branch, where it is the second\n> > > entry.\n> >\n> > It is not, depending on what happens in the rebase it could be any\n> > entry. That's why I always have to search for the right one, which is\n> > tedious.\n> >\n> > Example:\n> >\n> > $ git rebase -i root-tag\n> > ... (apply one fixup)\n> > $ git reflog\n> > 906caf1c (HEAD -> master) HEAD@{0}: rebase -i (finish): returning to\n> > refs/heads/master\n> > 4906caf1c (HEAD -> master) HEAD@{1}: rebase -i (pick): qux\n> > 85dab37b4 HEAD@{2}: rebase -i (pick): baz\n> > 7de7420d2 HEAD@{3}: rebase -i (fixup): bar\n> > 9bc0461c0 HEAD@{4}: rebase -i (start): checkout root-tag\n> > a150b73ca HEAD@{5}: commit: foo\n> >\n> > Here I have to use HEAD@{5}.\n> >\n> \n> He meant using:\n> \n> $ git reflog master\n\nIndeed. That's why terse answers are often worse than no answers at all:\nmore often than not, they leave things unclearer than before, in the worst\ncase they are misleading, as was the very terse first reply. Just don't.\nToo short is not beautiful.\n\n> which only shows changes directly to the master ref, not to HEAD.\n> During a git rebase operations don't modify the master ref until after\n> the rebase finishes. This, of course, assumes you're on a branch.\n> \n> If so, you should even be able to use master@{1} and be safe in\n> assuming it always refers to what the branch was before the rebase\n> started.\n\nThere are more tricks up Git's sleeves: @{1} is a shorthand for the\nprevious state of the current branch (if any). So after you rebase a\nbranch, @{1} will refer to what previously was ORIG_HEAD.\n\nHaving said that, it is an unintended regression in the built-in rebase.\nMarkus, could you come up with a minimal test case, preferably in the form\nof a patch to t/t3415-rebase-autosquash.sh?\n\nThanks,\nJohannes\n"},{"id":"366414","messageId":"CA+h-Bnvp3mrXBqqY+mdD36feOkx1EhnnQtDXrmPhyW4KzKb_3w@mail.gmail.com","threadId":"50180","inReplyTo":"nycvar.QRO.7.76.6.1901091501320.41@tvgsbejvaqbjf.bet","subject":"Re: git rebase: retain original head?","fromName":"Markus Wiederkehr","fromEmail":"markus.wiederkehr@gmail.com","sentAt":"2019-01-09T15:08:52Z","receivedAt":"2019-01-09T15:09:06Z","isPatch":false,"sender":{"key":"markus.wiederkehr@gmail.com","avatar":null},"body":"On Wed, Jan 9, 2019 at 3:05 PM Johannes Schindelin\n<Johannes.Schindelin@gmx.de> wrote:\n>\n> Having said that, it is an unintended regression in the built-in rebase.\n> Markus, could you come up with a minimal test case, preferably in the form\n> of a patch to t/t3415-rebase-autosquash.sh?\n\nI don't think I'm familiar enough with the test code to be able to\nprovide a good patch but the following code should illustrate the\nregression.\n\ngit init testrepo\ncd testrepo\necho 1 > file && git add file && git commit -m \"initial\"\necho 1 >> file && git commit -am \"commit 1\"\n# rev_commit_1=$(git rev-parse HEAD)\necho 1 >> file && git commit -am \"fixup! $(git rev-parse --short HEAD)\"\necho 1 >> file && git commit -am \"commit 3\"\nrev_orig_head=$(git rev-parse HEAD)\nGIT_EDITOR=: git rebase --autosquash -i HEAD~3\ntest $(git rev-parse ORIG_HEAD) = $rev_orig_head\n\nIn older versions of git this test succeeded, i.e. ORIG_HEAD pointed\nto the previous original head, $rev_orig_head. In git version 2.20.1\nORIG_HEAD now points to the commit that got fixuped instead,\n$rev_commit_1.\n\nIn previous versions ORIG_HEAD only pointed somewhere else if \"git\nreset\" was invoked manually during the rebase operation. I'm not sure\nif this is desirable, maybe ORIG_HEAD should always point to the\nprevious head after rebase completes, no matter what operations were\nrun in between. What do you think?\n\nMarkus\n"},{"id":"366555","messageId":"nycvar.QRO.7.76.6.1901111138530.41@tvgsbejvaqbjf.bet","threadId":"50180","inReplyTo":"CA+h-Bnvp3mrXBqqY+mdD36feOkx1EhnnQtDXrmPhyW4KzKb_3w@mail.gmail.com","subject":"Re: git rebase: retain original head?","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2019-01-11T10:42:08Z","receivedAt":"2019-01-11T10:42:28Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Markus,\n\nOn Wed, 9 Jan 2019, Markus Wiederkehr wrote:\n\n> On Wed, Jan 9, 2019 at 3:05 PM Johannes Schindelin\n> <Johannes.Schindelin@gmx.de> wrote:\n> >\n> > Having said that, it is an unintended regression in the built-in rebase.\n> > Markus, could you come up with a minimal test case, preferably in the form\n> > of a patch to t/t3415-rebase-autosquash.sh?\n> \n> I don't think I'm familiar enough with the test code to be able to\n> provide a good patch but the following code should illustrate the\n> regression.\n\nI think that you think you're too unfamiliar with the test code only\nbecause you have not had a look.\n\n> git init testrepo\n> cd testrepo\n> echo 1 > file && git add file && git commit -m \"initial\"\n\ntest_commit initial\n\n> echo 1 >> file && git commit -am \"commit 1\"\n\ntest_commit 1 initial.t\n\n> # rev_commit_1=$(git rev-parse HEAD)\n> echo 1 >> file && git commit -am \"fixup! $(git rev-parse --short HEAD)\"\n\ntest_commit \"fixup! 1\" initial.t\n\n> echo 1 >> file && git commit -am \"commit 3\"\n\ntest_commit 3 initial.t\n\n> rev_orig_head=$(git rev-parse HEAD)\n> GIT_EDITOR=: git rebase --autosquash -i HEAD~3\n> test $(git rev-parse ORIG_HEAD) = $rev_orig_head\n\ntest_cmp_rev $rev_orig_head ORIG_HEAD\n\nI leave it to you to make the actual patch.\n\nCiao,\nJohannes\n\n> \n> In older versions of git this test succeeded, i.e. ORIG_HEAD pointed\n> to the previous original head, $rev_orig_head. In git version 2.20.1\n> ORIG_HEAD now points to the commit that got fixuped instead,\n> $rev_commit_1.\n> \n> In previous versions ORIG_HEAD only pointed somewhere else if \"git\n> reset\" was invoked manually during the rebase operation. I'm not sure\n> if this is desirable, maybe ORIG_HEAD should always point to the\n> previous head after rebase completes, no matter what operations were\n> run in between. What do you think?\n> \n> Markus\n> \n"},{"id":"370287","messageId":"CAEY4ZpPQxCVY5dZ_K9NRqF=YB0=s1nnJhnuDzL+ZytJ5uO2N7g@mail.gmail.com","threadId":"50180","inReplyTo":"nycvar.QRO.7.76.6.1901091501320.41@tvgsbejvaqbjf.bet","subject":"Re: git rebase: retain original head?","fromName":"Nazri Ramliy","fromEmail":"ayiehere@gmail.com","sentAt":"2019-02-27T05:45:43Z","receivedAt":"2019-02-27T05:45:57Z","isPatch":false,"sender":{"key":"ayiehere@gmail.com","avatar":"https://avatars.githubusercontent.com/u/164756?v=4"},"body":"On Wed, Jan 9, 2019 at 10:08 PM Johannes Schindelin\n<Johannes.Schindelin@gmx.de> wrote:\n> Having said that, it is an unintended regression in the built-in rebase.\n> Markus, could you come up with a minimal test case, preferably in the form\n> of a patch to t/t3415-rebase-autosquash.sh?\n\nSomething like this, perhaps? (\"gmail converts tabs to spaces\" caveat\napplies to the diff formatting):\n\n--8<--\ndiff --git t/t3400-rebase.sh t/t3400-rebase.sh\nindex 3e73f7584c..cb55597a8b 100755\n--- t/t3400-rebase.sh\n+++ t/t3400-rebase.sh\n@@ -59,6 +59,13 @@ test_expect_success 'rebase against master' '\n  git rebase master\n '\n\n+test_expect_success 'rebase sets ORIG_HEAD' '\n+ echo Add B. > expect &&\n+ echo Modify A. >> expect &&\n+ git log --oneline --format=%s ORIG_HEAD.. > actual &&\n+ test_cmp expect actual\n+'\n+\n test_expect_success 'rebase, with <onto> and <upstream> specified as\n:/quuxery' '\n  test_when_finished \"git branch -D torebase\" &&\n  git checkout -b torebase my-topic-branch^ &&\n-->8--\n\nBisect shows that the first bad commit is this one:\n\ncommit 21853626eac565dd42572d90724b29863f61eb3b\nAuthor: Johannes Schindelin <johannes.schindelin@gmx.de>\nDate:   Fri Jan 18 07:09:27 2019 -0800\n\n    built-in rebase: call `git am` directly\n\nI verified that by undoing the crux of that commit, and that fixes the\nfailing test:\n\n-->8--\ndiff --git builtin/rebase.c builtin/rebase.c\nindex 7c7bc13e91..848f6740a0 100644\n--- builtin/rebase.c\n+++ builtin/rebase.c\n@@ -728,11 +728,6 @@ static int run_specific_rebase(struct rebase_options *opts)\n  goto finished_rebase;\n  }\n\n- if (opts->type == REBASE_AM) {\n- status = run_am(opts);\n- goto finished_rebase;\n- }\n-\n  add_var(&script_snippet, \"GIT_DIR\", absolute_path(get_git_dir()));\n  add_var(&script_snippet, \"state_dir\", opts->state_dir);\n\n--8<--\n\nBut something seems off by my bisection in that the \"bad\" commit\nhappens about 10 days after this email thread :/\n\nnazri\n"},{"id":"370358","messageId":"nycvar.QRO.7.76.6.1902281008000.41@tvgsbejvaqbjf.bet","threadId":"50180","inReplyTo":"CAEY4ZpPQxCVY5dZ_K9NRqF=YB0=s1nnJhnuDzL+ZytJ5uO2N7g@mail.gmail.com","subject":"Re: git rebase: retain original head?","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2019-02-28T10:10:14Z","receivedAt":"2019-02-28T10:10:34Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Nazri,\n\nOn Wed, 27 Feb 2019, Nazri Ramliy wrote:\n\n> On Wed, Jan 9, 2019 at 10:08 PM Johannes Schindelin\n> <Johannes.Schindelin@gmx.de> wrote:\n\nOh wow. Better late than never, eh?\n\n> > Having said that, it is an unintended regression in the built-in\n> > rebase. Markus, could you come up with a minimal test case, preferably\n> > in the form of a patch to t/t3415-rebase-autosquash.sh?\n> \n> Something like this, perhaps? (\"gmail converts tabs to spaces\" caveat\n> applies to the diff formatting):\n> \n> --8<--\n> diff --git t/t3400-rebase.sh t/t3400-rebase.sh\n> index 3e73f7584c..cb55597a8b 100755\n> --- t/t3400-rebase.sh\n> +++ t/t3400-rebase.sh\n> @@ -59,6 +59,13 @@ test_expect_success 'rebase against master' '\n>   git rebase master\n>  '\n> \n> +test_expect_success 'rebase sets ORIG_HEAD' '\n> + echo Add B. > expect &&\n> + echo Modify A. >> expect &&\n> + git log --oneline --format=%s ORIG_HEAD.. > actual &&\n> + test_cmp expect actual\n> +'\n> +\n>  test_expect_success 'rebase, with <onto> and <upstream> specified as\n> :/quuxery' '\n>   test_when_finished \"git branch -D torebase\" &&\n>   git checkout -b torebase my-topic-branch^ &&\n> -->8--\n\nI made it a little more stand-alone, and can confirm that this is now\nsafely a regression in v2.21.0.\n\n> Bisect shows that the first bad commit is this one:\n> \n> commit 21853626eac565dd42572d90724b29863f61eb3b\n> Author: Johannes Schindelin <johannes.schindelin@gmx.de>\n> Date:   Fri Jan 18 07:09:27 2019 -0800\n> \n>     built-in rebase: call `git am` directly\n> \n> I verified that by undoing the crux of that commit, and that fixes the\n> failing test:\n> \n> -->8--\n> diff --git builtin/rebase.c builtin/rebase.c\n> index 7c7bc13e91..848f6740a0 100644\n> --- builtin/rebase.c\n> +++ builtin/rebase.c\n> @@ -728,11 +728,6 @@ static int run_specific_rebase(struct rebase_options *opts)\n>   goto finished_rebase;\n>   }\n> \n> - if (opts->type == REBASE_AM) {\n> - status = run_am(opts);\n> - goto finished_rebase;\n> - }\n> -\n>   add_var(&script_snippet, \"GIT_DIR\", absolute_path(get_git_dir()));\n>   add_var(&script_snippet, \"state_dir\", opts->state_dir);\n> \n> --8<--\n> \n> But something seems off by my bisection in that the \"bad\" commit\n> happens about 10 days after this email thread :/\n\nYep, I had fixed the issue before this commit, and a regression test would\nhave come in handy to prevent that regression from creeping in *again*.\n\nAnyway, I'm on it.\nJohannes\n\nP.S.: If you want to follow my progress, I'll push updates to the\nrebase-am-and-orig-head branch at https://github.com/dscho/git.\n"}]}