Alongside the list of loose objects, it's useful to see the list of object packs as well. It can help us to examine what Git did and did not pack. Signed-off-by: Emily Shaffer <emilyshaffer@xxxxxxxxxx> --- bugreport.c | 21 +++++++++++++++++++++ bugreport.h | 6 ++++++ builtin/bugreport.c | 4 ++++ 3 files changed, 31 insertions(+) diff --git a/bugreport.c b/bugreport.c index 54e1d47103..79ddb8baaa 100644 --- a/bugreport.c +++ b/bugreport.c @@ -219,3 +219,24 @@ void get_loose_object_summary(struct strbuf *obj_info) objects.nr); } } + +void get_packed_object_summary(struct strbuf *obj_info) +{ + struct strbuf dirpath = STRBUF_INIT; + struct string_list contents = STRING_LIST_INIT_DUP; + struct string_list_item *entry; + + strbuf_reset(obj_info); + + strbuf_addstr(&dirpath, get_object_directory()); + strbuf_complete(&dirpath, '/'); + strbuf_addstr(&dirpath, "pack/"); + list_contents_of_dir(&contents, &dirpath, 0, 0); + + // list full contents of $GIT_OBJECT_DIRECTORY/pack/ + for_each_string_list_item(entry, &contents) { + strbuf_addbuf(obj_info, &dirpath); + strbuf_addstr(obj_info, entry->string); + strbuf_complete_line(obj_info); + } +} diff --git a/bugreport.h b/bugreport.h index 09ad0c2599..11ff7df41b 100644 --- a/bugreport.h +++ b/bugreport.h @@ -24,3 +24,9 @@ void get_populated_hooks(struct strbuf *hook_info); * will be discarded. */ void get_loose_object_summary(struct strbuf *obj_info); + +/** + * Adds a list of the contents of '.git/objects/pack'. The previous contents of + * hook_info will be discarded. + */ +void get_packed_object_summary(struct strbuf *obj_info); diff --git a/builtin/bugreport.c b/builtin/bugreport.c index b2ab194207..da91a3944e 100644 --- a/builtin/bugreport.c +++ b/builtin/bugreport.c @@ -68,6 +68,10 @@ int cmd_bugreport(int argc, const char **argv, const char *prefix) get_loose_object_summary(&buffer); strbuf_write(&buffer, report); + add_header(report, "Packed Object Summary"); + get_packed_object_summary(&buffer); + strbuf_write(&buffer, report); + fclose(report); launch_editor(report_path.buf, NULL, NULL); -- 2.24.0.rc0.303.g954a862665-goog