summaryrefslogtreecommitdiff
path: root/commit-graph.h
diff options
context:
space:
mode:
authorDerrick Stolee <dstolee@microsoft.com>2019-06-12 13:29:37 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-06-12 18:20:53 (GMT)
commite103f7276f0d809c2935ebc1a3d68c6bbfaed23d (patch)
tree8d28ceab6dcdd7ff7e7400a15ffa54cf649a2565 /commit-graph.h
parentc7944050af45c7384f97c712cb4d126672c7cfa6 (diff)
downloadgit-e103f7276f0d809c2935ebc1a3d68c6bbfaed23d.zip
git-e103f7276f0d809c2935ebc1a3d68c6bbfaed23d.tar.gz
git-e103f7276f0d809c2935ebc1a3d68c6bbfaed23d.tar.bz2
commit-graph: return with errors during write
The write_commit_graph() method uses die() to report failure and exit when confronted with an unexpected condition. This use of die() in a library function is incorrect and is now replaced by error() statements and an int return type. Return zero on success and a negative value on failure. Now that we use 'goto cleanup' to jump to the terminal condition on an error, we have new paths that could lead to uninitialized values. New initializers are added to correct for this. The builtins 'commit-graph', 'gc', and 'commit' call these methods, so update them to check the return value. Test that 'git commit-graph write' returns a proper error code when hitting a failure condition in write_commit_graph(). Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'commit-graph.h')
-rw-r--r--commit-graph.h16
1 files changed, 11 insertions, 5 deletions
diff --git a/commit-graph.h b/commit-graph.h
index 7dfb8c8..869717c 100644
--- a/commit-graph.h
+++ b/commit-graph.h
@@ -65,12 +65,18 @@ struct commit_graph *parse_commit_graph(void *graph_map, int fd,
*/
int generation_numbers_enabled(struct repository *r);
-void write_commit_graph_reachable(const char *obj_dir, int append,
+/*
+ * The write_commit_graph* methods return zero on success
+ * and a negative value on failure. Note that if the repository
+ * is not compatible with the commit-graph feature, then the
+ * methods will return 0 without writing a commit-graph.
+ */
+int write_commit_graph_reachable(const char *obj_dir, int append,
int report_progress);
-void write_commit_graph(const char *obj_dir,
- struct string_list *pack_indexes,
- struct string_list *commit_hex,
- int append, int report_progress);
+int write_commit_graph(const char *obj_dir,
+ struct string_list *pack_indexes,
+ struct string_list *commit_hex,
+ int append, int report_progress);
int verify_commit_graph(struct repository *r, struct commit_graph *g);