From: Junio C Hamano <gitster@pobox.com> To: Emily Shaffer <emilyshaffer@google.com> Cc: git@vger.kernel.org Subject: Re: [PATCH v8 13/15] bugreport: add packed object summary Date: Thu, 20 Feb 2020 14:04:52 -0800 Message-ID: <xmqq1rqoapa3.fsf@gitster-ct.c.googlers.com> (raw) In-Reply-To: <20200220015858.181086-14-emilyshaffer@google.com> (Emily Shaffer's message of "Wed, 19 Feb 2020 17:58:56 -0800") Emily Shaffer <emilyshaffer@google.com> writes: > +static void get_packed_object_summary(struct strbuf *obj_info, int nongit) > +{ > + struct packed_git *pack = NULL; > + int pack_count = 0; > + int object_count = 0; > + > + if (nongit) { > + strbuf_addstr(obj_info, > + "not run from a git repository - no objects to show\n"); > + return; > + } > + > + for_each_pack(the_repository, pack) { > + pack_count++; > + /* > + * To accurately count how many objects are packed, look inside > + * the packfile's index. > + */ > + open_pack_index(pack); > + object_count += pack->num_objects; > + } > + > + strbuf_addf(obj_info, "%d total packs (%d objects)\n", pack_count, > + object_count); > + > +} Makes sense. > @@ -447,4 +448,9 @@ int for_each_object_in_pack(struct packed_git *p, > int for_each_packed_object(each_packed_object_fn, void *, > enum for_each_object_flags flags); > > +#define for_each_pack(repo, pack) \ > + for (pack = get_all_packs(repo);\ > + pack; \ > + pack = pack->next) I generally avoid #define'ing a control loop pseudo-syntax unless it makes the resulting code hide overly ugly implementation detail. for_each_string_list() is there to hide the fact that items are stored in an embedded array whose name is .items and size is .nr that is sufficiently ugnly to expose, but iterating over packs does not look so bad. If you MUST have this as a pseudo-syntax macro, we need - to match for_each_string_list_item(), have iterating variable 'pack' as the first parameter, and the scope of what's iterated 'repo' as the second. - to make sure the syntax works correctly even if a parameter is *not* a simple identifier (I think the above is OK, but there may be cases that it does not work well). Regarding the latter, the way 'item' is incremented at the end of iteration in for_each_string_list_item() is subtle and correct. #define for_each_string_list_item(item,list) \ for (item = (list)->items; \ item && item < (list)->items + (list)->nr; \ ++item) You would break it if you changed pre-increment to post-increment for a user like this: struct string_list *list; struct string_list_item *i, **p; p = &i; for_each_string_list_item(*p, list) { ... } because ++*p is ++(*p), while *p++ is (*p)++, and we do want the former (i.e. increment the memory cell pointed at by pointer p). Personally, I would prefer not to introduce this macro if I were working on this topic. > #endif /* OBJECT_STORE_H */ > diff --git a/packfile.c b/packfile.c > index 99dd1a7d09..95afcc1187 100644 > --- a/packfile.c > +++ b/packfile.c > @@ -2095,8 +2095,7 @@ int for_each_packed_object(each_packed_object_fn cb, void *data, > int r = 0; > int pack_errors = 0; > > - prepare_packed_git(the_repository); > - for (p = get_all_packs(the_repository); p; p = p->next) { > + for_each_pack(the_repository, p) { > if ((flags & FOR_EACH_OBJECT_LOCAL_ONLY) && !p->pack_local) > continue; > if ((flags & FOR_EACH_OBJECT_PROMISOR_ONLY) &&
next prev parent reply index Thread overview: 273+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-12-13 0:42 [PATCH v4 00/15] add git-bugreport tool Emily Shaffer 2019-12-13 0:42 ` [PATCH v4 01/15] bugreport: add tool to generate debugging info Emily Shaffer 2019-12-13 0:42 ` [PATCH v4 02/15] help: move list_config_help to builtin/help Emily Shaffer 2019-12-13 20:51 ` Junio C Hamano 2019-12-16 21:36 ` Emily Shaffer 2019-12-16 22:19 ` Junio C Hamano 2019-12-16 22:34 ` Emily Shaffer 2019-12-13 0:43 ` [PATCH v4 03/15] bugreport: gather git version and build info Emily Shaffer 2019-12-13 21:06 ` Junio C Hamano 2019-12-20 1:46 ` Emily Shaffer 2019-12-17 18:45 ` Johannes Schindelin 2019-12-17 20:34 ` Junio C Hamano 2019-12-20 1:25 ` Emily Shaffer 2019-12-13 0:43 ` [PATCH v4 04/15] help: add shell-path to --build-options Emily Shaffer 2019-12-13 0:43 ` [PATCH v4 05/15] bugreport: add uname info Emily Shaffer 2019-12-13 21:12 ` Junio C Hamano 2020-01-10 2:05 ` Aaron Schrab 2019-12-13 0:43 ` [PATCH v4 06/15] bugreport: add glibc version Emily Shaffer 2019-12-13 21:18 ` Junio C Hamano 2019-12-16 22:39 ` Emily Shaffer 2019-12-13 0:43 ` [PATCH v4 07/15] bugreport: add curl version Emily Shaffer 2019-12-13 21:27 ` Junio C Hamano 2019-12-16 22:49 ` Emily Shaffer 2019-12-17 18:47 ` Johannes Schindelin 2019-12-13 0:43 ` [PATCH v4 08/15] bugreport: include user interactive shell Emily Shaffer 2019-12-13 21:38 ` Junio C Hamano 2019-12-13 0:43 ` [PATCH v4 09/15] bugreport: generate config safelist based on docs Emily Shaffer 2019-12-13 22:57 ` Junio C Hamano 2019-12-16 23:01 ` Emily Shaffer 2019-12-17 0:41 ` Emily Shaffer 2019-12-15 20:17 ` Johannes Schindelin 2019-12-16 22:52 ` Emily Shaffer 2019-12-17 18:38 ` Johannes Schindelin 2019-12-13 0:43 ` [PATCH v4 10/15] bugreport: add config values from safelist Emily Shaffer 2019-12-13 21:45 ` Junio C Hamano 2019-12-16 23:40 ` Emily Shaffer 2019-12-17 17:43 ` Junio C Hamano 2020-01-24 3:29 ` Emily Shaffer 2019-12-29 20:17 ` Johannes Schindelin 2019-12-13 0:43 ` [PATCH v4 11/15] bugreport: collect list of populated hooks Emily Shaffer 2019-12-13 21:47 ` Junio C Hamano 2019-12-16 23:51 ` Emily Shaffer 2019-12-13 0:43 ` [PATCH v4 12/15] bugreport: count loose objects Emily Shaffer 2019-12-13 21:51 ` Junio C Hamano 2019-12-16 23:54 ` Emily Shaffer 2019-12-13 0:43 ` [PATCH v4 13/15] bugreport: add packed object summary Emily Shaffer 2019-12-13 21:56 ` Junio C Hamano 2019-12-16 23:56 ` Emily Shaffer 2019-12-13 0:43 ` [PATCH v4 14/15] bugreport: list contents of $OBJDIR/info Emily Shaffer 2019-12-13 0:43 ` [PATCH v4 15/15] bugreport: summarize contents of alternates file Emily Shaffer 2020-01-24 3:34 ` [PATCH v5 00/15] add git-bugreport tool emilyshaffer 2020-01-24 3:34 ` [PATCH v5 01/15] bugreport: add tool to generate debugging info emilyshaffer 2020-01-30 22:18 ` Martin Ågren 2020-02-04 22:00 ` Emily Shaffer 2020-01-24 3:34 ` [PATCH v5 02/15] help: move list_config_help to builtin/help emilyshaffer 2020-01-30 22:19 ` Martin Ågren 2020-02-04 0:53 ` Emily Shaffer 2020-01-24 3:34 ` [PATCH v5 03/15] bugreport: gather git version and build info emilyshaffer 2020-01-30 22:19 ` Martin Ågren 2020-02-04 22:21 ` Emily Shaffer 2020-01-24 3:34 ` [PATCH v5 04/15] help: add shell-path to --build-options emilyshaffer 2020-01-30 22:21 ` Martin Ågren 2020-01-24 3:34 ` [PATCH v5 05/15] bugreport: add uname info emilyshaffer 2020-01-24 3:34 ` [PATCH v5 06/15] bugreport: add compiler info emilyshaffer 2020-01-30 22:21 ` Martin Ågren 2020-02-04 22:51 ` Emily Shaffer 2020-02-05 19:47 ` Martin Ågren 2020-01-24 3:34 ` [PATCH v5 07/15] bugreport: add curl version emilyshaffer 2020-01-30 22:27 ` Martin Ågren 2020-02-04 22:54 ` Emily Shaffer 2020-01-24 3:34 ` [PATCH v5 08/15] bugreport: include user interactive shell emilyshaffer 2020-01-30 22:28 ` Martin Ågren 2020-02-04 23:16 ` Emily Shaffer 2020-02-05 20:06 ` Junio C Hamano 2020-02-05 20:14 ` Martin Ågren 2020-01-24 3:34 ` [PATCH v5 09/15] bugreport: generate config safelist based on docs emilyshaffer 2020-01-30 22:34 ` Martin Ågren 2020-02-05 0:44 ` Emily Shaffer 2020-02-05 19:53 ` Martin Ågren 2020-01-31 21:20 ` Martin Ågren 2020-02-05 0:30 ` Emily Shaffer 2020-02-05 0:52 ` Emily Shaffer 2020-01-24 3:34 ` [PATCH v5 10/15] bugreport: add config values from safelist emilyshaffer 2020-01-30 22:36 ` Martin Ågren 2020-02-05 1:34 ` Emily Shaffer 2020-01-31 21:25 ` Martin Ågren 2020-02-05 2:31 ` Emily Shaffer 2020-02-05 20:12 ` Martin Ågren 2020-01-24 3:34 ` [PATCH v5 11/15] bugreport: collect list of populated hooks emilyshaffer 2020-02-04 18:44 ` Junio C Hamano 2020-02-05 2:48 ` Emily Shaffer 2020-02-05 3:00 ` Emily Shaffer 2020-01-24 3:34 ` [PATCH v5 12/15] bugreport: count loose objects emilyshaffer 2020-02-04 18:48 ` Junio C Hamano 2020-02-05 2:50 ` Emily Shaffer 2020-01-24 3:34 ` [PATCH v5 13/15] bugreport: add packed object summary emilyshaffer 2020-02-04 19:00 ` Junio C Hamano 2020-02-05 3:15 ` Emily Shaffer 2020-02-04 19:03 ` Junio C Hamano 2020-02-05 3:09 ` Emily Shaffer 2020-01-24 3:34 ` [PATCH v5 14/15] bugreport: list contents of $OBJDIR/info emilyshaffer 2020-01-24 3:34 ` [PATCH v5 15/15] bugreport: summarize contents of alternates file emilyshaffer 2020-01-24 3:38 ` [PATCH v5 00/15] add git-bugreport tool Emily Shaffer 2020-01-28 23:04 ` Jonathan Tan 2020-01-28 23:26 ` Emily Shaffer 2020-01-30 22:15 ` Martin Ågren 2020-02-04 0:07 ` Emily Shaffer 2020-02-06 0:40 ` [PATCH v6 " Emily Shaffer 2020-02-06 0:40 ` [PATCH v6 01/15] help: move list_config_help to builtin/help Emily Shaffer 2020-02-06 1:35 ` Danh Doan 2020-02-13 22:58 ` Emily Shaffer 2020-02-13 23:07 ` Eric Sunshine 2020-02-13 23:24 ` Junio C Hamano 2020-02-13 23:29 ` Eric Sunshine 2020-02-14 1:20 ` Emily Shaffer 2020-02-06 0:40 ` [PATCH v6 02/15] help: add shell-path to --build-options Emily Shaffer 2020-02-06 0:40 ` [PATCH v6 03/15] bugreport: add tool to generate debugging info Emily Shaffer 2020-02-07 14:18 ` SZEDER Gábor 2020-02-07 18:51 ` Junio C Hamano 2020-02-11 22:40 ` Emily Shaffer 2020-02-07 14:54 ` SZEDER Gábor 2020-02-12 18:06 ` Junio C Hamano 2020-02-12 22:36 ` Emily Shaffer 2020-02-06 0:40 ` [PATCH v6 04/15] bugreport: gather git version and build info Emily Shaffer 2020-02-06 0:40 ` [PATCH v6 05/15] bugreport: add uname info Emily Shaffer 2020-02-06 0:40 ` [PATCH v6 06/15] bugreport: add compiler info Emily Shaffer 2020-02-06 0:41 ` [PATCH v6 07/15] bugreport: add git-remote-https version Emily Shaffer 2020-02-06 0:41 ` [PATCH v6 08/15] bugreport: include user interactive shell Emily Shaffer 2020-02-06 0:41 ` [PATCH v6 09/15] bugreport: generate config safelist based on docs Emily Shaffer 2020-02-07 15:30 ` SZEDER Gábor 2020-02-13 23:14 ` Emily Shaffer 2020-02-06 0:41 ` [PATCH v6 10/15] bugreport: add config values from safelist Emily Shaffer 2020-02-07 14:47 ` SZEDER Gábor 2020-02-07 15:08 ` SZEDER Gábor 2020-02-07 16:24 ` Eric Sunshine 2020-02-07 16:51 ` Andreas Schwab 2020-02-13 22:02 ` Emily Shaffer 2020-02-06 0:41 ` [PATCH v6 11/15] bugreport: collect list of populated hooks Emily Shaffer 2020-02-06 0:41 ` [PATCH v6 12/15] bugreport: count loose objects Emily Shaffer 2020-02-06 0:41 ` [PATCH v6 13/15] bugreport: add packed object summary Emily Shaffer 2020-02-06 0:41 ` [PATCH v6 14/15] bugreport: list contents of $OBJDIR/info Emily Shaffer 2020-02-06 0:41 ` [PATCH v6 15/15] bugreport: summarize contents of alternates file Emily Shaffer 2020-02-14 1:53 ` [PATCH v7 00/15] add git-bugreport tool Emily Shaffer 2020-02-14 1:53 ` [PATCH v7 01/15] help: move list_config_help to builtin/help Emily Shaffer 2020-02-14 1:53 ` [PATCH v7 02/15] help: add shell-path to --build-options Emily Shaffer 2020-02-14 1:53 ` [PATCH v7 03/15] bugreport: add tool to generate debugging info Emily Shaffer 2020-02-14 17:25 ` Junio C Hamano 2020-02-15 1:57 ` Emily Shaffer 2020-02-15 18:24 ` Junio C Hamano 2020-02-18 23:46 ` Emily Shaffer 2020-02-18 23:56 ` Emily Shaffer 2020-02-19 23:15 ` Emily Shaffer 2020-02-19 23:24 ` Junio C Hamano 2020-02-19 14:18 ` Johannes Schindelin 2020-02-19 16:55 ` Junio C Hamano 2020-02-19 21:52 ` Emily Shaffer 2020-02-19 22:09 ` Junio C Hamano 2020-02-19 23:06 ` Emily Shaffer 2020-02-14 1:53 ` [PATCH v7 04/15] bugreport: gather git version and build info Emily Shaffer 2020-02-14 1:53 ` [PATCH v7 05/15] bugreport: add uname info Emily Shaffer 2020-02-14 1:53 ` [PATCH v7 06/15] bugreport: add compiler info Emily Shaffer 2020-02-19 14:23 ` Johannes Schindelin 2020-02-19 22:45 ` Emily Shaffer 2020-02-20 22:33 ` Johannes Schindelin 2020-02-20 23:33 ` Emily Shaffer 2020-02-21 15:22 ` Johannes Schindelin 2020-02-22 0:04 ` Emily Shaffer 2020-02-24 2:55 ` Junio C Hamano 2020-02-14 1:53 ` [PATCH v7 07/15] bugreport: add git-remote-https version Emily Shaffer 2020-02-19 14:28 ` Johannes Schindelin 2020-02-19 22:28 ` Emily Shaffer 2020-02-19 22:33 ` Junio C Hamano 2020-02-20 22:33 ` Johannes Schindelin 2020-02-14 1:53 ` [PATCH v7 08/15] bugreport: include user interactive shell Emily Shaffer 2020-02-14 1:53 ` [PATCH v7 09/15] bugreport: generate config safelist based on docs Emily Shaffer 2020-02-14 1:53 ` [PATCH v7 10/15] bugreport: add config values from safelist Emily Shaffer 2020-02-14 1:53 ` [PATCH v7 11/15] bugreport: collect list of populated hooks Emily Shaffer 2020-02-14 1:53 ` [PATCH v7 12/15] bugreport: count loose objects Emily Shaffer 2020-02-14 1:53 ` [PATCH v7 13/15] bugreport: add packed object summary Emily Shaffer 2020-02-14 1:53 ` [PATCH v7 14/15] bugreport: list contents of $OBJDIR/info Emily Shaffer 2020-02-14 17:04 ` Junio C Hamano 2020-02-18 23:59 ` Emily Shaffer 2020-02-14 1:53 ` [PATCH v7 15/15] bugreport: summarize contents of alternates file Emily Shaffer 2020-02-14 17:32 ` [PATCH v7 00/15] add git-bugreport tool Junio C Hamano 2020-02-14 22:00 ` Emily Shaffer 2020-02-14 22:30 ` Junio C Hamano 2020-02-20 1:58 ` [PATCH v8 " Emily Shaffer 2020-02-20 1:58 ` [PATCH v8 01/15] help: move list_config_help to builtin/help Emily Shaffer 2020-02-20 1:58 ` [PATCH v8 02/15] help: add shell-path to --build-options Emily Shaffer 2020-02-20 19:03 ` Junio C Hamano 2020-02-20 21:15 ` Emily Shaffer 2020-02-20 1:58 ` [PATCH v8 03/15] bugreport: add tool to generate debugging info Emily Shaffer 2020-02-20 19:33 ` Junio C Hamano 2020-02-20 22:33 ` Emily Shaffer 2020-02-26 16:12 ` Johannes Schindelin 2020-02-20 1:58 ` [PATCH v8 04/15] bugreport: gather git version and build info Emily Shaffer 2020-02-20 20:07 ` Junio C Hamano 2020-02-20 23:03 ` Emily Shaffer 2020-02-20 23:18 ` Junio C Hamano 2020-02-20 1:58 ` [PATCH v8 05/15] bugreport: add uname info Emily Shaffer 2020-02-20 20:12 ` Junio C Hamano 2020-02-20 23:20 ` Emily Shaffer 2020-02-20 1:58 ` [PATCH v8 06/15] bugreport: add compiler info Emily Shaffer 2020-02-20 2:49 ` Danh Doan 2020-02-20 23:23 ` Emily Shaffer 2020-02-20 20:23 ` Junio C Hamano 2020-02-21 0:26 ` Junio C Hamano 2020-02-20 1:58 ` [PATCH v8 07/15] bugreport: add git-remote-https version Emily Shaffer 2020-02-20 20:35 ` Junio C Hamano 2020-02-20 23:28 ` Emily Shaffer 2020-02-21 3:44 ` Junio C Hamano 2020-02-25 22:08 ` Emily Shaffer 2020-02-25 22:26 ` Junio C Hamano 2020-02-25 23:29 ` Emily Shaffer 2020-02-25 23:29 ` Junio C Hamano 2020-02-25 23:55 ` Emily Shaffer 2020-02-20 1:58 ` [PATCH v8 08/15] bugreport: include user interactive shell Emily Shaffer 2020-02-20 1:58 ` [PATCH v8 09/15] bugreport: generate config safelist based on docs Emily Shaffer 2020-02-20 20:40 ` Junio C Hamano 2020-02-26 16:13 ` Johannes Schindelin 2020-02-26 16:49 ` Junio C Hamano 2020-02-20 1:58 ` [PATCH v8 10/15] bugreport: add config values from safelist Emily Shaffer 2020-02-20 20:47 ` Junio C Hamano 2020-02-20 1:58 ` [PATCH v8 11/15] bugreport: collect list of populated hooks Emily Shaffer 2020-02-20 20:58 ` Junio C Hamano 2020-02-25 23:19 ` Emily Shaffer 2020-02-20 1:58 ` [PATCH v8 12/15] bugreport: count loose objects Emily Shaffer 2020-02-20 21:04 ` Junio C Hamano 2020-02-25 23:22 ` Emily Shaffer 2020-02-25 23:26 ` Emily Shaffer 2020-02-20 1:58 ` [PATCH v8 13/15] bugreport: add packed object summary Emily Shaffer 2020-02-20 22:04 ` Junio C Hamano [this message] 2020-02-25 23:58 ` Emily Shaffer 2020-02-20 1:58 ` [PATCH v8 14/15] bugreport: list contents of $OBJDIR/info Emily Shaffer 2020-02-20 22:18 ` Junio C Hamano 2020-02-20 1:58 ` [PATCH v8 15/15] bugreport: summarize contents of alternates file Emily Shaffer 2020-02-20 14:08 ` Johannes Schindelin 2020-02-20 22:22 ` Junio C Hamano 2020-03-02 23:03 ` [PATCH v9 0/5] add git-bugreport tool Emily Shaffer 2020-03-02 23:03 ` [PATCH v9 1/5] help: move list_config_help to builtin/help Emily Shaffer 2020-03-02 23:03 ` [PATCH v9 2/5] bugreport: add tool to generate debugging info Emily Shaffer 2020-03-03 14:18 ` Johannes Schindelin 2020-03-04 21:35 ` Johannes Schindelin 2020-03-05 23:34 ` Jeff Hostetler 2020-03-06 13:57 ` Johannes Schindelin 2020-03-06 18:25 ` Junio C Hamano 2020-03-06 18:08 ` Junio C Hamano 2020-03-06 18:58 ` Jeff Hostetler 2020-03-08 22:24 ` Johannes Schindelin 2020-03-09 14:59 ` Junio C Hamano 2020-03-09 19:17 ` Johannes Schindelin 2020-03-09 19:47 ` Junio C Hamano 2020-03-10 11:42 ` Johannes Schindelin 2020-03-10 18:37 ` Junio C Hamano 2020-03-10 22:08 ` Johannes Schindelin 2020-03-19 21:39 ` Emily Shaffer 2020-03-20 0:28 ` Junio C Hamano 2020-03-20 15:35 ` Johannes Schindelin 2020-03-23 18:52 ` Emily Shaffer 2020-03-20 15:42 ` Johannes Schindelin 2020-03-23 18:50 ` Emily Shaffer 2020-03-20 17:43 ` Junio C Hamano 2020-03-20 22:38 ` Johannes Schindelin 2020-03-20 22:47 ` Junio C Hamano 2020-03-21 10:53 ` Johannes Schindelin 2020-03-02 23:03 ` [PATCH v9 3/5] bugreport: gather git version and build info Emily Shaffer 2020-03-23 21:20 ` Junio C Hamano 2020-03-02 23:03 ` [PATCH v9 4/5] bugreport: add uname info Emily Shaffer 2020-03-02 23:04 ` [PATCH v9 5/5] bugreport: add compiler info Emily Shaffer 2020-03-03 11:46 ` Danh Doan 2020-03-03 14:07 ` Junio C Hamano 2020-03-04 21:39 ` Johannes Schindelin 2020-03-23 21:27 ` Emily Shaffer
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=xmqq1rqoapa3.fsf@gitster-ct.c.googlers.com \ --to=gitster@pobox.com \ --cc=emilyshaffer@google.com \ --cc=git@vger.kernel.org \ /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
Git Mailing List Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/git/0 git/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 git git/ https://lore.kernel.org/git \ git@vger.kernel.org public-inbox-index git Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.git AGPL code for this site: git clone https://public-inbox.org/public-inbox.git