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

Re: [PATCH v2 1/2] pull --rebase: add --[no-]autostash flag

From
Paul Tan <pyokagan@gmail.com>
Date
Feb 28, 2016, 12:28 UTC
Message-ID
<CACRoPnT6Yc_vfrYvzKctL1dDkZCzme-4emLF0MysJq4f_H2OvQ@mail.gmail.com>
In-Reply-To
<xmqqk2lqeyzv.fsf@gitster.mtv.corp.google.com>
Hi Junio,
On Sun, Feb 28, 2016 at 3:26 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 23 quoted lines
> Mehul Jain <mehul.jain2029@gmail.com> writes:
>> @@ -835,13 +841,10 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
>>               hashclr(orig_head);
>>
>>       if (opt_rebase) {
>> -             int autostash = 0;
>> -
>>               if (is_null_sha1(orig_head) && !is_cache_unborn())
>>                       die(_("Updating an unborn branch with changes added to the index."));
>>
>> -             git_config_get_bool("rebase.autostash", &autostash);
>> -             if (!autostash)
>> +             if (!opt_autostash)
>>                       die_on_unclean_work_tree(prefix);
>
> I would have expected that
>
>  * a global opt_autostash is initialized to -1 (unspecified);
>
>  * opt_bool() would flip it to either 0 or 1 with --[no-]autostash;
>
>  * existing "rebase.autostash" configuration check inside "git pull"
>    code  gets removed;

Removing the "rebase.autostash" configuration check would bring back the problem which 53c76dc (pull: allow dirty tree when rebase.autostash enabled, 2015-07-04) fixed.

Show 19 quoted lines
>  * and the code that builds "git rebase" invocation command line
>    will do
>
>         if (opt_autostash < 0)
>                 ; /* do nothing */
>         else if (opt_autostash == 0)
>                 argv_array_push(&args, "--no-autostash");
>         else
>                 argv_array_push(&args, "--autostash");
>
> Then when "git pull --rebase" is run without "--[no-]autostash", the
> underlying "git rebase" would be run without that option, and does its
> usual thing, including reading rebase.autostash and deciding to do
> "git stash".  And when "git pull" is run with "--[no-]autostash",
> the underlying "git rebase" would be given the same option, and
> would do what it was told to do, ignoring rebase.autostash setting.
>
> So why does "git pull" still need to look at rebase.autostash
> configuration after this change?

Ultimately, git-pull needs to be aware of whether autostash is active or not (and this means rebase.autostash needs to be looked at as well) because if autostash is disabled, git-pull needs to perform the "worktree is clean" check. And this "worktree is clean" check needs to be done *before* git-fetch and git-rebase is run.

See f9189cf (pull --rebase: exit early when the working directory is dirty, 2008-05-21).

Regards, Paul

Previous: Matthieu MoyNext: Junio C Hamano
Message 6 of 44 in “pull --rebase: add --[no-]autostash flag”
  1. 1/2 pull --rebase: add --[no-]autostash flagMehul Jain, Feb 27, 2016
  2. 2/2 Documentation/git-pull.txt: teach 'git pull --rebase' the --[no-]autostash option.Mehul Jain, Feb 27, 2016
  3. Junio C HamanoFeb 27, 2016
  4. Mehul JainFeb 28, 2016
  5. Matthieu MoyFeb 28, 2016
  6. Paul TanFeb 28, 2016
  7. Junio C HamanoFeb 28, 2016
  8. 1/3 pull --rebase: add --[no-]autostash flagMehul Jain, Mar 3, 2016
  9. 2/3 test: add test for --[no-]autostash flagMehul Jain, Mar 3, 2016
  10. Matthieu MoyMar 3, 2016
  11. Mehul JainMar 4, 2016
  12. 3/3 Documentation/git-pull: document --[no-]autostash optionMehul Jain, Mar 3, 2016
  13. Junio C HamanoMar 3, 2016
  14. Mehul JainMar 4, 2016
  15. Matthieu MoyMar 4, 2016
  16. Paul TanMar 4, 2016
  17. Matthieu MoyMar 3, 2016
  18. Eric SunshineMar 4, 2016
  19. Matthieu MoyMar 4, 2016
  20. Mehul JainMar 4, 2016
  21. Matthieu MoyMar 4, 2016
  22. Paul TanMar 4, 2016
  23. pull --rebase: add --[no-]autostash flagMehul Jain, Mar 5, 2016
  24. Mehul JainMar 5, 2016
  25. Junio C HamanoMar 5, 2016
  26. Mehul JainMar 7, 2016
  27. pull --rebase: add --[no-]autostash flagMehul Jain, Mar 7, 2016
  28. Junio C HamanoMar 7, 2016
  29. 1/2 git-pull.c: introduce git_pull_config()Mehul Jain, Mar 8, 2016
  30. 2/2 pull --rebase: add --[no-]autostash flagMehul Jain, Mar 8, 2016
  31. 1/2 git-pull.c: introduce git_pull_config()Mehul Jain, Mar 9, 2016
  32. 2/2 pull --rebase: add --[no-]autostash flagMehul Jain, Mar 9, 2016
  33. Paul TanMar 11, 2016
  34. Mehul JainMar 11, 2016
  35. Matthieu MoyMar 11, 2016
  36. Mehul JainMar 11, 2016
  37. Mehul JainMar 12, 2016
  38. 1/2 git-pull.c: introduce git_pull_config()Mehul Jain, Mar 15, 2016
  39. 2/2 pull --rebase: add --[no-]autostash flagMehul Jain, Mar 15, 2016
  40. Eric SunshineMar 15, 2016
  41. Mehul JainMar 16, 2016
  42. Eric SunshineMar 18, 2016
  43. Mehul JainMar 17, 2016
  44. Eric SunshineMar 18, 2016

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.