From: Brandon Williams <bmwill@google.com>
To: Jonathan Tan <jonathantanmy@google.com>
Cc: git@vger.kernel.org, gitster@pobox.com, sbeller@google.com
Subject: Re: [PATCH v3 7/8] fetch-pack: put shallow info in output parameter
Date: Mon, 25 Jun 2018 11:18:20 -0700 [thread overview]
Message-ID: <20180625181820.GB19910@google.com> (raw)
In-Reply-To: <20180625180353.227420-1-jonathantanmy@google.com>
On 06/25, Jonathan Tan wrote:
> > static void update_shallow(struct fetch_pack_args *args,
> > - struct ref **sought, int nr_sought,
> > + struct ref *refs,
>
> update_shallow() now takes in a linked list of refs instead of an array.
> I see that the translation of this function is straightforward -
> occasionally, we need to iterate through the linked list and count up
> from 0 at the same time, but that is not a problem.
>
> > struct shallow_info *si)
> > {
> > struct oid_array ref = OID_ARRAY_INIT;
> > int *status;
> > - int i;
> > + int i = 0;
>
> Remove the " = 0" - I've verified that it does not need to be there, and
> it might inhibit useful "unintialized variable" warnings if others were
> to change the code later.
>
> Optional: I would also remove this declaration and declare "int i;" in
> each of the blocks that need it.
>
> > static int fetch_refs_via_pack(struct transport *transport,
> > - int nr_heads, struct ref **to_fetch)
> > + int nr_heads, struct ref **to_fetch,
> > + struct ref **fetched_refs)
> > {
> > int ret = 0;
> > struct git_transport_data *data = transport->data;
> > @@ -354,8 +356,12 @@ static int fetch_refs_via_pack(struct transport *transport,
> > if (report_unmatched_refs(to_fetch, nr_heads))
> > ret = -1;
> >
> > + if (fetched_refs)
> > + *fetched_refs = refs;
> > + else
> > + free_refs(refs);
> > +
> > free_refs(refs_tmp);
> > - free_refs(refs);
> > free(dest);
> > return ret;
> > }
>
> Instead of just freeing the linked list, we return it if requested by
> the client. This makes sense.
>
> > -int transport_fetch_refs(struct transport *transport, struct ref *refs)
> > +int transport_fetch_refs(struct transport *transport, struct ref *refs,
> > + struct ref **fetched_refs)
> > {
> > int rc;
> > int nr_heads = 0, nr_alloc = 0, nr_refs = 0;
> > struct ref **heads = NULL;
> > + struct ref *nop_head = NULL, **nop_tail = &nop_head;
> > struct ref *rm;
> >
> > for (rm = refs; rm; rm = rm->next) {
> > nr_refs++;
> > if (rm->peer_ref &&
> > !is_null_oid(&rm->old_oid) &&
> > - !oidcmp(&rm->peer_ref->old_oid, &rm->old_oid))
> > + !oidcmp(&rm->peer_ref->old_oid, &rm->old_oid)) {
> > + /*
> > + * These need to be reported as fetched, but we don't
> > + * actually need to fetch them.
> > + */
> > + if (fetched_refs) {
> > + struct ref *nop_ref = copy_ref(rm);
> > + *nop_tail = nop_ref;
> > + nop_tail = &nop_ref->next;
> > + }
> > continue;
> > + }
> > ALLOC_GROW(heads, nr_heads + 1, nr_alloc);
> > heads[nr_heads++] = rm;
> > }
> > @@ -1245,7 +1263,11 @@ int transport_fetch_refs(struct transport *transport, struct ref *refs)
> > heads[nr_heads++] = rm;
> > }
> >
> > - rc = transport->vtable->fetch(transport, nr_heads, heads);
> > + rc = transport->vtable->fetch(transport, nr_heads, heads, fetched_refs);
> > + if (fetched_refs && nop_head) {
> > + *nop_tail = *fetched_refs;
> > + *fetched_refs = nop_head;
> > + }
> >
> > free(heads);
> > return rc;
>
> And sometimes, even if we are merely simulating the fetching of refs, we
> still need to report those refs in fetched_refs. This is correct.
>
> I also see that t5703 now passes.
>
> Besides enabling the writing of subsequent patches, I see that this also
> makes the API clearer in that the input refs to transport_fetch_refs()
> are not overloaded to output shallow information. Other than the " = 0"
> change above, this patch looks good to me.
Perfect, I'll just drop the " = 0" part (making the diff slightly
smaller)
--
Brandon Williams
next prev parent reply other threads:[~2018-06-25 18:18 UTC|newest]
Thread overview: 122+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-05 17:51 [PATCH 0/8] ref-in-want Brandon Williams
2018-06-05 17:51 ` [PATCH 1/8] test-pkt-line: add unpack-sideband subcommand Brandon Williams
2018-06-05 17:51 ` [PATCH 2/8] upload-pack: implement ref-in-want Brandon Williams
2018-06-05 19:11 ` Ramsay Jones
2018-06-05 20:32 ` Ævar Arnfjörð Bjarmason
2018-06-06 21:32 ` Brandon Williams
2018-06-06 22:42 ` Ævar Arnfjörð Bjarmason
2018-06-06 22:45 ` Brandon Williams
2018-06-05 17:51 ` [PATCH 3/8] upload-pack: test negotiation with changing repository Brandon Williams
2018-06-05 17:51 ` [PATCH 4/8] fetch: refactor the population of peer ref OIDs Brandon Williams
2018-06-05 17:51 ` [PATCH 5/8] fetch: refactor fetch_refs into two functions Brandon Williams
2018-06-05 17:51 ` [PATCH 6/8] fetch: refactor to make function args narrower Brandon Williams
2018-06-05 17:51 ` [PATCH 7/8] fetch-pack: put shallow info in output parameter Brandon Williams
2018-06-05 17:51 ` [PATCH 8/8] fetch-pack: implement ref-in-want Brandon Williams
2018-06-13 21:39 ` [PATCH v2 0/8] ref-in-want Brandon Williams
2018-06-13 21:39 ` [PATCH v2 1/8] test-pkt-line: add unpack-sideband subcommand Brandon Williams
2018-06-14 18:09 ` Stefan Beller
2018-06-14 19:21 ` Brandon Williams
2018-06-13 21:39 ` [PATCH v2 2/8] upload-pack: implement ref-in-want Brandon Williams
2018-06-14 18:40 ` Stefan Beller
2018-06-14 18:52 ` Brandon Williams
2018-06-15 21:08 ` Junio C Hamano
2018-06-15 21:14 ` Junio C Hamano
2018-06-19 18:50 ` Brandon Williams
2018-06-19 20:37 ` Junio C Hamano
2018-06-19 23:14 ` Brandon Williams
2018-06-21 16:38 ` Junio C Hamano
2018-06-13 21:39 ` [PATCH v2 3/8] upload-pack: test negotiation with changing repository Brandon Williams
2018-06-14 19:23 ` Stefan Beller
2018-06-13 21:39 ` [PATCH v2 4/8] fetch: refactor the population of peer ref OIDs Brandon Williams
2018-06-13 21:39 ` [PATCH v2 5/8] fetch: refactor fetch_refs into two functions Brandon Williams
2018-06-13 21:39 ` [PATCH v2 6/8] fetch: refactor to make function args narrower Brandon Williams
2018-06-14 19:32 ` Stefan Beller
2018-06-13 21:39 ` [PATCH v2 7/8] fetch-pack: put shallow info in output parameter Brandon Williams
2018-06-14 19:42 ` Stefan Beller
2018-06-14 23:59 ` Jonathan Tan
2018-06-19 17:41 ` Brandon Williams
2018-06-13 21:39 ` [PATCH v2 8/8] fetch-pack: implement ref-in-want Brandon Williams
2018-06-14 19:56 ` Stefan Beller
2018-06-14 21:18 ` Brandon Williams
2018-06-22 22:29 ` Jonathan Nieder
2018-06-15 21:20 ` [PATCH v2 0/8] ref-in-want Junio C Hamano
2018-06-18 18:05 ` Brandon Williams
2018-06-20 21:32 ` [PATCH v3 " Brandon Williams
2018-06-20 21:32 ` [PATCH v3 1/8] test-pkt-line: add unpack-sideband subcommand Brandon Williams
2018-06-22 21:12 ` Jonathan Nieder
2018-06-20 21:32 ` [PATCH v3 2/8] upload-pack: implement ref-in-want Brandon Williams
2018-06-25 17:40 ` Jonathan Tan
2018-06-25 18:09 ` Jonathan Tan
2018-06-25 18:20 ` Brandon Williams
2018-06-20 21:32 ` [PATCH v3 3/8] upload-pack: test negotiation with changing repository Brandon Williams
2018-06-20 21:32 ` [PATCH v3 4/8] fetch: refactor the population of peer ref OIDs Brandon Williams
2018-06-25 17:45 ` Jonathan Tan
2018-06-20 21:32 ` [PATCH v3 5/8] fetch: refactor fetch_refs into two functions Brandon Williams
2018-06-22 21:26 ` Jonathan Nieder
2018-06-22 21:42 ` Jonathan Nieder
2018-06-20 21:32 ` [PATCH v3 6/8] fetch: refactor to make function args narrower Brandon Williams
2018-06-20 21:32 ` [PATCH v3 7/8] fetch-pack: put shallow info in output parameter Brandon Williams
2018-06-25 18:03 ` Jonathan Tan
2018-06-25 18:18 ` Brandon Williams [this message]
2018-06-20 21:32 ` [PATCH v3 8/8] fetch-pack: implement ref-in-want Brandon Williams
2018-06-22 23:01 ` Jonathan Nieder
2018-06-25 18:08 ` Brandon Williams
2018-06-25 18:53 ` [PATCH v4 0/8] ref-in-want Brandon Williams
2018-06-25 18:53 ` [PATCH v4 1/8] test-pkt-line: add unpack-sideband subcommand Brandon Williams
2018-06-25 18:53 ` [PATCH v4 2/8] upload-pack: implement ref-in-want Brandon Williams
2018-06-25 18:53 ` [PATCH v4 3/8] upload-pack: test negotiation with changing repository Brandon Williams
2018-06-25 22:27 ` Jonathan Tan
2018-06-25 18:53 ` [PATCH v4 4/8] fetch: refactor the population of peer ref OIDs Brandon Williams
2018-06-25 18:53 ` [PATCH v4 5/8] fetch: refactor fetch_refs into two functions Brandon Williams
2018-06-25 18:53 ` [PATCH v4 6/8] fetch: refactor to make function args narrower Brandon Williams
2018-06-25 22:36 ` Jonathan Tan
2018-06-25 18:53 ` [PATCH v4 7/8] fetch-pack: put shallow info in output parameter Brandon Williams
2018-06-25 18:53 ` [PATCH v4 8/8] fetch-pack: implement ref-in-want Brandon Williams
2018-06-25 23:03 ` [PATCH v4 0/8] ref-in-want Jonathan Tan
2018-06-26 20:54 ` [PATCH v5 " Brandon Williams
2018-06-26 20:54 ` [PATCH v5 1/8] test-pkt-line: add unpack-sideband subcommand Brandon Williams
2018-06-26 20:54 ` [PATCH v5 2/8] upload-pack: implement ref-in-want Brandon Williams
2018-06-26 21:25 ` Junio C Hamano
2018-06-27 18:05 ` Brandon Williams
2018-06-27 18:53 ` Junio C Hamano
2018-06-27 20:46 ` Brandon Williams
2018-06-27 20:59 ` Stefan Beller
2018-06-27 18:06 ` Jonathan Tan
2018-06-26 20:54 ` [PATCH v5 3/8] upload-pack: test negotiation with changing repository Brandon Williams
2018-06-26 21:34 ` Junio C Hamano
2018-06-27 18:09 ` Brandon Williams
2018-06-27 17:58 ` Jonathan Tan
2018-06-26 20:54 ` [PATCH v5 4/8] fetch: refactor the population of peer ref OIDs Brandon Williams
2018-06-26 20:54 ` [PATCH v5 5/8] fetch: refactor fetch_refs into two functions Brandon Williams
2018-06-26 20:54 ` [PATCH v5 6/8] fetch: refactor to make function args narrower Brandon Williams
2018-06-26 21:40 ` Junio C Hamano
2018-06-26 20:54 ` [PATCH v5 7/8] fetch-pack: put shallow info in output parameter Brandon Williams
2018-06-26 21:42 ` Junio C Hamano
2018-06-27 18:15 ` Brandon Williams
2018-06-26 20:54 ` [PATCH v5 8/8] fetch-pack: implement ref-in-want Brandon Williams
2018-06-27 18:09 ` Jonathan Tan
2018-06-27 18:18 ` Brandon Williams
2018-06-27 22:30 ` [PATCH v6 0/8] ref-in-want Brandon Williams
2018-06-27 22:30 ` [PATCH v6 1/8] test-pkt-line: add unpack-sideband subcommand Brandon Williams
2018-06-27 22:30 ` [PATCH v6 2/8] upload-pack: implement ref-in-want Brandon Williams
2018-06-27 22:30 ` [PATCH v6 3/8] upload-pack: test negotiation with changing repository Brandon Williams
2018-06-27 22:30 ` [PATCH v6 4/8] fetch: refactor the population of peer ref OIDs Brandon Williams
2018-06-27 22:30 ` [PATCH v6 5/8] fetch: refactor fetch_refs into two functions Brandon Williams
2018-06-27 22:30 ` [PATCH v6 6/8] fetch: refactor to make function args narrower Brandon Williams
2018-06-27 22:30 ` [PATCH v6 7/8] fetch-pack: put shallow info in output parameter Brandon Williams
2018-06-27 22:30 ` [PATCH v6 8/8] fetch-pack: implement ref-in-want Brandon Williams
2018-07-22 9:20 ` Duy Nguyen
2018-07-23 17:53 ` Brandon Williams
2018-07-23 18:13 ` Duy Nguyen
2018-07-23 21:28 ` Jonathan Nieder
2018-07-23 17:56 ` [PATCH] fetch-pack: mark die strings for translation Brandon Williams
2018-07-23 18:14 ` Stefan Beller
2018-07-23 21:29 ` Jonathan Nieder
2018-07-23 22:57 ` Junio C Hamano
2018-07-23 22:59 ` Junio C Hamano
2018-07-23 23:00 ` Brandon Williams
2018-06-15 19:04 ` [PATCH 0/8] ref-in-want Jonathan Tan
2018-06-19 17:32 ` Brandon Williams
2018-06-19 19:23 ` Jonathan Tan
2018-06-19 23:16 ` Brandon Williams
2018-06-19 23:38 ` Jonathan Tan
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=20180625181820.GB19910@google.com \
--to=bmwill@google.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jonathantanmy@google.com \
--cc=sbeller@google.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.