Re: [PATCH v3 19/35] push: pass ref patterns when pushing

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

 



On Tue, Feb 6, 2018 at 5:12 PM, Brandon Williams <bmwill@xxxxxxxxxx> wrote:
> Construct a list of ref patterns to be passed to 'get_refs_list()' from
> the refspec to be used during the push.  This list of ref patterns will
> be used to allow the server to filter the ref advertisement when
> communicating using protocol v2.
>
> Signed-off-by: Brandon Williams <bmwill@xxxxxxxxxx>
> ---
>  transport.c | 17 ++++++++++++++++-
>  1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/transport.c b/transport.c
> index dfc603b36..6ea3905e3 100644
> --- a/transport.c
> +++ b/transport.c
> @@ -1026,11 +1026,26 @@ int transport_push(struct transport *transport,
>                 int porcelain = flags & TRANSPORT_PUSH_PORCELAIN;
>                 int pretend = flags & TRANSPORT_PUSH_DRY_RUN;
>                 int push_ret, ret, err;
> +               struct refspec *tmp_rs;
> +               struct argv_array ref_patterns = ARGV_ARRAY_INIT;
> +               int i;
>
>                 if (check_push_refs(local_refs, refspec_nr, refspec) < 0)
>                         return -1;
>
> -               remote_refs = transport->vtable->get_refs_list(transport, 1, NULL);
> +               tmp_rs = parse_push_refspec(refspec_nr, refspec);
> +               for (i = 0; i < refspec_nr; i++) {
> +                       if (tmp_rs[i].dst)
> +                               argv_array_push(&ref_patterns, tmp_rs[i].dst);
> +                       else if (tmp_rs[i].src && !tmp_rs[i].exact_sha1)
> +                               argv_array_push(&ref_patterns, tmp_rs[i].src);

else /* !tmp_rs[i].dst && (!tmp_rs[i].src || tmp_rs[i].exact_sha1)

I would think the case of !dst && !src cannot happen, as then there is
no refspec, but what about the !!exact_sha1 case ?

I'd think that is something like

    git push origin $(git rev-parse HEAD)

for which I'd think we'd bail out anyway?
But that would happen at a different place, here we can ignore
the exact hashes for listing refs purposes.

Can you add a comment or rather explain in the commit
message to make this less confusing?

Stefan



[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]

  Powered by Linux