Hi Junio, On Sun, Feb 28, 2016 at 3:26 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Mehul Jain <mehul.jain2029@xxxxxxxxx> 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. > * 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html