stanis...@assembla.com writes:

> From: Stanislav Kolotinskiy <stanis...@assembla.com>
>
> When using git send-pack with --all option
> and a target repository specification ([<host>:]<directory>),
> usage message is being displayed instead of performing
> the actual transmission.
>
> The reason for this issue is that destination and refspecs are being set
> in the same conditional and are populated from argv. When a target
> repository is passed, refspecs is being populated as well with its value.
> This makes the check for refspecs not being NULL to always return true,
> which, in conjunction with the check for --all or --mirror options,
> is always true as well and returns usage message instead of proceeding.
>
> This ensures that send-pack will stop execution only when --all
> or --mirror switch is used in conjunction with any refspecs passed.
>
> Signed-off-by: Stanislav Kolotinskiy <stanis...@assembla.com>
> ---

Thanks, will queue.

>  builtin/send-pack.c  |  2 +-
>  t/t5400-send-pack.sh | 12 ++++++++++++
>  2 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/builtin/send-pack.c b/builtin/send-pack.c
> index f6e5d64..19f0577 100644
> --- a/builtin/send-pack.c
> +++ b/builtin/send-pack.c
> @@ -225,7 +225,7 @@ int cmd_send_pack(int argc, const char **argv, const char 
> *prefix)
>        * --all and --mirror are incompatible; neither makes sense
>        * with any refspecs.
>        */
> -     if ((refspecs && (send_all || args.send_mirror)) ||
> +     if ((nr_refspecs > 0 && (send_all || args.send_mirror)) ||
>           (send_all && args.send_mirror))
>               usage_with_options(send_pack_usage, options);
>
> diff --git a/t/t5400-send-pack.sh b/t/t5400-send-pack.sh
> index 04cea97..305ca7a 100755
> --- a/t/t5400-send-pack.sh
> +++ b/t/t5400-send-pack.sh
> @@ -128,6 +128,18 @@ test_expect_success 'denyNonFastforwards trumps --force' 
> '
>       test "$victim_orig" = "$victim_head"
>  '
>
> +test_expect_success 'send-pack --all sends all branches' '
> +     # make sure we have at least 2 branches with different
> +     # values, just to be thorough
> +     git branch other-branch HEAD^ &&
> +
> +     git init --bare all.git &&
> +     git send-pack --all all.git &&
> +     git for-each-ref refs/heads >expect &&
> +     git -C all.git for-each-ref refs/heads >actual &&
> +     test_cmp expect actual
> +'
> +
>  test_expect_success 'push --all excludes remote-tracking hierarchy' '
>       mkdir parent &&
>       (
> --
> 2.8.0
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to