revisions API users: add "goto cleanup" for release_revisions()
Add a release_revisions() to various users of "struct rev_info" which requires a minor refactoring to a "goto cleanup" pattern to use that function. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
5e480176fe
commit
0139c58ab9
@ -77,8 +77,12 @@ int cmd_diff_files(int argc, const char **argv, const char *prefix)
|
|||||||
|
|
||||||
if (read_cache_preload(&rev.diffopt.pathspec) < 0) {
|
if (read_cache_preload(&rev.diffopt.pathspec) < 0) {
|
||||||
perror("read_cache_preload");
|
perror("read_cache_preload");
|
||||||
return -1;
|
result = -1;
|
||||||
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
cleanup:
|
||||||
result = run_diff_files(&rev, options);
|
result = run_diff_files(&rev, options);
|
||||||
return diff_result_code(&rev.diffopt, result);
|
result = diff_result_code(&rev.diffopt, result);
|
||||||
|
release_revisions(&rev);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -500,6 +500,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
|
|||||||
int use_bitmap_index = 0;
|
int use_bitmap_index = 0;
|
||||||
int filter_provided_objects = 0;
|
int filter_provided_objects = 0;
|
||||||
const char *show_progress = NULL;
|
const char *show_progress = NULL;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
if (argc == 2 && !strcmp(argv[1], "-h"))
|
if (argc == 2 && !strcmp(argv[1], "-h"))
|
||||||
usage(rev_list_usage);
|
usage(rev_list_usage);
|
||||||
@ -583,7 +584,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
|
|||||||
}
|
}
|
||||||
if (!strcmp(arg, "--test-bitmap")) {
|
if (!strcmp(arg, "--test-bitmap")) {
|
||||||
test_bitmap_walk(&revs);
|
test_bitmap_walk(&revs);
|
||||||
return 0;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
if (skip_prefix(arg, "--progress=", &arg)) {
|
if (skip_prefix(arg, "--progress=", &arg)) {
|
||||||
show_progress = arg;
|
show_progress = arg;
|
||||||
@ -672,11 +673,11 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
|
|||||||
|
|
||||||
if (use_bitmap_index) {
|
if (use_bitmap_index) {
|
||||||
if (!try_bitmap_count(&revs, filter_provided_objects))
|
if (!try_bitmap_count(&revs, filter_provided_objects))
|
||||||
return 0;
|
goto cleanup;
|
||||||
if (!try_bitmap_disk_usage(&revs, filter_provided_objects))
|
if (!try_bitmap_disk_usage(&revs, filter_provided_objects))
|
||||||
return 0;
|
goto cleanup;
|
||||||
if (!try_bitmap_traversal(&revs, filter_provided_objects))
|
if (!try_bitmap_traversal(&revs, filter_provided_objects))
|
||||||
return 0;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prepare_revision_walk(&revs))
|
if (prepare_revision_walk(&revs))
|
||||||
@ -696,8 +697,10 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
|
|||||||
|
|
||||||
find_bisection(&revs.commits, &reaches, &all, bisect_flags);
|
find_bisection(&revs.commits, &reaches, &all, bisect_flags);
|
||||||
|
|
||||||
if (bisect_show_vars)
|
if (bisect_show_vars) {
|
||||||
return show_bisect_vars(&info, reaches, all);
|
ret = show_bisect_vars(&info, reaches, all);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filter_provided_objects) {
|
if (filter_provided_objects) {
|
||||||
@ -752,5 +755,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
|
|||||||
if (show_disk_usage)
|
if (show_disk_usage)
|
||||||
printf("%"PRIuMAX"\n", (uintmax_t)total_disk_usage);
|
printf("%"PRIuMAX"\n", (uintmax_t)total_disk_usage);
|
||||||
|
|
||||||
return 0;
|
cleanup:
|
||||||
|
release_revisions(&revs);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -917,6 +917,7 @@ static int show_stash(int argc, const char **argv, const char *prefix)
|
|||||||
cleanup:
|
cleanup:
|
||||||
strvec_clear(&stash_args);
|
strvec_clear(&stash_args);
|
||||||
free_stash_info(&info);
|
free_stash_info(&info);
|
||||||
|
release_revisions(&rev);
|
||||||
if (do_usage)
|
if (do_usage)
|
||||||
usage_with_options(git_stash_show_usage, options);
|
usage_with_options(git_stash_show_usage, options);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1232,6 +1232,7 @@ static int compute_summary_module_list(struct object_id *head_oid,
|
|||||||
struct strvec diff_args = STRVEC_INIT;
|
struct strvec diff_args = STRVEC_INIT;
|
||||||
struct rev_info rev;
|
struct rev_info rev;
|
||||||
struct module_cb_list list = MODULE_CB_LIST_INIT;
|
struct module_cb_list list = MODULE_CB_LIST_INIT;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
strvec_push(&diff_args, get_diff_cmd(diff_cmd));
|
strvec_push(&diff_args, get_diff_cmd(diff_cmd));
|
||||||
if (info->cached)
|
if (info->cached)
|
||||||
@ -1257,11 +1258,13 @@ static int compute_summary_module_list(struct object_id *head_oid,
|
|||||||
setup_work_tree();
|
setup_work_tree();
|
||||||
if (read_cache_preload(&rev.diffopt.pathspec) < 0) {
|
if (read_cache_preload(&rev.diffopt.pathspec) < 0) {
|
||||||
perror("read_cache_preload");
|
perror("read_cache_preload");
|
||||||
return -1;
|
ret = -1;
|
||||||
|
goto cleanup;
|
||||||
}
|
}
|
||||||
} else if (read_cache() < 0) {
|
} else if (read_cache() < 0) {
|
||||||
perror("read_cache");
|
perror("read_cache");
|
||||||
return -1;
|
ret = -1;
|
||||||
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (diff_cmd == DIFF_INDEX)
|
if (diff_cmd == DIFF_INDEX)
|
||||||
@ -1269,9 +1272,10 @@ static int compute_summary_module_list(struct object_id *head_oid,
|
|||||||
else
|
else
|
||||||
run_diff_files(&rev, 0);
|
run_diff_files(&rev, 0);
|
||||||
prepare_submodule_summary(info, &list);
|
prepare_submodule_summary(info, &list);
|
||||||
|
cleanup:
|
||||||
strvec_clear(&diff_args);
|
strvec_clear(&diff_args);
|
||||||
release_revisions(&rev);
|
release_revisions(&rev);
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int module_summary(int argc, const char **argv, const char *prefix)
|
static int module_summary(int argc, const char **argv, const char *prefix)
|
||||||
|
23
sequencer.c
23
sequencer.c
@ -5354,6 +5354,7 @@ int sequencer_make_script(struct repository *r, struct strbuf *out, int argc,
|
|||||||
int rebase_merges = flags & TODO_LIST_REBASE_MERGES;
|
int rebase_merges = flags & TODO_LIST_REBASE_MERGES;
|
||||||
int reapply_cherry_picks = flags & TODO_LIST_REAPPLY_CHERRY_PICKS;
|
int reapply_cherry_picks = flags & TODO_LIST_REAPPLY_CHERRY_PICKS;
|
||||||
int skipped_commit = 0;
|
int skipped_commit = 0;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
repo_init_revisions(r, &revs, NULL);
|
repo_init_revisions(r, &revs, NULL);
|
||||||
revs.verbose_header = 1;
|
revs.verbose_header = 1;
|
||||||
@ -5377,14 +5378,20 @@ int sequencer_make_script(struct repository *r, struct strbuf *out, int argc,
|
|||||||
pp.fmt = revs.commit_format;
|
pp.fmt = revs.commit_format;
|
||||||
pp.output_encoding = get_log_output_encoding();
|
pp.output_encoding = get_log_output_encoding();
|
||||||
|
|
||||||
if (setup_revisions(argc, argv, &revs, NULL) > 1)
|
if (setup_revisions(argc, argv, &revs, NULL) > 1) {
|
||||||
return error(_("make_script: unhandled options"));
|
ret = error(_("make_script: unhandled options"));
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
if (prepare_revision_walk(&revs) < 0)
|
if (prepare_revision_walk(&revs) < 0) {
|
||||||
return error(_("make_script: error preparing revisions"));
|
ret = error(_("make_script: error preparing revisions"));
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
if (rebase_merges)
|
if (rebase_merges) {
|
||||||
return make_script_with_merges(&pp, &revs, out, flags);
|
ret = make_script_with_merges(&pp, &revs, out, flags);
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
while ((commit = get_revision(&revs))) {
|
while ((commit = get_revision(&revs))) {
|
||||||
int is_empty = is_original_commit_empty(commit);
|
int is_empty = is_original_commit_empty(commit);
|
||||||
@ -5408,7 +5415,9 @@ int sequencer_make_script(struct repository *r, struct strbuf *out, int argc,
|
|||||||
if (skipped_commit)
|
if (skipped_commit)
|
||||||
advise_if_enabled(ADVICE_SKIPPED_CHERRY_PICKS,
|
advise_if_enabled(ADVICE_SKIPPED_CHERRY_PICKS,
|
||||||
_("use --reapply-cherry-picks to include skipped commits"));
|
_("use --reapply-cherry-picks to include skipped commits"));
|
||||||
return 0;
|
cleanup:
|
||||||
|
release_revisions(&revs);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -99,6 +99,7 @@ int cmd__fast_rebase(int argc, const char **argv)
|
|||||||
struct merge_result result;
|
struct merge_result result;
|
||||||
struct strbuf reflog_msg = STRBUF_INIT;
|
struct strbuf reflog_msg = STRBUF_INIT;
|
||||||
struct strbuf branch_name = STRBUF_INIT;
|
struct strbuf branch_name = STRBUF_INIT;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* test-tool stuff doesn't set up the git directory by default; need to
|
* test-tool stuff doesn't set up the git directory by default; need to
|
||||||
@ -137,13 +138,17 @@ int cmd__fast_rebase(int argc, const char **argv)
|
|||||||
revs.topo_order = 1;
|
revs.topo_order = 1;
|
||||||
strvec_pushl(&rev_walk_args, "", argv[4], "--not", argv[3], NULL);
|
strvec_pushl(&rev_walk_args, "", argv[4], "--not", argv[3], NULL);
|
||||||
|
|
||||||
if (setup_revisions(rev_walk_args.nr, rev_walk_args.v, &revs, NULL) > 1)
|
if (setup_revisions(rev_walk_args.nr, rev_walk_args.v, &revs, NULL) > 1) {
|
||||||
return error(_("unhandled options"));
|
ret = error(_("unhandled options"));
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
strvec_clear(&rev_walk_args);
|
strvec_clear(&rev_walk_args);
|
||||||
|
|
||||||
if (prepare_revision_walk(&revs) < 0)
|
if (prepare_revision_walk(&revs) < 0) {
|
||||||
return error(_("error preparing revisions"));
|
ret = error(_("error preparing revisions"));
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
init_merge_options(&merge_opt, the_repository);
|
init_merge_options(&merge_opt, the_repository);
|
||||||
memset(&result, 0, sizeof(result));
|
memset(&result, 0, sizeof(result));
|
||||||
@ -220,7 +225,10 @@ int cmd__fast_rebase(int argc, const char **argv)
|
|||||||
COMMIT_LOCK | SKIP_IF_UNCHANGED))
|
COMMIT_LOCK | SKIP_IF_UNCHANGED))
|
||||||
die(_("unable to write %s"), get_index_file());
|
die(_("unable to write %s"), get_index_file());
|
||||||
|
|
||||||
|
ret = (result.clean == 0);
|
||||||
|
cleanup:
|
||||||
strbuf_release(&reflog_msg);
|
strbuf_release(&reflog_msg);
|
||||||
strbuf_release(&branch_name);
|
strbuf_release(&branch_name);
|
||||||
return (result.clean == 0);
|
release_revisions(&revs);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user