git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Tilman Vogel <tilman.vogel@web.de>
To: unlisted-recipients:; (no To-header on input)
Cc: git@vger.kernel.org
Subject: Re: [BUG] git pull --rebase ignores rebase.autostash config when fast-forwarding
Date: Tue, 4 Jan 2022 22:03:38 +0100	[thread overview]
Message-ID: <CAAbQbbCtFnbfTHnMdY_xi1CN4NyppShZdVhgO73YMubgDjwB-A@mail.gmail.com> (raw)
In-Reply-To: <cb8d6e8a-aaca-c2eb-6cc8-5c4ad33adfdb@gmail.com>

Oh, please excuse my lack of providing the version info: I discovered
the behaviour on 2.34.1 as shipped by current openSUSE Tumbleweed.
Then, I worked on-top of current git master (2ae0a9cb).

Regards and thanks for investigating and fixing this so quickly!

Tilman


Am Di., 4. Jan. 2022 um 19:03 Uhr schrieb Philippe Blain
<levraiphilippeblain@gmail.com>:
>
> Hi Tilman,
>
> Le 2022-01-04 à 07:59, Philip Oakley a écrit :
> > On 03/01/2022 18:08, Tilman Vogel wrote:
> >> Hi git-people,
> >>
> >> I ran into strange behavior when having rebase.autostash enabled and
> >> doing a git pull --rebase:
> >>
> >>> git config rebase.autostash true
> >>> git pull --rebase
> >> Updating cd9ff8a..f3c9840
> >> error: Your local changes to the following files would be overwritten by
> >> merge:
> >>          content
> >> Please commit your changes or stash them before you merge.
> >> Aborting
> >>
> >> Confusingly, this fixes the issue:
> >>
> >>> git config merge.autostash true
> >>> git pull --rebase
> >> Updating cd9ff8a..f3c9840
> >> Created autostash: c615fda
> >> Fast-forward
> >>   content | 1 +
> >>   1 file changed, 1 insertion(+)
> >> Applied autostash.
> >>
> >> Leaving me wonder why merge config options fix rebase behavior.
> >>
> >> So, in order to make it easier to check the problem, I added some
> >> test-cases to the git test-suite. Please see the attached patch.
>
> Thanks, this really makes it easier to bisect the issue.
>
> >>
> >> Or here:
> >> https://github.com/tvogel/git/commit/bc941f9357518a34cfa11788dfb8e7fa7f711705
> >>
> >> I did not try to find the root-cause as I am not experienced with the
> >> code-base but if there are questions, let me know.
> >
> > Which version are you running?
> >
>
> That's a good info to include indeed. I'm guessing you are using v2.34.1 as that's the version
> indicated at the bottom of your attached patch. I can replicate the behaviour on my side on 2.34.1.
> I did not bisect manually but I'm pretty sure it's a regression caused by 340062243a (pull: cleanup autostash
> check, 2021-06-17) (author CC'ed). I checked that the parent of that commit passes all 4 of your added tests, provided
> this is squashed in:
>
> diff --git a/t/t5521-pull-options.sh b/t/t5521-pull-options.sh
> index 4046a74cad..5ad19b1028 100755
> --- a/t/t5521-pull-options.sh
> +++ b/t/t5521-pull-options.sh
> @@ -260,7 +260,6 @@ test_expect_success 'git pull --rebase --autostash succeeds on ff' '
>         test_commit -C src --printf "more_content" file "more content\ncontent\n" &&
>         echo "dirty" >>dst/file &&
>         git -C dst pull --rebase --autostash >actual 2>&1 &&
> -       grep -q "Fast-forward" actual &&
>         grep -q "Applied autostash." actual
>   '
>
> @@ -273,7 +272,6 @@ test_expect_success 'git pull --rebase with rebase.autostash succeeds on ff' '
>         echo "dirty" >>dst/file &&
>         test_config -C dst rebase.autostash true &&
>         git -C dst pull --rebase  >actual 2>&1 &&
> -       grep -q "Fast-forward" actual &&
>         grep -q "Applied autostash." actual
>   '
>
> After that commit, in case of fast-forward, 'git pull --rebase --autostash' delegates the fast-forward
> operation to 'git merge' under the hood, which was not the case before. The '--autostash' flag seems
> to be forwarded correctly to that 'git merge' invocation, but the config 'rebase.autostash' seems to not
> be passed along.
>
> I did not yet look into why in the code itself. That does explain however why 'merge.autostash' makes it
> work - the 'git merge' invocation does check its own config, and if merge.autostash is there the autostash
> behaviour is activated.
>
> Philippe.
>
>

      parent reply	other threads:[~2022-01-04 21:03 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-03 18:08 [BUG] git pull --rebase ignores rebase.autostash config when fast-forwarding Tilman Vogel
2022-01-04 12:59 ` Philip Oakley
2022-01-04 18:03   ` Philippe Blain
2022-01-04 18:29     ` Philippe Blain
     [not found]       ` <BB019E6A-90ED-4D5A-A756-FA8700897DE7@gmail.com>
2022-01-04 23:20         ` Philippe Blain
2022-01-04 21:03     ` Tilman Vogel [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAAbQbbCtFnbfTHnMdY_xi1CN4NyppShZdVhgO73YMubgDjwB-A@mail.gmail.com \
    --to=tilman.vogel@web.de \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).