Re: [PATCH] Add --no-autostash flag to git pull --rebase

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Thank you for the suggestions.
On Fri, Feb 26, 2016 at 6:17 PM, Paul Tan <pyokagan@xxxxxxxxx> wrote:
> Some grammatical/spelling nits below:

Many apologies for my English.

> I think git-pull's documentation should be updated as well to talk
> about this new command-line switch.

OK.

>> diff --git a/builtin/pull.c b/builtin/pull.c
>> index 10eff03..9d1a3d0 100644
>> --- a/builtin/pull.c
>> +++ b/builtin/pull.c
>> @@ -85,6 +85,7 @@ static char *opt_squash;
>>  static char *opt_commit;
>>  static char *opt_edit;
>>  static char *opt_ff;
>> +static int opt_autostash = -1;
>>  static char *opt_verify_signatures;
>>  static struct argv_array opt_strategies = ARGV_ARRAY_INIT;
>>  static struct argv_array opt_strategy_opts = ARGV_ARRAY_INIT;
>> @@ -146,6 +147,8 @@ static struct option pull_options[] = {
>>         OPT_PASSTHRU(0, "ff-only", &opt_ff, NULL,
>>                 N_("abort if fast-forward is not possible"),
>>                 PARSE_OPT_NOARG | PARSE_OPT_NONEG),
>> +       OPT_COLOR_FLAG(0,"autostash",&opt_autostash,
>> +               N_("abort if tree is dirty")),
>
> Why OPT_COLOR_FLAG()? And --autostash is not just about aborting if
> the working tree is dirty. Why not just copy the help message from
> git-rebase? Something like:
> "automatically stash/stash pop before and after rebase"

Using OPT_COLOR_FLAG() is wrong, I agree. OPT_BOOL will be a better option.
N_("automatically stash/stash pop before and after rebase") is better.

>>         OPT_PASSTHRU(0, "verify-signatures", &opt_verify_signatures, NULL,
>>                 N_("verify that the named commit has a valid GPG signature"),
>>                 PARSE_OPT_NOARG),
>> @@ -835,13 +838,14 @@ 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 < 0)
>> +                       if(git_config_get_bool("rebase.autostash",&opt_autostash))
>> +                               opt_autostash = 0;
>
> I wonder if this code could be shortened if we simply just called
> git_config_get_bool() just before parse_options(). That way, we don't
> need to check for the "-1" special value.

Definitely. This way opt_autostash can be initialized with 0, thus default
will be false.

>>
>> +               if (!opt_autostash)
>>                         die_on_unclean_work_tree(prefix);
>
> OK.
>
>>
>>                 if (get_rebase_fork_point(rebase_fork_point, repo, *refspecs))
>> diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh
>> index c952d5e..512d3bf 100755
>> --- a/t/t5520-pull.sh
>> +++ b/t/t5520-pull.sh
>> @@ -245,6 +245,14 @@ test_expect_success '--rebase fails with multiple branches' '
>>         test modified = "$(git show HEAD:file)"
>>  '
>>
>> +test_expect_success '--rebase --no-autostash fails with dirty working directory' '
>
> Maybe add ..."and rebase.autostash set" to the test name? Describes
> the test better, and is consistent with the name of the test below.

Can be done. But which one of these will be more appropriate:
 "rebase.autostash set" or "rebase.autostash set true".
I prefer latter, as it will maintain consistence with the test name of
"--rebase --autostash", which will be
'--rebase --autostash succeeds with dirty working directory and
rebase.autostash set false.'


>> +test_expect_success 'git pull -q --rebase --no-autostash' '
>> +       mkdir clonedqrbnas &&
>> +       (cd clonedqrbnas  && git init &&
>> +       git pull -q --rebase --no-autostash "../parent" >out 2>err &&
>> +       test_must_be_empty err &&
>> +       test_must_be_empty out)
>> +'
>> +
>> +test_expect_success 'git pull -v --rebase --no-autostash' '
>> +       mkdir clonedvrbnas &&
>> +       (cd clonedvrbnas && git init &&
>> +       git pull -v --rebase --no-autostash "../parent" >out 2>err &&
>> +       test -s err &&
>> +       test_must_be_empty out)
>> +'
>
> While more tests are always good, I don't think we need to test for
> "-q" and "-v" with --no-autostash, because it's already covered by the
> test for "git pull -q --rebase". Perhaps with --autostash, but even
> then I don't think we need a test for "-v".

OK then. I will only add tests for "git pull --rebase --no-autostash",
"git pull --rebase --autostash" and
"git pull -q --rebase --autostash" in t5521-pull-options.sh

Thanks,
Mehul Jain
--
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



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]