From: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
To: git@vger.kernel.org
Cc: "Junio C Hamano" <gitster@pobox.com>,
"Martin Ågren" <martin.agren@gmail.com>,
"Elijah Newren" <newren@gmail.com>,
"Derrick Stolee" <derrickstolee@github.com>,
"brian m . carlson" <sandals@crustytoothpaste.net>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH v2 00/27] revision.[ch]: add and use release_revisions()
Date: Wed, 23 Mar 2022 21:31:50 +0100 [thread overview]
Message-ID: <cover-v2-00.27-00000000000-20220323T203149Z-avarab@gmail.com> (raw)
In-Reply-To: <cover-00.24-00000000000-20220309T123321Z-avarab@gmail.com>
This is a re-roll of the v1 of [1] now that 7391ecd338e (Merge branch
'ds/partial-bundles', 2022-03-21) has landed, which it had a conflict
with. I believe this v2 addresses all the feedback brought up on v1.
As the range-diff shows the v2 is a bit larger, I split up some
commits as suggested in review.
I've also rebased this locally on unsubmitted patches I have which
allow for testing that the tests we mark with SANITIZE=leak have a 1=1
correspondance with what we're marking as passing with
TEST_PASSES_SANITIZE_LEAK=true.
All of the individual commits here pass under that, so all the t/*.sh
changes are correct as far as exhaustively marking newly passing tests
with "TEST_PASSES_SANITIZE_LEAK=true" goes.
Now, as I was just about to submit this I noticed that Derrick has
submitted a follow-up series to 7391ecd338e[2]. It textually conflicts
with this one in a minor way, and the resolution is the following:
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index 5f6197a37bb..0c1d5586ed4 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -3796,7 +3796,6 @@ static void get_object_list(struct rev_info *revs, int ac, const char **av)
if (unpack_unreachable)
loosen_unused_packed_objects();
- release_revisions(&revs);
oid_array_clear(&recent_objects);
}
@@ -4189,6 +4188,8 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
cleanup:
strvec_clear(&rp);
+ UNLEAK(revs.diffopt);
+ release_revisions(&revs);
return 0;
}
The UNLEAK() there is new. At the tip of this series we pass (among
many others) t5313-pack-bounds-checks.sh, t5316-pack-delta-depth.sh,
t6114-keep-packs.sh under SANITIZE=leak. When I rebase Derrick's [2]
on top of this series it requires the addition of that UNLEAK().
I didn't look in any detail (didn't have time just now) into why that
now fails exactly, we do the relevant revs.diffopt allocation before.
There's also a trivial conflict here with brian m. carlson's
bc/stash-export series. This series moves the free_stash_info()
function around, so the conflict is the following:
<<<<<<< HEAD
fprintf_ln(stderr, _("No stash entries found."));
=======
free_stash_info(info);
if (!quiet)
fprintf_ln(stderr, _("No stash entries found."));
>>>>>>> origin/seen
[...]
<<<<<<< HEAD
if (get_oid(revision, &info->w_commit))
return error(_("%s is not a valid reference"), revision);
=======
if (get_oid_with_context(the_repository, revision,
GET_OID_QUIETLY | GET_OID_RETURN_FAILURE,
&info->w_commit, &unused)) {
if (!quiet)
error(_("%s is not a valid reference"), revision);
free_stash_info(info);
return -1;
}
>>>>>>> origin/seen
In both cases the solution is triavial: Keep brian's side, but delete
the two free_stash_info() calls, as we now call it in the invoking
function.
1. https://lore.kernel.org/git/cover-00.24-00000000000-20220309T123321Z-avarab@gmail.com/
2. https://lore.kernel.org/git/pull.1186.git.1647970119.gitgitgadget@gmail.com/
Ævar Arnfjörð Bjarmason (27):
t/helper/test-fast-rebase.c: don't leak "struct strbuf"
blame: use "goto cleanup" for cleanup_scoreboard()
string_list API users: use string_list_init_{no,}dup
format-patch: don't leak "extra_headers" or "ref_message_ids"
revision.[ch]: split freeing of revs->commit into a function
revision.[ch]: provide and start using a release_revisions()
revisions API users: add straightforward release_revisions()
revisions API users: use release_revisions() needing "{ 0 }" init
stash: always have the owner of "stash_info" free it
revisions API users: add "goto cleanup" for release_revisions()
revisions API users: use release_revisions() in http-push.c
revisions API users: use release_revisions() in builtin/log.c
revisions API users: use release_revisions() with UNLEAK()
revisions API users: use release_revisions() in submodule.c edge case
revisions API users: use release_revisions() for "prune_data" users
revisions API: have release_revisions() release "commits"
revisions API: have release_revisions() release "mailmap"
revisions API: have release_revisions() release "cmdline"
revisions API: have release_revisions() release "filter"
revisions API: have release_revisions() release "grep_filter"
revisions API: have release_revisions() release "prune_data"
revisions API: clear "boundary_commits" in release_revisions()
revisions API: release "reflog_info" in release revisions()
revisions API: call diff_free(&revs->pruning) in revisions_release()
revisions API: have release_revisions() release "date_mode"
revisions API: have release_revisions() release "topo_walk_info"
revisions API: add a TODO for diff_free(&revs->diffopt)
add-interactive.c | 3 +-
bisect.c | 20 ++++--
builtin/add.c | 3 +-
builtin/am.c | 3 +
builtin/bisect--helper.c | 2 +
builtin/blame.c | 4 +-
builtin/checkout.c | 3 +-
builtin/commit.c | 6 +-
builtin/describe.c | 2 +
builtin/diff-files.c | 8 ++-
builtin/diff-index.c | 5 +-
builtin/diff.c | 2 +-
builtin/fast-export.c | 1 +
builtin/log.c | 36 ++++++----
builtin/merge.c | 2 +
builtin/pack-objects.c | 2 +
builtin/prune.c | 1 +
builtin/reflog.c | 1 +
builtin/rev-list.c | 19 ++++--
builtin/shortlog.c | 8 ++-
builtin/stash.c | 77 +++++++++++-----------
builtin/submodule--helper.c | 14 ++--
bundle.c | 12 ++--
diff-lib.c | 8 ++-
fmt-merge-msg.c | 1 +
http-push.c | 3 +-
merge-ort.c | 1 +
merge-recursive.c | 5 +-
midx.c | 1 +
pack-bitmap-write.c | 1 +
range-diff.c | 2 +-
ref-filter.c | 1 +
reflog-walk.c | 24 ++++++-
reflog-walk.h | 1 +
remote.c | 1 +
revision.c | 68 ++++++++++++++++---
revision.h | 6 ++
sequencer.c | 26 ++++++--
shallow.c | 1 +
submodule.c | 5 +-
t/helper/test-fast-rebase.c | 23 +++++--
t/helper/test-revision-walking.c | 1 +
t/lib-git-svn.sh | 4 ++
t/t0056-git-C.sh | 1 +
t/t0062-revision-walking.sh | 1 +
t/t0100-previous.sh | 1 +
t/t0101-at-syntax.sh | 2 +
t/t1001-read-tree-m-2way.sh | 1 +
t/t1002-read-tree-m-u-2way.sh | 1 +
t/t1060-object-corruption.sh | 2 +
t/t1401-symbolic-ref.sh | 2 +
t/t1411-reflog-show.sh | 1 +
t/t1412-reflog-loop.sh | 2 +
t/t1415-worktree-refs.sh | 1 +
t/t2015-checkout-unborn.sh | 1 +
t/t2200-add-update.sh | 1 +
t/t3302-notes-index-expensive.sh | 1 +
t/t3303-notes-subtrees.sh | 1 +
t/t3305-notes-fanout.sh | 1 +
t/t3408-rebase-multi-line.sh | 1 +
t/t4021-format-patch-numbered.sh | 1 +
t/t4027-diff-submodule.sh | 1 +
t/t4028-format-patch-mime-headers.sh | 2 +
t/t4036-format-patch-signer-mime.sh | 1 +
t/t4039-diff-assume-unchanged.sh | 1 +
t/t4055-diff-context.sh | 1 +
t/t4066-diff-emit-delay.sh | 1 +
t/t4122-apply-symlink-inside.sh | 1 +
t/t4126-apply-empty.sh | 1 -
t/t4128-apply-root.sh | 1 +
t/t4206-log-follow-harder-copies.sh | 2 +
t/t4207-log-decoration-colors.sh | 1 +
t/t4212-log-corrupt.sh | 1 +
t/t5301-sliding-window.sh | 2 +
t/t5313-pack-bounds-checks.sh | 2 +
t/t5316-pack-delta-depth.sh | 2 +
t/t5320-delta-islands.sh | 2 +
t/t5322-pack-objects-sparse.sh | 1 +
t/t5506-remote-groups.sh | 1 +
t/t5513-fetch-track.sh | 1 +
t/t5515-fetch-merge-logic.sh | 1 +
t/t5518-fetch-exit-status.sh | 1 +
t/t5532-fetch-proxy.sh | 2 +
t/t5600-clone-fail-cleanup.sh | 1 +
t/t5900-repo-selection.sh | 2 +
t/t6002-rev-list-bisect.sh | 1 +
t/t6003-rev-list-topo-order.sh | 1 +
t/t6005-rev-list-count.sh | 1 +
t/t6018-rev-list-glob.sh | 1 +
t/t6100-rev-list-in-order.sh | 1 +
t/t6101-rev-parse-parents.sh | 1 +
t/t6110-rev-list-sparse.sh | 1 +
t/t6114-keep-packs.sh | 2 +
t/t6131-pathspec-icase.sh | 2 +
t/t7008-filter-branch-null-sha1.sh | 1 +
t/t7702-repack-cyclic-alternate.sh | 2 +
t/t9001-send-email.sh | 1 +
t/t9100-git-svn-basic.sh | 1 +
t/t9101-git-svn-props.sh | 2 +
t/t9104-git-svn-follow-parent.sh | 2 +
t/t9106-git-svn-commit-diff-clobber.sh | 2 +
t/t9115-git-svn-dcommit-funky-renames.sh | 1 +
t/t9116-git-svn-log.sh | 1 +
t/t9122-git-svn-author.sh | 2 +
t/t9127-git-svn-partial-rebuild.sh | 1 +
t/t9129-git-svn-i18n-commitencoding.sh | 1 +
t/t9132-git-svn-broken-symlink.sh | 1 +
t/t9139-git-svn-non-utf8-commitencoding.sh | 1 +
t/t9146-git-svn-empty-dirs.sh | 2 +
t/t9148-git-svn-propset.sh | 1 +
t/t9160-git-svn-preserve-empty-dirs.sh | 1 +
t/t9162-git-svn-dcommit-interactive.sh | 2 +
t/t9164-git-svn-dcommit-concurrent.sh | 2 +
t/t9501-gitweb-standalone-http-status.sh | 1 +
wt-status.c | 15 +++--
115 files changed, 402 insertions(+), 123 deletions(-)
Range-diff against v1:
1: 017c67c7540 = 1: 8fbafe61053 t/helper/test-fast-rebase.c: don't leak "struct strbuf"
2: db0b04e53a9 = 2: 77e7c2c321e blame: use "goto cleanup" for cleanup_scoreboard()
-: ----------- > 3: 151d1175905 string_list API users: use string_list_init_{no,}dup
3: ab1afe6c0c8 ! 4: 64a76629e23 format-patch: don't leak "extra_headers" or "ref_message_ids"
@@ Commit message
variable to hold it, to avoid the eventual cast from "const char *"
when we free() it.
- While we're at it let's also move to using string_list_init_nodup()
- instead of relying on calloc() implicitly coming up with the same
- result. See 770fedaf9fb (string-list.[ch]: add a
- string_list_init_{nodup,dup}(), 2021-07-01) for the introduction of
- the string_list_init_nodup() helper. The string_list_clear() here is
- redundant due to the *_nodup() initialization, but let's add it anyway
- for consistency with other API use.
-
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## builtin/log.c ##
@@ builtin/log.c: int cmd_format_patch(int argc, const char **argv, const char *pre
struct commit *commit;
struct commit **list = NULL;
struct rev_info rev;
-+ char *extra_headers = NULL;
++ char *to_free = NULL;
struct setup_revision_opt s_r_opt;
int nr = 0, total, i;
int use_stdout = 0;
@@ builtin/log.c: int cmd_format_patch(int argc, const char **argv, const char *pre
}
- rev.extra_headers = strbuf_detach(&buf, NULL);
-+ extra_headers = strbuf_detach(&buf, NULL);
-+ rev.extra_headers = extra_headers;
++ rev.extra_headers = to_free = strbuf_detach(&buf, NULL);
if (from) {
if (split_ident_line(&rev.from_ident, from, strlen(from)))
-@@ builtin/log.c: int cmd_format_patch(int argc, const char **argv, const char *prefix)
- prepare_bases(&bases, base, list, nr);
- }
-
-- if (in_reply_to || thread || cover_letter)
-- rev.ref_message_ids = xcalloc(1, sizeof(struct string_list));
-+ if (in_reply_to || thread || cover_letter) {
-+ rev.ref_message_ids = xmalloc(sizeof(*rev.ref_message_ids));
-+ string_list_init_nodup(rev.ref_message_ids);
-+ }
- if (in_reply_to) {
- const char *msgid = clean_message_id(in_reply_to);
- string_list_append(rev.ref_message_ids, msgid);
@@ builtin/log.c: int cmd_format_patch(int argc, const char **argv, const char *prefix)
strbuf_release(&rdiff1);
strbuf_release(&rdiff2);
strbuf_release(&rdiff_title);
-+ free(extra_headers);
-+ if (rev.ref_message_ids) {
++ free(to_free);
++ if (rev.ref_message_ids)
+ string_list_clear(rev.ref_message_ids, 0);
-+ free(rev.ref_message_ids);
-+ }
++ free(rev.ref_message_ids);
UNLEAK(rev);
return 0;
}
4: 763e0ab3425 = 5: 4c0718b43d7 revision.[ch]: split freeing of revs->commit into a function
5: b89dcadcc22 ! 6: 7194aac88e1 revision.[ch]: provide and start using a release_revisions()
@@ Commit message
to clear its "diffopt". I.e. we need to call release_revisions() after
we've inspected any state in "struct rev_info".
+ This leaves in place e.g. clear_pathspec(&rev.prune_data) in
+ stash_working_tree() in builtin/stash.c, subsequent commits will teach
+ release_revisions() to free "prune_data" and other members that in
+ some cases are individually cleared by users of "struct rev_info" by
+ reaching into its members. Those subsequent commits will remove the
+ relevant calls to e.g. clear_pathspec().
+
+ We avoid amending code in index_differs_from() in diff-lib.c as well
+ as wt_status_collect_changes_index(), has_unstaged_changes() and
+ has_uncommitted_changes() in wt-status.c in a way that assumes that we
+ are already clearing the "diffopt" member. That will be handled in a
+ subsequent commit.
+
1. https://lore.kernel.org/git/87a6k8daeu.fsf@evledraar.gmail.com/
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
@@ builtin/stash.c: static int stash_working_tree(struct stash_info *info, const st
return ret;
## diff-lib.c ##
-@@ diff-lib.c: int index_differs_from(struct repository *r,
- {
- struct rev_info rev;
- struct setup_revision_opt opt;
-+ unsigned int has_changes;
-
- repo_init_revisions(r, &rev, NULL);
- memset(&opt, 0, sizeof(opt));
@@ diff-lib.c: int index_differs_from(struct repository *r,
diff_flags_or(&rev.diffopt.flags, flags);
rev.diffopt.ita_invisible_in_index = ita_invisible_in_index;
run_diff_index(&rev, 1);
- object_array_clear(&rev.pending);
-- return (rev.diffopt.flags.has_changes != 0);
-+ has_changes = rev.diffopt.flags.has_changes;
+ release_revisions(&rev);
-+ return (has_changes != 0);
+ return (rev.diffopt.flags.has_changes != 0);
}
- static struct strbuf *idiff_prefix_cb(struct diff_options *opt, void *data)
## range-diff.c ##
@@ range-diff.c: int is_range_diff_range(const char *arg)
@@ revision.h: void repo_init_revisions(struct repository *r,
## wt-status.c ##
@@ wt-status.c: static void wt_status_collect_changes_index(struct wt_status *s)
- rev.diffopt.rename_score = s->rename_score >= 0 ? s->rename_score : rev.diffopt.rename_score;
+
copy_pathspec(&rev.prune_data, &s->pathspec);
run_diff_index(&rev, 1);
- object_array_clear(&rev.pending);
@@ wt-status.c: static void wt_status_collect_changes_index(struct wt_status *s)
clear_pathspec(&rev.prune_data);
}
+@@ wt-status.c: int has_unstaged_changes(struct repository *r, int ignore_submodules)
+ rev_info.diffopt.flags.quick = 1;
+ diff_setup_done(&rev_info.diffopt);
+ result = run_diff_files(&rev_info, 0);
++ release_revisions(&rev_info);
+ return diff_result_code(&rev_info.diffopt, result);
+ }
+
@@ wt-status.c: int has_uncommitted_changes(struct repository *r,
diff_setup_done(&rev_info.diffopt);
result = run_diff_index(&rev_info, 1);
- object_array_clear(&rev_info.pending);
-- return diff_result_code(&rev_info.diffopt, result);
-+ result = diff_result_code(&rev_info.diffopt, result);
+ release_revisions(&rev_info);
-+ return result;
+ return diff_result_code(&rev_info.diffopt, result);
}
- /**
6: b5d55539b6d = 7: 3cb36d358d6 revisions API users: add straightforward release_revisions()
7: 295fa35174f = 8: 42ad1208934 revisions API users: use release_revisions() needing "{ 0 }" init
-: ----------- > 9: 88289157533 stash: always have the owner of "stash_info" free it
8: 0f9d313b338 ! 10: eafe57663fc revisions API users: add "goto cleanup" for release_revisions()
@@ builtin/diff-files.c: int cmd_diff_files(int argc, const char **argv, const char
+ result = -1;
+ goto cleanup;
}
++cleanup:
result = run_diff_files(&rev, options);
- return diff_result_code(&rev.diffopt, result);
+ result = diff_result_code(&rev.diffopt, result);
-+cleanup:
+ release_revisions(&rev);
+ return result;
}
@@ builtin/rev-list.c: int cmd_rev_list(int argc, const char **argv, const char *pr
@@ builtin/rev-list.c: int cmd_rev_list(int argc, const char **argv, const char *prefix)
if (use_bitmap_index) {
- if (!try_bitmap_count(&revs, &filter_options, filter_provided_objects))
+ if (!try_bitmap_count(&revs, filter_provided_objects))
- return 0;
+ goto cleanup;
- if (!try_bitmap_disk_usage(&revs, &filter_options, filter_provided_objects))
+ if (!try_bitmap_disk_usage(&revs, filter_provided_objects))
- return 0;
+ goto cleanup;
- if (!try_bitmap_traversal(&revs, &filter_options, filter_provided_objects))
+ if (!try_bitmap_traversal(&revs, filter_provided_objects))
- return 0;
+ goto cleanup;
}
@@ builtin/rev-list.c: int cmd_rev_list(int argc, const char **argv, const char *pr
## builtin/stash.c ##
@@ builtin/stash.c: static int show_stash(int argc, const char **argv, const char *prefix)
-
- ret = get_stash_info(&info, stash_args.nr, stash_args.v);
+ cleanup:
strvec_clear(&stash_args);
-- if (ret)
-- return -1;
-+ if (ret) {
-+ ret = -1;
-+ goto cleanup;
-+ }
-
- /*
- * The config settings are applied only if there are not passed
-@@ builtin/stash.c: static int show_stash(int argc, const char **argv, const char *prefix)
-
- if (!show_stat && !show_patch) {
- free_stash_info(&info);
-- return 0;
-+ ret = 0;
-+ goto cleanup;
- }
- }
-
-@@ builtin/stash.c: static int show_stash(int argc, const char **argv, const char *prefix)
- log_tree_diff_flush(&rev);
-
free_stash_info(&info);
-- return diff_result_code(&rev.diffopt, 0);
-+ ret = diff_result_code(&rev.diffopt, 0);
-+cleanup:
+ release_revisions(&rev);
-+ return ret;
+ return ret;
}
- static int do_store_stash(const struct object_id *w_commit, const char *stash_msg,
## builtin/submodule--helper.c ##
@@ builtin/submodule--helper.c: static int compute_summary_module_list(struct object_id *head_oid,
@@ builtin/submodule--helper.c: static int compute_summary_module_list(struct objec
else
run_diff_files(&rev, 0);
prepare_submodule_summary(info, &list);
-+ ret = 0;
+cleanup:
strvec_clear(&diff_args);
release_revisions(&rev);
@@ t/helper/test-fast-rebase.c: int cmd__fast_rebase(int argc, const char **argv)
- if (setup_revisions(rev_walk_args.nr, rev_walk_args.v, &revs, NULL) > 1)
- return error(_("unhandled options"));
+ if (setup_revisions(rev_walk_args.nr, rev_walk_args.v, &revs, NULL) > 1) {
-+ ret = error(_("unhandled options"));
++ ret = error(_("unhandled options"));
+ goto cleanup;
+ }
@@ t/helper/test-fast-rebase.c: int cmd__fast_rebase(int argc, const char **argv)
init_merge_options(&merge_opt, the_repository);
memset(&result, 0, sizeof(result));
@@ t/helper/test-fast-rebase.c: int cmd__fast_rebase(int argc, const char **argv)
- if (write_locked_index(&the_index, &lock,
COMMIT_LOCK | SKIP_IF_UNCHANGED))
die(_("unable to write %s"), get_index_file());
--
+
+ ret = (result.clean == 0);
+cleanup:
strbuf_release(&reflog_msg);
9: 8f93b87f369 = 11: 6fb2caf4d17 revisions API users: use release_revisions() in http-push.c
10: a89f0da4fd7 ! 12: 74818bc372f revisions API users: use release_revisions() in builtin/log.c
@@ builtin/log.c: int cmd_log(int argc, const char **argv, const char *prefix)
/* format-patch */
@@ builtin/log.c: int cmd_format_patch(int argc, const char **argv, const char *prefix)
+ if (rev.ref_message_ids)
string_list_clear(rev.ref_message_ids, 0);
- free(rev.ref_message_ids);
- }
+ free(rev.ref_message_ids);
- UNLEAK(rev);
- return 0;
+ return cmd_log_deinit(0, &rev);
11: a93c8838257 = 13: 8717e6e8471 revisions API users: use release_revisions() with UNLEAK()
12: 8811a5ca840 = 14: 38f4f1c4ecb revisions API users: use release_revisions() in submodule.c edge case
14: 761bbd1763c = 15: 566b739ac6c revisions API users: use release_revisions() for "prune_data" users
15: 4a0adf6fd00 = 16: bc36810e56e revisions API: have release_revisions() release "commits"
16: 1a988c96371 ! 17: a93251edf85 revisions API: have release_revisions() release "mailmap"
@@ builtin/commit.c: static const char *find_author_by_nickname(const char *name)
struct commit *commit;
struct strbuf buf = STRBUF_INIT;
- struct string_list mailmap = STRING_LIST_INIT_NODUP;
-+ struct string_list *mailmap = xmalloc(sizeof(struct string_list));
const char *av[20];
int ac = 0;
@@ builtin/commit.c: static const char *find_author_by_nickname(const char *name)
av[++ac] = NULL;
setup_revisions(ac, av, &revs, NULL);
- revs.mailmap = &mailmap;
-+ string_list_init_nodup(mailmap);
-+ revs.mailmap = mailmap;
++ revs.mailmap = xmalloc(sizeof(struct string_list));
++ string_list_init_nodup(revs.mailmap);
read_mailmap(revs.mailmap);
if (prepare_revision_walk(&revs))
@@ t/t0056-git-C.sh
test_expect_success '"git -C <path>" runs git from the directory <path>' '
+ ## t/t3302-notes-index-expensive.sh ##
+@@ t/t3302-notes-index-expensive.sh: test_description='Test commit notes index (expensive!)'
+ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
+ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+
++TEST_PASSES_SANITIZE_LEAK=true
+ . ./test-lib.sh
+
+ create_repo () {
+
## t/t4055-diff-context.sh ##
@@
@@ t/t7008-filter-branch-null-sha1.sh
test_description='filter-branch removal of trees with null sha1'
+
-+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
test_expect_success 'setup: base commits' '
17: b5687ed1355 ! 18: 424fac7ab95 revisions API: have release_revisions() release "cmdline"
@@ t/t1060-object-corruption.sh
test_description='see how we handle various forms of corruption'
+
-+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
# convert "1234abcd" to ".git/objects/12/34abcd"
- ## t/t2015-checkout-unborn.sh ##
-@@ t/t2015-checkout-unborn.sh: test_description='checkout from unborn branch'
+ ## t/t3303-notes-subtrees.sh ##
+@@ t/t3303-notes-subtrees.sh: test_description='Test commit notes organized in subtrees'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
- test_expect_success 'setup' '
+ number_of_commits=100
- ## t/t3408-rebase-multi-line.sh ##
-@@ t/t3408-rebase-multi-line.sh: test_description='rebasing a commit with multi-line first paragraph.'
- GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
- export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+ ## t/t3305-notes-fanout.sh ##
+@@
+
+ test_description='Test that adding/removing many notes triggers automatic fanout restructuring'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
- test_expect_success setup '
+ path_has_fanout() {
- ## t/t4207-log-decoration-colors.sh ##
-@@ t/t4207-log-decoration-colors.sh: test_description='Test for "git log --decorate" colors'
+ ## t/t3408-rebase-multi-line.sh ##
+@@ t/t3408-rebase-multi-line.sh: test_description='rebasing a commit with multi-line first paragraph.'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
@@ t/t4207-log-decoration-colors.sh: test_description='Test for "git log --decorate
test_expect_success setup '
- ## t/t4212-log-corrupt.sh ##
+ ## t/t4027-diff-submodule.sh ##
@@
- test_description='git log with invalid commit headers'
+ test_description='difference in submodules'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
+ . "$TEST_DIRECTORY"/lib-diff.sh
- test_expect_success 'setup' '
- ## t/t5313-pack-bounds-checks.sh ##
+ ## t/t4128-apply-root.sh ##
@@
- #!/bin/sh
- test_description='bounds-checking of access to mmapped on-disk file formats'
-+
-+TEST_PASSES_SANITIZE_LEAK=true
- . ./test-lib.sh
-
- clear_base () {
-
- ## t/t5322-pack-objects-sparse.sh ##
-@@ t/t5322-pack-objects-sparse.sh: test_description='pack-objects object selection using sparse algorithm'
- GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
- export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
-
-+TEST_PASSES_SANITIZE_LEAK=true
- . ./test-lib.sh
-
- test_expect_success 'setup repo' '
-
- ## t/t5506-remote-groups.sh ##
-@@ t/t5506-remote-groups.sh: test_description='git remote group handling'
- GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
- export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+ test_description='apply same filename'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
- mark() {
+ test_expect_success 'setup' '
- ## t/t5513-fetch-track.sh ##
+ ## t/t4212-log-corrupt.sh ##
@@
- test_description='fetch follows remote-tracking branches correctly'
+ test_description='git log with invalid commit headers'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
- test_expect_success setup '
+ test_expect_success 'setup' '
## t/t5515-fetch-merge-logic.sh ##
@@ t/t5515-fetch-merge-logic.sh: export GIT_TEST_PROTOCOL_VERSION
@@ t/t5518-fetch-exit-status.sh: test_description='fetch exit status test'
test_expect_success setup '
- ## t/t5532-fetch-proxy.sh ##
-@@
- #!/bin/sh
-
- test_description='fetching via git:// using core.gitproxy'
-+
-+TEST_PASSES_SANITIZE_LEAK=true
- . ./test-lib.sh
-
- test_expect_success 'setup remote repo' '
-
- ## t/t5900-repo-selection.sh ##
-@@
- #!/bin/sh
-
- test_description='selecting remote repo in ambiguous cases'
-+
-+TEST_PASSES_SANITIZE_LEAK=true
- . ./test-lib.sh
-
- reset() {
-
## t/t6002-rev-list-bisect.sh ##
@@
#
@@ t/t6003-rev-list-topo-order.sh
. "$TEST_DIRECTORY"/lib-t6000.sh # t6xxx specific functions
- ## t/t6018-rev-list-glob.sh ##
-@@ t/t6018-rev-list-glob.sh: test_description='rev-list/rev-parse --glob'
- GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
- export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+ ## t/t6005-rev-list-count.sh ##
+@@
+
+ test_description='git rev-list --max-count and --skip test'
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
- commit () {
+ test_expect_success 'setup' '
- ## t/t6019-rev-list-ancestry-path.sh ##
-@@ t/t6019-rev-list-ancestry-path.sh: test_description='--ancestry-path'
+ ## t/t6018-rev-list-glob.sh ##
+@@ t/t6018-rev-list-glob.sh: test_description='rev-list/rev-parse --glob'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+TEST_PASSES_SANITIZE_LEAK=true
. ./test-lib.sh
- test_merge () {
+ commit () {
## t/t6100-rev-list-in-order.sh ##
@@
@@ t/t6100-rev-list-in-order.sh
test_expect_success 'setup a commit history with trees, blobs' '
- ## t/t6101-rev-parse-parents.sh ##
-@@ t/t6101-rev-parse-parents.sh: test_description='Test git rev-parse with different parent options'
- GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
- export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
-
-+TEST_PASSES_SANITIZE_LEAK=true
- . ./test-lib.sh
-
- test_cmp_rev_output () {
-
- ## t/t6114-keep-packs.sh ##
-@@
- #!/bin/sh
-
- test_description='rev-list with .keep packs'
-+
-+TEST_PASSES_SANITIZE_LEAK=true
- . ./test-lib.sh
-
- test_expect_success 'setup' '
-
- ## t/t7702-repack-cyclic-alternate.sh ##
-@@
- #
-
- test_description='repack involving cyclic alternate'
-+
-+TEST_PASSES_SANITIZE_LEAK=true
- . ./test-lib.sh
-
- test_expect_success setup '
-
## t/t9100-git-svn-basic.sh ##
@@ t/t9100-git-svn-basic.sh: test_description='git svn basic tests'
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
@@ t/t9106-git-svn-commit-diff-clobber.sh
test_expect_success 'initialize repo' '
+ ## t/t9115-git-svn-dcommit-funky-renames.sh ##
+@@
+
+ test_description='git svn dcommit can commit renames of files with ugly names'
+
++TEST_FAILS_SANITIZE_LEAK=true
+ . ./lib-git-svn.sh
+
+ test_expect_success 'load repository with strange names' '
+
+ ## t/t9116-git-svn-log.sh ##
+@@
+ #
+
+ test_description='git svn log tests'
++
++TEST_FAILS_SANITIZE_LEAK=true
+ . ./lib-git-svn.sh
+
+ test_expect_success 'setup repository and import' '
+
## t/t9122-git-svn-author.sh ##
@@
#!/bin/sh
@@ t/t9122-git-svn-author.sh
test_expect_success 'setup svn repository' '
- ## t/t9129-git-svn-i18n-commitencoding.sh ##
+ ## t/t9127-git-svn-partial-rebuild.sh ##
@@
+ #
- test_description='git svn honors i18n.commitEncoding in config'
-
+ test_description='git svn partial-rebuild tests'
++
+TEST_FAILS_SANITIZE_LEAK=true
. ./lib-git-svn.sh
- compare_git_head_with () {
+ test_expect_success 'initialize svnrepo' '
- ## t/t9139-git-svn-non-utf8-commitencoding.sh ##
+ ## t/t9129-git-svn-i18n-commitencoding.sh ##
@@
- test_description='git svn refuses to dcommit non-UTF8 messages'
+ test_description='git svn honors i18n.commitEncoding in config'
+TEST_FAILS_SANITIZE_LEAK=true
. ./lib-git-svn.sh
- # ISO-2022-JP can pass for valid UTF-8, so skipping that in this test
+ compare_git_head_with () {
- ## t/t9148-git-svn-propset.sh ##
+ ## t/t9132-git-svn-broken-symlink.sh ##
@@
- test_description='git svn propset tests'
+ test_description='test that git handles an svn repository with empty symlinks'
+TEST_FAILS_SANITIZE_LEAK=true
. ./lib-git-svn.sh
-
- test_expect_success 'setup propset via import' '
+ test_expect_success 'load svn dumpfile' '
+ svnadmin load "$rawsvnrepo" <<EOF
- ## t/t9151-svn-mergeinfo.sh ##
+ ## t/t9139-git-svn-non-utf8-commitencoding.sh ##
@@
- test_description='git-svn svn mergeinfo properties'
+ test_description='git svn refuses to dcommit non-UTF8 messages'
+TEST_FAILS_SANITIZE_LEAK=true
. ./lib-git-svn.sh
- test_expect_success 'load svn dump' "
+ # ISO-2022-JP can pass for valid UTF-8, so skipping that in this test
- ## t/t9157-git-svn-fetch-merge.sh ##
+ ## t/t9146-git-svn-empty-dirs.sh ##
@@
- #
+ # Copyright (c) 2009 Eric Wong
- test_description='git svn merge detection'
+ test_description='git svn creates empty directories'
+
+TEST_FAILS_SANITIZE_LEAK=true
. ./lib-git-svn.sh
- svn_ver="$(svn --version --quiet)"
+ test_expect_success 'initialize repo' '
- ## t/t9159-git-svn-no-parent-mergeinfo.sh ##
+ ## t/t9148-git-svn-propset.sh ##
@@
- #!/bin/sh
- test_description='git svn handling of root commits in merge ranges'
-+
+
+ test_description='git svn propset tests'
+
+TEST_FAILS_SANITIZE_LEAK=true
. ./lib-git-svn.sh
- svn_ver="$(svn --version --quiet)"
+ test_expect_success 'setup propset via import' '
- ## t/t9161-git-svn-mergeinfo-push.sh ##
+ ## t/t9151-svn-mergeinfo.sh ##
@@
- test_description='git-svn svn mergeinfo propagation'
+ test_description='git-svn svn mergeinfo properties'
+TEST_FAILS_SANITIZE_LEAK=true
. ./lib-git-svn.sh
test_expect_success 'load svn dump' "
+ ## t/t9160-git-svn-preserve-empty-dirs.sh ##
+@@ t/t9160-git-svn-preserve-empty-dirs.sh: This test uses git to clone a Subversion repository that contains empty
+ directories, and checks that corresponding directories are created in the
+ local Git repository with placeholder files.'
+
++TEST_FAILS_SANITIZE_LEAK=true
+ . ./lib-git-svn.sh
+
+ GIT_REPO=git-svn-repo
+
## t/t9162-git-svn-dcommit-interactive.sh ##
@@
# Copyright (c) 2011 Frédéric Heitzmann
@@ t/t9162-git-svn-dcommit-interactive.sh
test_expect_success 'initialize repo' '
- ## t/t9163-git-svn-reset-clears-caches.sh ##
-@@ t/t9163-git-svn-reset-clears-caches.sh: test_description='git svn reset clears memoized caches'
- GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
- export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
-
-+TEST_FAILS_SANITIZE_LEAK=true
- . ./lib-git-svn.sh
-
- svn_ver="$(svn --version --quiet)"
-
- ## t/t9165-git-svn-fetch-merge-branch-of-branch.sh ##
+ ## t/t9164-git-svn-dcommit-concurrent.sh ##
@@
#
- test_description='git svn merge detection'
+ test_description='concurrent git svn dcommit'
+
+TEST_FAILS_SANITIZE_LEAK=true
. ./lib-git-svn.sh
- svn_ver="$(svn --version --quiet)"
+
- ## t/t9166-git-svn-fetch-merge-branch-of-branch2.sh ##
-@@
- #
+ ## t/t9501-gitweb-standalone-http-status.sh ##
+@@ t/t9501-gitweb-standalone-http-status.sh: code and message.'
+ GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
+ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
- test_description='git svn merge detection'
-+
-+TEST_FAILS_SANITIZE_LEAK=true
- . ./lib-git-svn.sh
++TEST_PASSES_SANITIZE_LEAK=true
+ . ./lib-gitweb.sh
- svn_ver="$(svn --version --quiet)"
+ #
-: ----------- > 19: d5b7a8a690e revisions API: have release_revisions() release "filter"
18: fc486e1bc46 ! 20: 857880bb4b6 revisions API: have release_revisions() release "grep_filter"
@@ Commit message
revisions API: have release_revisions() release "grep_filter"
Extend the the release_revisions() function so that it frees the
- "grep_filter" in the "struct ref_info".
+ "grep_filter" in the "struct ref_info".This allows us to mark a test
+ as passing under "TEST_PASSES_SANITIZE_LEAK=true".
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## revision.c ##
@@ revision.c: void release_revisions(struct rev_info *revs)
- object_array_clear(&revs->pending);
release_revisions_cmdline(&revs->cmdline);
+ list_objects_filter_release(&revs->filter);
release_revisions_mailmap(revs->mailmap);
+ free_grep_patterns(&revs->grep_filter);
}
static void add_child(struct rev_info *revs, struct commit *parent, struct commit *child)
+
+ ## t/t9151-svn-mergeinfo.sh ##
+@@
+
+ test_description='git-svn svn mergeinfo properties'
+
+-TEST_FAILS_SANITIZE_LEAK=true
+ . ./lib-git-svn.sh
+
+ test_expect_success 'load svn dump' "
19: b5948be0d4e ! 21: f98d473f08e revisions API: have release_revisions() release "prune_data"
@@ diff-lib.c: int do_diff_cache(const struct object_id *tree_oid, struct diff_opti
## revision.c ##
@@ revision.c: void release_revisions(struct rev_info *revs)
- release_revisions_commit_list(revs);
object_array_clear(&revs->pending);
release_revisions_cmdline(&revs->cmdline);
+ list_objects_filter_release(&revs->filter);
+ clear_pathspec(&revs->prune_data);
release_revisions_mailmap(revs->mailmap);
free_grep_patterns(&revs->grep_filter);
20: fa53e81c7c0 ! 22: 827430315fa revisions API: clear "boundary_commits" in release_revisions()
@@ Commit message
revisions API: clear "boundary_commits" in release_revisions()
Clear the "boundary_commits" object_array in release_revisions(). This
- makes a *lot* of tests pass under SANITIZE=leak, including most of the
- t/t[0-9]*git-svn*.sh tests.
+ makes a few more tests pass under SANITIZE=leak, including
+ "t/t4126-apply-empty.sh" which started failed as an UNLEAK() in
+ cmd_format_patch() was removed in a preceding commit.
- This includes the tests we had false-positive passes on before my
- 6798b08e848 (perl Git.pm: don't ignore signalled failure in
- _cmd_close(), 2022-02-01), now they pass for real.
-
- Since there are 66 tests matching t/t[0-9]*git-svn*.sh it's easier to
- list those that don't pass than to touch most of those 66. So let's
- introduce a "TEST_FAILS_SANITIZE_LEAK=true", which if set in the tests
- won't cause lib-git-svn.sh to set "TEST_PASSES_SANITIZE_LEAK=true.
-
- This change also marks all the tests that we removed
- "TEST_FAILS_SANITIZE_LEAK=true" from in an earlier commit due to
- removing the UNLEAK() from cmd_format_patch(), we can now assert that
- its API use doesn't leak any "struct rev_info" memory.
+ This also re-marks the various tests relying on "git format-patch" as
+ passing under "SANITIZE=leak", in the preceding "revisions API users:
+ use release_revisions() in builtin/log.c" commit those were marked as
+ failing as we removed the UNLEAK(rev) from cmd_format_patch() in
+ "builtin/log.c".
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## revision.c ##
@@ revision.c: void release_revisions(struct rev_info *revs)
+ return;
release_revisions_commit_list(revs);
object_array_clear(&revs->pending);
- release_revisions_cmdline(&revs->cmdline);
+ object_array_clear(&revs->boundary_commits);
+ release_revisions_cmdline(&revs->cmdline);
+ list_objects_filter_release(&revs->filter);
clear_pathspec(&revs->prune_data);
- release_revisions_mailmap(revs->mailmap);
- free_grep_patterns(&revs->grep_filter);
## t/t4021-format-patch-numbered.sh ##
@@
@@ t/t9001-send-email.sh: test_description='git send-email'
. ./test-lib.sh
# May be altered later in the test
+
+ ## t/t9116-git-svn-log.sh ##
+@@
+
+ test_description='git svn log tests'
+
+-TEST_FAILS_SANITIZE_LEAK=true
+ . ./lib-git-svn.sh
+
+ test_expect_success 'setup repository and import' '
21: ccf276641d6 ! 23: c559b7d538b revisions API: release "reflog_info" in release revisions()
@@ Commit message
## reflog-walk.c ##
@@
- #include "reflog-walk.h"
struct complete_reflogs {
-- char *ref;
-+ const char *ref;
- const char *short_ref;
+ char *ref;
+- const char *short_ref;
++ char *short_ref;
struct reflog_info {
struct object_id ooid, noid;
+ char *email;
@@ reflog-walk.c: static void free_complete_reflog(struct complete_reflogs *array)
- free(array->items[i].message);
}
free(array->items);
-- free(array->ref);
-+ free((char *)array->ref);
-+ free((char *)array->short_ref);
+ free(array->ref);
++ free(array->short_ref);
free(array);
}
22: f387b9e744a ! 24: c3a22f5b474 revisions API: call diff_free(&revs->pruning) in revisions_release()
@@ Metadata
## Commit message ##
revisions API: call diff_free(&revs->pruning) in revisions_release()
- Call diff_free() on the "pruning" member of "struct rev_info". We'll
- handle the "diffopt" member of the same type some other time, doing so
- will require us to untangle the "no_free" conditions I added in
- e900d494dcf (diff: add an API for deferred freeing, 2021-02-11).
-
- Even without "diffopt" addressing leaks in "pruning" makes several
- tests pass under SANITIZE=leak.
+ Call diff_free() on the "pruning" member of "struct rev_info". Doing
+ so makes several tests pass under SANITIZE=leak.
This was also the last missing piece that allows us to remove the
UNLEAK() in "cmd_diff" and "cmd_diff_index", which allows us to use
@@ revision.c: void release_revisions(struct rev_info *revs)
clear_pathspec(&revs->prune_data);
release_revisions_mailmap(revs->mailmap);
free_grep_patterns(&revs->grep_filter);
-+ /* TODO (need to handle "no_free"): diff_free(&revs->diffopt) */
+ diff_free(&revs->pruning);
reflog_walk_info_release(revs->reflog_info);
}
- ## t/t2016-checkout-patch.sh ##
-@@
+ ## t/t1001-read-tree-m-2way.sh ##
+@@ t/t1001-read-tree-m-2way.sh: In the test, these paths are used:
+ yomin - not in H or M
+ '
+
++TEST_PASSES_SANITIZE_LEAK=true
+ . ./test-lib.sh
+ . "$TEST_DIRECTORY"/lib-read-tree.sh
- test_description='git checkout --patch'
+
+ ## t/t1002-read-tree-m-u-2way.sh ##
+@@ t/t1002-read-tree-m-u-2way.sh: This is identical to t1001, but uses -u to update the work tree as well.
+
+ '
+TEST_PASSES_SANITIZE_LEAK=true
- . ./lib-patch-mode.sh
+ . ./test-lib.sh
+ . "$TEST_DIRECTORY"/lib-read-tree.sh
+
+
+ ## t/t2200-add-update.sh ##
+@@ t/t2200-add-update.sh: only the updates to dir/sub.
+ Also tested are "git add -u" without limiting, and "git add -u"
+ without contents changes, and other conditions'
+
++TEST_PASSES_SANITIZE_LEAK=true
+ . ./test-lib.sh
- test_expect_success PERL 'setup' '
+ test_expect_success setup '
## t/t4039-diff-assume-unchanged.sh ##
@@
23: fd457f0d85c ! 25: dabbb430ece revisions API: have release_revisions() release "date_mode"
@@ Commit message
## revision.c ##
@@ revision.c: void release_revisions(struct rev_info *revs)
release_revisions_cmdline(&revs->cmdline);
- object_array_clear(&revs->boundary_commits);
+ list_objects_filter_release(&revs->filter);
clear_pathspec(&revs->prune_data);
+ date_mode_release(&revs->date_mode);
release_revisions_mailmap(revs->mailmap);
free_grep_patterns(&revs->grep_filter);
- /* TODO (need to handle "no_free"): diff_free(&revs->diffopt) */
+ diff_free(&revs->pruning);
24: e02a097b884 ! 26: 644d1b54afe revisions API: have release_revisions() release "topo_walk_info"
@@ revision.c: static void release_revisions_mailmap(struct string_list *mailmap)
{
if (!revs)
@@ revision.c: void release_revisions(struct rev_info *revs)
- /* TODO (need to handle "no_free"): diff_free(&revs->diffopt) */
+ free_grep_patterns(&revs->grep_filter);
diff_free(&revs->pruning);
reflog_walk_info_release(revs->reflog_info);
+ release_revisions_topo_walk_info(revs->topo_walk_info);
@@ revision.c: static void compute_indegrees_to_depth(struct rev_info *revs,
clear_author_date_slab(&info->author_date);
+ free(info);
+}
-+
-+static void reset_topo_walk(struct rev_info *revs)
-+{
-+ struct topo_walk_info *info = revs->topo_walk_info;
- FREE_AND_NULL(revs->topo_walk_info);
-+ release_revisions_topo_walk_info(info);
++static void reset_topo_walk(struct rev_info *revs)
++{
++ release_revisions_topo_walk_info(revs->topo_walk_info);
+ revs->topo_walk_info = NULL;
}
13: d18bfa5691f ! 27: 2a4d50a0ec8 revisions API users: use release_revisions() in wt-status.c edge case
@@ Metadata
Author: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
## Commit message ##
- revisions API users: use release_revisions() in wt-status.c edge case
+ revisions API: add a TODO for diff_free(&revs->diffopt)
- Use release_revisions() for the "struct rev_info" in
- has_unstaged_changes() which didn't require the addition of a "goto"
- pattern, but needed us to refactor another "return fn(...)" pattern.
+ Add a TODO comment indicating that we should release "diffopt" in
+ release_revisions(). In a preceding commit we started releasing the
+ "pruning" member of the same type, but handling "diffopt" will require
+ us to untangle the "no_free" conditions I added in e900d494dcf (diff:
+ add an API for deferred freeing, 2021-02-11).
- This change is split from preceding changes to make similar
- conversions in those commits easier to review, as they are all
- repetitions of the same pattern.
+ Let's leave a TODO comment to that effect, and so that we don't forget
+ refactor code that was changed to use release_revisions() in earlier
+ commits to stop using the "diffopt" member after a call to
+ release_revisions(). This works currently, but would become a logic
+ error as soon as we started freeing "diffopt". Doing that change now
+ doesn't harm anything, and future-proofs us against a later change to
+ release_revisions().
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ ## diff-lib.c ##
+@@ diff-lib.c: int index_differs_from(struct repository *r,
+ {
+ struct rev_info rev;
+ struct setup_revision_opt opt;
++ unsigned has_changes;
+
+ repo_init_revisions(r, &rev, NULL);
+ memset(&opt, 0, sizeof(opt));
+@@ diff-lib.c: int index_differs_from(struct repository *r,
+ diff_flags_or(&rev.diffopt.flags, flags);
+ rev.diffopt.ita_invisible_in_index = ita_invisible_in_index;
+ run_diff_index(&rev, 1);
++ has_changes = rev.diffopt.flags.has_changes;
+ release_revisions(&rev);
+- return (rev.diffopt.flags.has_changes != 0);
++ return (has_changes != 0);
+ }
+
+ static struct strbuf *idiff_prefix_cb(struct diff_options *opt, void *data)
+
+ ## revision.c ##
+@@ revision.c: void release_revisions(struct rev_info *revs)
+ date_mode_release(&revs->date_mode);
+ release_revisions_mailmap(revs->mailmap);
+ free_grep_patterns(&revs->grep_filter);
++ /* TODO (need to handle "no_free"): diff_free(&revs->diffopt) */
+ diff_free(&revs->pruning);
+ reflog_walk_info_release(revs->reflog_info);
+ release_revisions_topo_walk_info(revs->topo_walk_info);
+
## wt-status.c ##
@@ wt-status.c: int has_unstaged_changes(struct repository *r, int ignore_submodules)
rev_info.diffopt.flags.quick = 1;
diff_setup_done(&rev_info.diffopt);
result = run_diff_files(&rev_info, 0);
++ result = diff_result_code(&rev_info.diffopt, result);
+ release_revisions(&rev_info);
- return diff_result_code(&rev_info.diffopt, result);
++ return result;
+ }
+
+ /**
+@@ wt-status.c: int has_uncommitted_changes(struct repository *r,
+
+ diff_setup_done(&rev_info.diffopt);
+ result = run_diff_index(&rev_info, 1);
+ result = diff_result_code(&rev_info.diffopt, result);
-+ release_revisions(&rev_info);
+ release_revisions(&rev_info);
+- return diff_result_code(&rev_info.diffopt, result);
+ return result;
}
--
2.35.1.1452.ga7cfc89151f
next prev parent reply other threads:[~2022-03-23 20:32 UTC|newest]
Thread overview: 252+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-09 13:16 [PATCH 00/24] revision.[ch]: add and use release_revisions() Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 01/24] t/helper/test-fast-rebase.c: don't leak "struct strbuf" Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 02/24] blame: use "goto cleanup" for cleanup_scoreboard() Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 03/24] format-patch: don't leak "extra_headers" or "ref_message_ids" Ævar Arnfjörð Bjarmason
2022-03-09 20:34 ` Taylor Blau
2022-03-09 13:16 ` [PATCH 04/24] revision.[ch]: split freeing of revs->commit into a function Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 05/24] revision.[ch]: provide and start using a release_revisions() Ævar Arnfjörð Bjarmason
2022-03-09 21:32 ` Taylor Blau
2022-03-09 22:57 ` Junio C Hamano
2022-03-10 0:28 ` Ævar Arnfjörð Bjarmason
2022-03-10 1:11 ` Junio C Hamano
2022-03-10 14:57 ` Ævar Arnfjörð Bjarmason
2022-03-10 14:56 ` Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 06/24] revisions API users: add straightforward release_revisions() Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 07/24] revisions API users: use release_revisions() needing "{ 0 }" init Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 08/24] revisions API users: add "goto cleanup" for release_revisions() Ævar Arnfjörð Bjarmason
2022-03-09 19:08 ` Derrick Stolee
2022-03-09 13:16 ` [PATCH 09/24] revisions API users: use release_revisions() in http-push.c Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 10/24] revisions API users: use release_revisions() in builtin/log.c Ævar Arnfjörð Bjarmason
2022-03-09 19:12 ` Derrick Stolee
2022-03-09 21:58 ` Taylor Blau
2022-03-09 21:53 ` Taylor Blau
2022-03-09 13:16 ` [PATCH 11/24] revisions API users: use release_revisions() with UNLEAK() Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 12/24] revisions API users: use release_revisions() in submodule.c edge case Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 13/24] revisions API users: use release_revisions() in wt-status.c " Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 14/24] revisions API users: use release_revisions() for "prune_data" users Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 15/24] revisions API: have release_revisions() release "commits" Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 16/24] revisions API: have release_revisions() release "mailmap" Ævar Arnfjörð Bjarmason
2022-03-09 19:17 ` Derrick Stolee
2022-03-09 13:16 ` [PATCH 17/24] revisions API: have release_revisions() release "cmdline" Ævar Arnfjörð Bjarmason
2022-03-09 19:19 ` Derrick Stolee
2022-03-10 15:10 ` Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 18/24] revisions API: have release_revisions() release "grep_filter" Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 19/24] revisions API: have release_revisions() release "prune_data" Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 20/24] revisions API: clear "boundary_commits" in release_revisions() Ævar Arnfjörð Bjarmason
2022-03-09 19:21 ` Derrick Stolee
2022-03-10 14:55 ` Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 21/24] revisions API: release "reflog_info" in release revisions() Ævar Arnfjörð Bjarmason
2022-03-09 19:24 ` Derrick Stolee
2022-03-10 0:13 ` Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 22/24] revisions API: call diff_free(&revs->pruning) in revisions_release() Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 23/24] revisions API: have release_revisions() release "date_mode" Ævar Arnfjörð Bjarmason
2022-03-09 13:16 ` [PATCH 24/24] revisions API: have release_revisions() release "topo_walk_info" Ævar Arnfjörð Bjarmason
2022-03-09 19:27 ` Derrick Stolee
2022-03-09 14:34 ` [PATCH 00/24] revision.[ch]: add and use release_revisions() Derrick Stolee
2022-03-09 19:30 ` Derrick Stolee
2022-03-09 19:39 ` Ævar Arnfjörð Bjarmason
2022-03-09 20:05 ` Junio C Hamano
2022-03-23 20:31 ` Ævar Arnfjörð Bjarmason [this message]
2022-03-23 20:31 ` [PATCH v2 01/27] t/helper/test-fast-rebase.c: don't leak "struct strbuf" Ævar Arnfjörð Bjarmason
2022-03-24 4:13 ` Junio C Hamano
2022-03-24 16:57 ` Ævar Arnfjörð Bjarmason
2022-03-24 17:34 ` Junio C Hamano
2022-03-23 20:31 ` [PATCH v2 02/27] blame: use "goto cleanup" for cleanup_scoreboard() Ævar Arnfjörð Bjarmason
2022-03-24 4:23 ` Junio C Hamano
2022-03-23 20:31 ` [PATCH v2 03/27] string_list API users: use string_list_init_{no,}dup Ævar Arnfjörð Bjarmason
2022-03-23 20:31 ` [PATCH v2 04/27] format-patch: don't leak "extra_headers" or "ref_message_ids" Ævar Arnfjörð Bjarmason
2022-03-24 4:33 ` Junio C Hamano
2022-03-24 16:59 ` Ævar Arnfjörð Bjarmason
2022-03-23 20:31 ` [PATCH v2 05/27] revision.[ch]: split freeing of revs->commit into a function Ævar Arnfjörð Bjarmason
2022-03-24 4:33 ` Junio C Hamano
2022-03-24 17:01 ` Ævar Arnfjörð Bjarmason
2022-03-23 20:31 ` [PATCH v2 06/27] revision.[ch]: provide and start using a release_revisions() Ævar Arnfjörð Bjarmason
2022-03-24 4:43 ` Junio C Hamano
2022-03-24 17:02 ` Ævar Arnfjörð Bjarmason
2022-03-23 20:31 ` [PATCH v2 07/27] revisions API users: add straightforward release_revisions() Ævar Arnfjörð Bjarmason
2022-03-23 20:31 ` [PATCH v2 08/27] revisions API users: use release_revisions() needing "{ 0 }" init Ævar Arnfjörð Bjarmason
2022-03-24 4:53 ` Junio C Hamano
2022-03-24 17:04 ` Ævar Arnfjörð Bjarmason
2022-03-24 17:39 ` Junio C Hamano
2022-03-25 0:47 ` Junio C Hamano
2022-03-23 20:31 ` [PATCH v2 09/27] stash: always have the owner of "stash_info" free it Ævar Arnfjörð Bjarmason
2022-03-25 0:51 ` Junio C Hamano
2022-03-23 20:32 ` [PATCH v2 10/27] revisions API users: add "goto cleanup" for release_revisions() Ævar Arnfjörð Bjarmason
2022-03-25 0:52 ` Junio C Hamano
2022-03-23 20:32 ` [PATCH v2 11/27] revisions API users: use release_revisions() in http-push.c Ævar Arnfjörð Bjarmason
2022-03-23 20:32 ` [PATCH v2 12/27] revisions API users: use release_revisions() in builtin/log.c Ævar Arnfjörð Bjarmason
2022-03-25 1:03 ` Junio C Hamano
2022-03-23 20:32 ` [PATCH v2 13/27] revisions API users: use release_revisions() with UNLEAK() Ævar Arnfjörð Bjarmason
2022-03-23 20:32 ` [PATCH v2 14/27] revisions API users: use release_revisions() in submodule.c edge case Ævar Arnfjörð Bjarmason
2022-03-25 1:07 ` Junio C Hamano
2022-03-23 20:32 ` [PATCH v2 15/27] revisions API users: use release_revisions() for "prune_data" users Ævar Arnfjörð Bjarmason
2022-03-23 20:32 ` [PATCH v2 16/27] revisions API: have release_revisions() release "commits" Ævar Arnfjörð Bjarmason
2022-03-23 20:32 ` [PATCH v2 17/27] revisions API: have release_revisions() release "mailmap" Ævar Arnfjörð Bjarmason
2022-03-25 1:11 ` Junio C Hamano
2022-03-23 20:32 ` [PATCH v2 18/27] revisions API: have release_revisions() release "cmdline" Ævar Arnfjörð Bjarmason
2022-03-25 1:16 ` Junio C Hamano
2022-03-23 20:32 ` [PATCH v2 19/27] revisions API: have release_revisions() release "filter" Ævar Arnfjörð Bjarmason
2022-03-25 1:17 ` Junio C Hamano
2022-03-23 20:32 ` [PATCH v2 20/27] revisions API: have release_revisions() release "grep_filter" Ævar Arnfjörð Bjarmason
2022-03-23 20:32 ` [PATCH v2 21/27] revisions API: have release_revisions() release "prune_data" Ævar Arnfjörð Bjarmason
2022-03-25 1:20 ` Junio C Hamano
2022-03-23 20:32 ` [PATCH v2 22/27] revisions API: clear "boundary_commits" in release_revisions() Ævar Arnfjörð Bjarmason
2022-03-23 20:32 ` [PATCH v2 23/27] revisions API: release "reflog_info" in release revisions() Ævar Arnfjörð Bjarmason
2022-03-23 20:32 ` [PATCH v2 24/27] revisions API: call diff_free(&revs->pruning) in revisions_release() Ævar Arnfjörð Bjarmason
2022-03-23 20:32 ` [PATCH v2 25/27] revisions API: have release_revisions() release "date_mode" Ævar Arnfjörð Bjarmason
2022-03-23 20:32 ` [PATCH v2 26/27] revisions API: have release_revisions() release "topo_walk_info" Ævar Arnfjörð Bjarmason
2022-03-23 20:32 ` [PATCH v2 27/27] revisions API: add a TODO for diff_free(&revs->diffopt) Ævar Arnfjörð Bjarmason
2022-03-25 1:41 ` [PATCH v2 00/27] revision.[ch]: add and use release_revisions() Junio C Hamano
2022-03-25 9:14 ` Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 " Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 01/27] t/helper/test-fast-rebase.c: don't leak "struct strbuf" Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 02/27] blame: use "goto cleanup" for cleanup_scoreboard() Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 03/27] string_list API users: use string_list_init_{no,}dup Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 04/27] format-patch: don't leak "extra_headers" or "ref_message_ids" Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 05/27] revision.[ch]: split freeing of revs->commit into a function Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 06/27] revision.[ch]: provide and start using a release_revisions() Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 07/27] revisions API users: add straightforward release_revisions() Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 08/27] revisions API users: add "goto cleanup" for "rev_info" early exit Ævar Arnfjörð Bjarmason
2022-03-25 20:30 ` Junio C Hamano
2022-03-26 0:37 ` Ævar Arnfjörð Bjarmason
2022-03-26 5:24 ` Junio C Hamano
2022-03-28 17:55 ` Derrick Stolee
2022-03-28 18:55 ` Ævar Arnfjörð Bjarmason
2022-03-28 20:03 ` Junio C Hamano
2022-03-25 17:18 ` [PATCH v3 09/27] revisions API users: use release_revisions() in submodule.c edge case Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 10/27] stash: always have the owner of "stash_info" free it Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 11/27] revisions API users: add "goto cleanup" for release_revisions() Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 12/27] revisions API users: use release_revisions() in http-push.c Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 13/27] revisions API users: use release_revisions() in builtin/log.c Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 14/27] revisions API users: use release_revisions() with UNLEAK() Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 15/27] revisions API users: use release_revisions() for "prune_data" users Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 16/27] revisions API: have release_revisions() release "commits" Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 17/27] revisions API: have release_revisions() release "mailmap" Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 18/27] revisions API: have release_revisions() release "cmdline" Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 19/27] revisions API: have release_revisions() release "filter" Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 20/27] revisions API: have release_revisions() release "grep_filter" Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 21/27] revisions API: have release_revisions() release "prune_data" Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 22/27] revisions API: clear "boundary_commits" in release_revisions() Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 23/27] revisions API: release "reflog_info" in release revisions() Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 24/27] revisions API: call diff_free(&revs->pruning) in revisions_release() Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 25/27] revisions API: have release_revisions() release "date_mode" Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 26/27] revisions API: have release_revisions() release "topo_walk_info" Ævar Arnfjörð Bjarmason
2022-03-25 17:18 ` [PATCH v3 27/27] revisions API: add a TODO for diff_free(&revs->diffopt) Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 00/27] revision.[ch]: add and use release_revisions() Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 01/27] t/helper/test-fast-rebase.c: don't leak "struct strbuf" Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 02/27] blame: use "goto cleanup" for cleanup_scoreboard() Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 03/27] string_list API users: use string_list_init_{no,}dup Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 04/27] format-patch: don't leak "extra_headers" or "ref_message_ids" Ævar Arnfjörð Bjarmason
2022-04-01 15:13 ` Phillip Wood
2022-04-01 17:16 ` Ævar Arnfjörð Bjarmason
2022-04-01 19:32 ` Junio C Hamano
2022-03-31 1:11 ` [PATCH v4 05/27] revision.[ch]: split freeing of revs->commit into a function Ævar Arnfjörð Bjarmason
2022-04-01 15:15 ` Phillip Wood
2022-04-01 17:03 ` Junio C Hamano
2022-03-31 1:11 ` [PATCH v4 06/27] revision.[ch]: provide and start using a release_revisions() Ævar Arnfjörð Bjarmason
2022-04-01 15:17 ` Phillip Wood
2022-04-01 17:25 ` Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 07/27] revisions API users: add straightforward release_revisions() Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 08/27] revision.[ch]: document and move code declared around "init" Ævar Arnfjörð Bjarmason
2022-04-01 15:20 ` Phillip Wood
2022-03-31 1:11 ` [PATCH v4 09/27] revisions API users: use release_revisions() needing REV_INFO_INIT Ævar Arnfjörð Bjarmason
2022-03-31 21:14 ` Junio C Hamano
2022-04-01 10:31 ` Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 10/27] stash: always have the owner of "stash_info" free it Ævar Arnfjörð Bjarmason
2022-04-01 15:29 ` Phillip Wood
2022-04-01 17:29 ` Ævar Arnfjörð Bjarmason
2022-04-01 15:33 ` Phillip Wood
2022-03-31 1:11 ` [PATCH v4 11/27] revisions API users: add "goto cleanup" for release_revisions() Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 12/27] revisions API users: use release_revisions() in http-push.c Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 13/27] revisions API users: use release_revisions() in builtin/log.c Ævar Arnfjörð Bjarmason
2022-04-02 9:22 ` Phillip Wood
2022-04-03 14:07 ` Ævar Arnfjörð Bjarmason
2022-04-04 9:27 ` Phillip Wood
2022-04-03 21:49 ` Junio C Hamano
2022-03-31 1:11 ` [PATCH v4 14/27] revisions API users: use release_revisions() with UNLEAK() Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 15/27] revisions API users: use release_revisions() for "prune_data" users Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 16/27] revisions API: have release_revisions() release "commits" Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 17/27] revisions API: have release_revisions() release "mailmap" Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 18/27] revisions API: have release_revisions() release "cmdline" Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 19/27] revisions API: have release_revisions() release "filter" Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 20/27] revisions API: have release_revisions() release "grep_filter" Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 21/27] revisions API: have release_revisions() release "prune_data" Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 22/27] revisions API: clear "boundary_commits" in release_revisions() Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 23/27] revisions API: release "reflog_info" in release revisions() Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 24/27] revisions API: call diff_free(&revs->pruning) in revisions_release() Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 25/27] revisions API: have release_revisions() release "date_mode" Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 26/27] revisions API: have release_revisions() release "topo_walk_info" Ævar Arnfjörð Bjarmason
2022-03-31 1:11 ` [PATCH v4 27/27] revisions API: add a TODO for diff_free(&revs->diffopt) Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 00/27] revision.[ch]: add and use release_revisions() Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 01/27] t/helper/test-fast-rebase.c: don't leak "struct strbuf" Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 02/27] blame: use "goto cleanup" for cleanup_scoreboard() Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 03/27] string_list API users: use string_list_init_{no,}dup Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 04/27] format-patch: don't leak "extra_headers" or "ref_message_ids" Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 05/27] cocci: add and apply free_commit_list() rules Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 06/27] revision.[ch]: provide and start using a release_revisions() Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 07/27] revisions API users: add straightforward release_revisions() Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 08/27] revision.[ch]: document and move code declared around "init" Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 09/27] revisions API users: use release_revisions() needing REV_INFO_INIT Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 10/27] stash: always have the owner of "stash_info" free it Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 11/27] revisions API users: add "goto cleanup" for release_revisions() Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 12/27] revisions API users: use release_revisions() in http-push.c Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 13/27] revisions API users: use release_revisions() in builtin/log.c Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 14/27] revisions API users: use release_revisions() with UNLEAK() Ævar Arnfjörð Bjarmason
2022-04-03 9:27 ` Phillip Wood
2022-04-03 13:55 ` Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 15/27] revisions API users: use release_revisions() for "prune_data" users Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 16/27] revisions API: have release_revisions() release "commits" Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 17/27] revisions API: have release_revisions() release "mailmap" Ævar Arnfjörð Bjarmason
2022-04-03 9:33 ` Phillip Wood
2022-04-03 13:57 ` Ævar Arnfjörð Bjarmason
2022-04-04 9:19 ` Phillip Wood
2022-04-02 10:49 ` [PATCH v5 18/27] revisions API: have release_revisions() release "cmdline" Ævar Arnfjörð Bjarmason
2022-04-03 12:54 ` Phillip Wood
2022-04-03 14:01 ` Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 19/27] revisions API: have release_revisions() release "filter" Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 20/27] revisions API: have release_revisions() release "grep_filter" Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 21/27] revisions API: have release_revisions() release "prune_data" Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 22/27] revisions API: clear "boundary_commits" in release_revisions() Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 23/27] revisions API: release "reflog_info" in release revisions() Ævar Arnfjörð Bjarmason
2022-04-03 15:19 ` Phillip Wood
2022-04-02 10:49 ` [PATCH v5 24/27] revisions API: call diff_free(&revs->pruning) in revisions_release() Ævar Arnfjörð Bjarmason
2022-04-03 13:00 ` Phillip Wood
2022-04-03 14:04 ` Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 25/27] revisions API: have release_revisions() release "date_mode" Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 26/27] revisions API: have release_revisions() release "topo_walk_info" Ævar Arnfjörð Bjarmason
2022-04-02 10:49 ` [PATCH v5 27/27] revisions API: add a TODO for diff_free(&revs->diffopt) Ævar Arnfjörð Bjarmason
2022-04-03 13:07 ` [PATCH v5 00/27] revision.[ch]: add and use release_revisions() Phillip Wood
2022-04-03 14:18 ` Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 " Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 01/27] t/helper/test-fast-rebase.c: don't leak "struct strbuf" Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 02/27] blame: use "goto cleanup" for cleanup_scoreboard() Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 03/27] string_list API users: use string_list_init_{no,}dup Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 04/27] format-patch: don't leak "extra_headers" or "ref_message_ids" Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 05/27] cocci: add and apply free_commit_list() rules Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 06/27] revision.[ch]: provide and start using a release_revisions() Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 07/27] revisions API users: add straightforward release_revisions() Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 08/27] revision.[ch]: document and move code declared around "init" Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 09/27] revisions API users: use release_revisions() needing REV_INFO_INIT Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 10/27] stash: always have the owner of "stash_info" free it Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 11/27] revisions API users: add "goto cleanup" for release_revisions() Ævar Arnfjörð Bjarmason
2022-07-11 18:06 ` Jeff King
2022-07-11 20:12 ` Ævar Arnfjörð Bjarmason
2022-07-12 6:54 ` Jeff King
2022-07-12 7:03 ` [PATCH] diff-files: move misplaced cleanup label Jeff King
2022-04-13 20:01 ` [PATCH v6 12/27] revisions API users: use release_revisions() in http-push.c Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 13/27] revisions API users: use release_revisions() in builtin/log.c Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 14/27] revisions API users: use release_revisions() with UNLEAK() Ævar Arnfjörð Bjarmason
2022-04-15 13:58 ` Phillip Wood
2022-04-13 20:01 ` [PATCH v6 15/27] revisions API users: use release_revisions() for "prune_data" users Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 16/27] revisions API: have release_revisions() release "commits" Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 17/27] revisions API: have release_revisions() release "mailmap" Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 18/27] revisions API: have release_revisions() release "cmdline" Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 19/27] revisions API: have release_revisions() release "filter" Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 20/27] revisions API: have release_revisions() release "grep_filter" Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 21/27] revisions API: have release_revisions() release "prune_data" Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 22/27] revisions API: clear "boundary_commits" in release_revisions() Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 23/27] revisions API: release "reflog_info" in release revisions() Ævar Arnfjörð Bjarmason
2022-04-13 20:01 ` [PATCH v6 24/27] revisions API: call diff_free(&revs->pruning) in revisions_release() Ævar Arnfjörð Bjarmason
2022-04-14 5:56 ` [PATCH v6 25/27] revisions API: have release_revisions() release "date_mode" Ævar Arnfjörð Bjarmason
2022-04-14 5:56 ` [PATCH v6 26/27] revisions API: have release_revisions() release "topo_walk_info" Ævar Arnfjörð Bjarmason
2022-04-14 5:56 ` [PATCH v6 27/27] revisions API: add a TODO for diff_free(&revs->diffopt) Ævar Arnfjörð Bjarmason
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover-v2-00.27-00000000000-20220323T203149Z-avarab@gmail.com \
--to=avarab@gmail.com \
--cc=derrickstolee@github.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=martin.agren@gmail.com \
--cc=newren@gmail.com \
--cc=sandals@crustytoothpaste.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).