In some cases, it could be that the user is having a problem with an object which isn't present in their normal object directory. We can get a hint that that might be the case by examining the list of alternates where their object may be stored instead. Signed-off-by: Emily Shaffer <emilyshaffer@xxxxxxxxxx> --- bugreport.c | 14 ++++++++++++++ bugreport.h | 6 ++++++ builtin/bugreport.c | 4 ++++ 3 files changed, 24 insertions(+) diff --git a/bugreport.c b/bugreport.c index ce15904fec..a7bdc72b7f 100644 --- a/bugreport.c +++ b/bugreport.c @@ -298,3 +298,17 @@ void get_object_info_summary(struct strbuf *obj_info) strbuf_complete_line(obj_info); } } + +void get_alternates_file(struct strbuf *alternates_info) +{ + struct strbuf alternates_path = STRBUF_INIT; + + strbuf_addstr(&alternates_path, get_object_directory()); + strbuf_complete(&alternates_path, '/'); + strbuf_addstr(&alternates_path, "info/alternates"); + + strbuf_reset(alternates_info); + strbuf_addbuf(alternates_info, &alternates_path); + strbuf_complete_line(alternates_info); + strbuf_read_file(alternates_info, alternates_path.buf, 0); +} diff --git a/bugreport.h b/bugreport.h index 4f5e2d1b9a..74d1f79960 100644 --- a/bugreport.h +++ b/bugreport.h @@ -36,3 +36,9 @@ void get_packed_object_summary(struct strbuf *obj_info); * previous contents of hook_info will be discarded. */ void get_object_info_summary(struct strbuf *obj_info); + +/** + * Adds the contents of '.git/info/alternates'. The previous contents of + * alternates_info will be discarded. + */ +void get_alternates_file(struct strbuf *alt_info); diff --git a/builtin/bugreport.c b/builtin/bugreport.c index 8aad33a9b0..0784bdc42a 100644 --- a/builtin/bugreport.c +++ b/builtin/bugreport.c @@ -76,6 +76,10 @@ int cmd_bugreport(int argc, const char **argv, const char *prefix) get_object_info_summary(&buffer); strbuf_write(&buffer, report); + add_header(report, "Alternates File"); + get_alternates_file(&buffer); + strbuf_write(&buffer, report); + // Close file // open file in editor launch_editor(report_path, NULL, NULL); -- 2.24.0.rc0.303.g954a862665-goog