From: Eric Sunshine <sunshine@sunshineco.com>
To: Mehul Jain <mehul.jain2029@gmail.com>
Cc: Git List <git@vger.kernel.org>,
Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>,
Junio C Hamano <gitster@pobox.com>, Paul Tan <pyokagan@gmail.com>
Subject: Re: [PATCH 2/2] pull --rebase: add --[no-]autostash flag
Date: Tue, 15 Mar 2016 17:43:27 -0400 [thread overview]
Message-ID: <CAPig+cSnp+NsBAMib4pExKCLB5ocGsHWyO7qMU0E91WqE6a5_g@mail.gmail.com> (raw)
In-Reply-To: <1458061904-26516-2-git-send-email-mehul.jain2029@gmail.com>
On Tue, Mar 15, 2016 at 1:11 PM, Mehul Jain <mehul.jain2029@gmail.com> wrote:
> If rebase.autoStash configuration variable is set, there is no way to
> override it for "git pull --rebase" from the command line.
>
> Teach "git pull --rebase" the --[no-]autostash command line flag which
> overrides the current value of rebase.autoStash, if set. As "git rebase"
> understands the --[no-]autostash option, it's just a matter of passing
> the option to underlying "git rebase" when "git pull --rebase" is called.
The below comments may or may not be worth a re-roll (you decide)...
> Signed-off-by: Mehul Jain <mehul.jain2029@gmail.com>
> ---
> diff --git a/Documentation/git-pull.txt b/Documentation/git-pull.txt
> @@ -128,6 +128,15 @@ unless you have read linkgit:git-rebase[1] carefully.
> +--autostash::
> +--no-autostash::
> + Before starting rebase, stash local modifications away (see
> + linkgit:git-stash.txt[1]) if needed, and apply the stash when
> + done (this option is only valid when "--rebase" is used).
> ++
> +`--no-autostash` is useful to override the `rebase.autoStash`
> +configuration variable (see linkgit:git-config[1]).
The last couple sentences seem reversed. It feels odd to have the bit
about --rebase dropped dead in the middle of the description of
--autostash and --no-autostash. I'd have expected to see --autostash
and --no-autostash discussed together, and then, as a follow-on,
mention them being valid only with --rebase.
> diff --git a/builtin/pull.c b/builtin/pull.c
> @@ -851,12 +855,17 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
> if (is_null_sha1(orig_head) && !is_cache_unborn())
> die(_("Updating an unborn branch with changes added to the index."));
>
> - if (config_autostash)
> + if (opt_autostash == -1)
In patch 1/2, this changed from 'if (autostash)' to 'if
(config_autostash)'; it's a bit sad that patch 2/2 then has to touch
the same code to change it yet again, this time to 'if
(opt_autostash)'. Have you tried just keeping the original 'autostash'
variable and modifying its value based upon config_autostash and
opt_autostash instead? (Not saying that this would be better, but
interested in knowing if the result is as clean or cleaner or worse.)
> + opt_autostash = config_autostash;
> +
> + if (!opt_autostash)
> die_on_unclean_work_tree(prefix);
>
> if (get_rebase_fork_point(rebase_fork_point, repo, *refspecs))
> hashclr(rebase_fork_point);
> - }
> + } else
> + if (opt_autostash != -1)
> + die(_("--[no-]autostash option is only valid with --rebase."));
How about formatting this as a normal 'else if'?
} else if (opt_autostash != -1)
On the other hand, this error case hanging off the 'rebase'
conditional is somewhat more difficult to reason about than perhaps it
ought to be. It might be easier to see what's going on if you get the
error case out of the way early, and then handle the normal case. That
is, something like this:
if (!opt_rebase && opt_autostash != -1)
die(_("... is only valid with --rebase"));
if (opt_rebase) {
...
}
> if (run_fetch(repo, refspecs))
> return 1;
next prev parent reply other threads:[~2016-03-15 21:43 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-27 17:41 [PATCH v2 1/2] pull --rebase: add --[no-]autostash flag Mehul Jain
2016-02-27 17:41 ` [PATCH v2 2/2] Documentation/git-pull.txt: teach 'git pull --rebase' the --[no-]autostash option Mehul Jain
2016-02-27 19:26 ` [PATCH v2 1/2] pull --rebase: add --[no-]autostash flag Junio C Hamano
2016-02-28 9:51 ` Mehul Jain
2016-02-28 10:12 ` Matthieu Moy
2016-02-28 12:28 ` Paul Tan
2016-02-28 19:39 ` Junio C Hamano
2016-03-03 16:13 ` [PATCH v3 1/3] " Mehul Jain
2016-03-03 16:13 ` [PATCH v3 2/3] test: add test for " Mehul Jain
2016-03-03 17:31 ` Matthieu Moy
2016-03-04 5:43 ` Mehul Jain
2016-03-03 16:13 ` [PATCH v3 3/3] Documentation/git-pull: document --[no-]autostash option Mehul Jain
2016-03-03 17:14 ` Junio C Hamano
2016-03-04 5:04 ` Mehul Jain
2016-03-04 7:00 ` Matthieu Moy
2016-03-04 15:56 ` Paul Tan
2016-03-03 17:24 ` [PATCH v3 1/3] pull --rebase: add --[no-]autostash flag Matthieu Moy
2016-03-04 1:01 ` Eric Sunshine
2016-03-04 6:50 ` Matthieu Moy
2016-03-04 5:37 ` Mehul Jain
2016-03-04 6:51 ` Matthieu Moy
2016-03-04 15:52 ` Paul Tan
2016-03-05 9:52 ` [PATCH v4] " Mehul Jain
2016-03-05 12:26 ` Mehul Jain
2016-03-05 17:04 ` Junio C Hamano
2016-03-07 8:23 ` Mehul Jain
2016-03-07 12:37 ` [PATCH v5] " Mehul Jain
2016-03-07 23:01 ` Junio C Hamano
2016-03-08 18:19 ` [PATCH v6 1/2] git-pull.c: introduce git_pull_config() Mehul Jain
2016-03-08 18:19 ` [PATCH v6 2/2] pull --rebase: add --[no-]autostash flag Mehul Jain
2016-03-09 4:18 ` [PATCH v7 1/2] git-pull.c: introduce git_pull_config() Mehul Jain
2016-03-09 4:18 ` [PATCH v7 2/2] pull --rebase: add --[no-]autostash flag Mehul Jain
2016-03-11 4:51 ` Paul Tan
2016-03-11 13:15 ` Mehul Jain
2016-03-11 13:30 ` Matthieu Moy
2016-03-11 14:38 ` Mehul Jain
2016-03-12 6:49 ` Mehul Jain
2016-03-15 17:11 ` [PATCH 1/2] git-pull.c: introduce git_pull_config() Mehul Jain
2016-03-15 17:11 ` [PATCH 2/2] pull --rebase: add --[no-]autostash flag Mehul Jain
2016-03-15 21:43 ` Eric Sunshine [this message]
2016-03-16 5:00 ` Mehul Jain
2016-03-18 3:32 ` Eric Sunshine
2016-03-17 8:17 ` Mehul Jain
2016-03-18 3:53 ` Eric Sunshine
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAPig+cSnp+NsBAMib4pExKCLB5ocGsHWyO7qMU0E91WqE6a5_g@mail.gmail.com \
--to=sunshine@sunshineco.com \
--cc=Matthieu.Moy@grenoble-inp.fr \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=mehul.jain2029@gmail.com \
--cc=pyokagan@gmail.com \
/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.
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 NNTP newsgroup(s).