|
|
|
@ -739,11 +739,12 @@ static int add_ref_to_list(const char *refname,
@@ -739,11 +739,12 @@ static int add_ref_to_list(const char *refname,
|
|
|
|
|
void write_commit_graph_reachable(const char *obj_dir, int append, |
|
|
|
|
int report_progress) |
|
|
|
|
{ |
|
|
|
|
struct string_list list; |
|
|
|
|
struct string_list list = STRING_LIST_INIT_DUP; |
|
|
|
|
|
|
|
|
|
string_list_init(&list, 1); |
|
|
|
|
for_each_ref(add_ref_to_list, &list); |
|
|
|
|
write_commit_graph(obj_dir, NULL, &list, append, report_progress); |
|
|
|
|
|
|
|
|
|
string_list_clear(&list, 0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void write_commit_graph(const char *obj_dir, |
|
|
|
@ -768,7 +769,7 @@ void write_commit_graph(const char *obj_dir,
@@ -768,7 +769,7 @@ void write_commit_graph(const char *obj_dir,
|
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
oids.nr = 0; |
|
|
|
|
oids.alloc = approximate_object_count() / 4; |
|
|
|
|
oids.alloc = approximate_object_count() / 32; |
|
|
|
|
oids.progress = NULL; |
|
|
|
|
oids.progress_done = 0; |
|
|
|
|
|
|
|
|
@ -813,6 +814,7 @@ void write_commit_graph(const char *obj_dir,
@@ -813,6 +814,7 @@ void write_commit_graph(const char *obj_dir,
|
|
|
|
|
die(_("error opening index for %s"), packname.buf); |
|
|
|
|
for_each_object_in_pack(p, add_packed_commits, &oids, 0); |
|
|
|
|
close_pack(p); |
|
|
|
|
free(p); |
|
|
|
|
} |
|
|
|
|
stop_progress(&oids.progress); |
|
|
|
|
strbuf_release(&packname); |
|
|
|
@ -895,9 +897,11 @@ void write_commit_graph(const char *obj_dir,
@@ -895,9 +897,11 @@ void write_commit_graph(const char *obj_dir,
|
|
|
|
|
compute_generation_numbers(&commits, report_progress); |
|
|
|
|
|
|
|
|
|
graph_name = get_commit_graph_filename(obj_dir); |
|
|
|
|
if (safe_create_leading_directories(graph_name)) |
|
|
|
|
if (safe_create_leading_directories(graph_name)) { |
|
|
|
|
UNLEAK(graph_name); |
|
|
|
|
die_errno(_("unable to create leading directories of %s"), |
|
|
|
|
graph_name); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
hold_lock_file_for_update(&lk, graph_name, LOCK_DIE_ON_ERROR); |
|
|
|
|
f = hashfd(lk.tempfile->fd, lk.tempfile->filename.buf); |
|
|
|
@ -942,9 +946,9 @@ void write_commit_graph(const char *obj_dir,
@@ -942,9 +946,9 @@ void write_commit_graph(const char *obj_dir,
|
|
|
|
|
finalize_hashfile(f, NULL, CSUM_HASH_IN_STREAM | CSUM_FSYNC); |
|
|
|
|
commit_lock_file(&lk); |
|
|
|
|
|
|
|
|
|
free(graph_name); |
|
|
|
|
free(commits.list); |
|
|
|
|
free(oids.list); |
|
|
|
|
oids.alloc = 0; |
|
|
|
|
oids.nr = 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#define VERIFY_COMMIT_GRAPH_ERROR_HASH 2 |
|
|
|
|