From: Andrei Rybak <rybak.a.v@gmail.com>
To: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>, git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>, Jeff King <peff@peff.net>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>
Subject: Re: [PATCH 3/3] bundle: remove "ref_list" in favor of string-list.c API
Date: Sat, 19 Jun 2021 04:12:45 +0200 [thread overview]
Message-ID: <23c4ce5f-7769-1d2c-3a97-ac9733f73a25@gmail.com> (raw)
In-Reply-To: <patch-3.3-887313d3b0-20210617T111934Z-avarab@gmail.com>
On 17/06/2021 13:21, Ævar Arnfjörð Bjarmason wrote:
> ---
> builtin/bundle.c | 12 ++++-----
> bundle.c | 64 ++++++++++++++++++++++++------------------------
> bundle.h | 20 +++++++--------
> transport.c | 10 +++++---
> 4 files changed, 55 insertions(+), 51 deletions(-)
>
[snip]
> diff --git a/bundle.c b/bundle.c
> index 621708f40e..d36eeee1a5 100644
> --- a/bundle.c
> +++ b/bundle.c
> @@ -162,14 +156,14 @@ static int list_refs(struct ref_list *r, int argc, const char **argv)
> if (argc > 1) {
> int j;
> for (j = 1; j < argc; j++)
> - if (!strcmp(r->list[i].name, argv[j]))
> + if (!strcmp(r->items[i].string, argv[j]))
> break;
> if (j == argc)
> continue;
> }
>
> - oid = &r->list[i].oid;
> - name = r->list[i].name;
> + oid = r->items[i].util;
> + name = r->items[i].string;
> printf("%s %s\n", oid_to_hex(oid), name);
In function `list_refs` variable `name` that is used in a call to printf
has been extracted by the previous patch.
> }
> return 0;
> @@ -186,7 +180,7 @@ int verify_bundle(struct repository *r,
> * Do fast check, then if any prereqs are missing then go line by line
> * to be verbose about the errors
> */
> - struct ref_list *p = &header->prerequisites;
> + struct string_list *p = &header->prerequisites;
> struct rev_info revs;
> const char *argv[] = {NULL, "--all", NULL};
> struct commit *commit;
> @@ -198,17 +192,17 @@ int verify_bundle(struct repository *r,
>
> repo_init_revisions(r, &revs, NULL);
> for (i = 0; i < p->nr; i++) {
> - struct ref_list_entry *e = p->list + i;
> - struct object_id *oid = &e->oid;
> + struct string_list_item *e = p->items + i;
> + struct object_id *oid = e->util;
> struct object *o = parse_object(r, oid);
> if (o) {
> o->flags |= PREREQ_MARK;
> - add_pending_object(&revs, o, e->name);
> + add_pending_object(&revs, o, e->string);
> continue;
> }
> if (++ret == 1)
> error("%s", message);
> - error("%s %s", oid_to_hex(oid), e->name);
> + error("%s %s", oid_to_hex(oid), e->string);
> }
> if (revs.pending.nr != p->nr)
> return ret;
> @@ -224,28 +218,28 @@ int verify_bundle(struct repository *r,
> i--;
>
> for (i = 0; i < p->nr; i++) {
> - struct ref_list_entry *e = p->list + i;
> - struct object_id *oid = &e->oid;
> + struct string_list_item *e = p->items + i;
> + const struct object_id *oid = e->util;
> struct object *o = parse_object(r, oid);
> assert(o); /* otherwise we'd have returned early */
> if (o->flags & SHOWN)
> continue;
> if (++ret == 1)
> error("%s", message);
> - error("%s %s", oid_to_hex(oid), e->name);
> + error("%s %s", oid_to_hex(oid), e->string);
However, `e->name` in three places in function `verify_bundle` for two
different instances of `struct ref_list_entry *` wasn't extracted into
a variable by the previous patch. Could you please clarify this
discrepancy?
[snip]
> diff --git a/transport.c b/transport.c
> index 9d601c8c95..667c4e0cc6 100644
> --- a/transport.c
> +++ b/transport.c
> @@ -147,13 +147,14 @@ static struct ref *get_refs_from_bundle(struct transport *transport,
> transport->hash_algo = data->header.hash_algo;
>
> for (i = 0; i < data->header.references.nr; i++) {
> - struct ref_list_entry *e = data->header.references.list + i;
> - struct ref *ref = alloc_ref(e->name);
> - struct object_id *oid = &e->oid;
> + struct string_list_item *e = data->header.references.items + i;
> + struct ref *ref = alloc_ref(e->string);
Similar question for `e->name` here.
> + const struct object_id *oid = e->util;
> oidcpy(&ref->old_oid, oid);
> ref->next = result;
> result = ref;
> }
> + string_list_clear(&data->header.references, 1);
> return result;
> }
>
> @@ -176,6 +177,7 @@ static int close_bundle(struct transport *transport)
> struct bundle_transport_data *data = transport->data;
> if (data->fd > 0)
> close(data->fd);
> + bundle_header_release(&data->header);
> free(data);
> return 0;
> }
> @@ -1082,6 +1084,8 @@ struct transport *transport_get(struct remote *remote, const char *url)
> die(_("git-over-rsync is no longer supported"));
> } else if (url_is_local_not_ssh(url) && is_file(url) && is_bundle(url, 1)) {
> struct bundle_transport_data *data = xcalloc(1, sizeof(*data));
> + string_list_init(&data->header.prerequisites, 1);
> + string_list_init(&data->header.references, 1);
> transport_check_allowed("file");
> ret->data = data;
> ret->vtable = &bundle_vtable;
>
next prev parent reply other threads:[~2021-06-19 2:13 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-17 11:21 [PATCH 0/3] bundle.c: remove "ref_list" in favor of string-list.c API Ævar Arnfjörð Bjarmason
2021-06-17 11:21 ` [PATCH 1/3] bundle cmd: stop leaking memory from parse_options_cmd_bundle() Ævar Arnfjörð Bjarmason
2021-06-17 11:21 ` [PATCH 2/3] bundle.c: use a temporary variable for OIDs and names Ævar Arnfjörð Bjarmason
2021-06-17 11:21 ` [PATCH 3/3] bundle: remove "ref_list" in favor of string-list.c API Ævar Arnfjörð Bjarmason
2021-06-19 2:12 ` Andrei Rybak [this message]
2021-06-21 15:16 ` [PATCH v2 0/3] bundle.c: " Ævar Arnfjörð Bjarmason
2021-06-21 15:16 ` [PATCH v2 1/3] bundle cmd: stop leaking memory from parse_options_cmd_bundle() Ævar Arnfjörð Bjarmason
2021-06-24 16:54 ` Jeff King
2021-06-24 19:28 ` Ævar Arnfjörð Bjarmason
2021-06-21 15:16 ` [PATCH v2 2/3] bundle.c: use a temporary variable for OIDs and names Ævar Arnfjörð Bjarmason
2021-06-21 15:16 ` [PATCH v2 3/3] bundle: remove "ref_list" in favor of string-list.c API Ævar Arnfjörð Bjarmason
2021-06-24 17:11 ` Jeff King
2021-06-24 19:31 ` Ævar Arnfjörð Bjarmason
2021-06-29 1:02 ` Junio C Hamano
2021-06-24 17:14 ` [PATCH v2 0/3] bundle.c: " Jeff King
2021-06-30 14:06 ` [PATCH v3 0/3] Ævar Arnfjörð Bjarmason
2021-06-30 14:06 ` [PATCH v3 1/3] bundle cmd: stop leaking memory from parse_options_cmd_bundle() Ævar Arnfjörð Bjarmason
2021-06-30 17:26 ` Jeff King
2021-06-30 18:00 ` Ævar Arnfjörð Bjarmason
2021-07-01 15:41 ` Jeff King
2021-06-30 14:06 ` [PATCH v3 2/3] bundle.c: use a temporary variable for OIDs and names Ævar Arnfjörð Bjarmason
2021-06-30 14:06 ` [PATCH v3 3/3] bundle: remove "ref_list" in favor of string-list.c API Ævar Arnfjörð Bjarmason
2021-06-30 21:18 ` Junio C Hamano
2021-06-30 17:34 ` [PATCH v3 0/3] Jeff King
2021-06-30 17:45 ` Jeff King
2021-06-30 18:00 ` Ævar Arnfjörð Bjarmason
2021-07-01 10:53 ` Ævar Arnfjörð Bjarmason
2021-07-02 9:57 ` [PATCH v4 0/3] bundle.c: remove "ref_list" in favor of string-list.c API Ævar Arnfjörð Bjarmason
2021-07-02 9:57 ` [PATCH v4 1/3] bundle cmd: stop leaking memory from parse_options_cmd_bundle() Ævar Arnfjörð Bjarmason
2021-07-02 9:57 ` [PATCH v4 2/3] bundle.c: use a temporary variable for OIDs and names Ævar Arnfjörð Bjarmason
2021-07-02 9:57 ` [PATCH v4 3/3] bundle: remove "ref_list" in favor of string-list.c API Ævar Arnfjörð Bjarmason
2021-07-03 10:52 ` [PATCH v4 0/3] bundle.c: " Jeff King
2021-07-03 11:28 ` Ævar Arnfjörð Bjarmason
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=23c4ce5f-7769-1d2c-3a97-ac9733f73a25@gmail.com \
--to=rybak.a.v@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).