aboutsummaryrefslogtreecommitdiff
path: root/commit.h
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-11-15 12:14:32 +0900
committerJunio C Hamano <gitster@pobox.com>2017-11-15 12:14:32 +0900
commit905f16dd02bb15e0c1e12bf1a6c28510f504f441 (patch)
tree30ca8d7c2c929bf8bd57d4a853e4c92e74ae1ddb /commit.h
parent093048b22913be23fe45635e8723d3aa3a185ff3 (diff)
parent4da72644b768b0491110a8ba0aa84d32b6bde41c (diff)
downloadgit-905f16dd02bb15e0c1e12bf1a6c28510f504f441.tar.gz
git-905f16dd02bb15e0c1e12bf1a6c28510f504f441.tar.xz
Merge branch 'ma/reduce-heads-leakfix'
Leak fixes. * ma/reduce-heads-leakfix: reduce_heads: fix memory leaks builtin/merge-base: free commit lists
Diffstat (limited to 'commit.h')
-rw-r--r--commit.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/commit.h b/commit.h
index 6d769590f..99a3fea68 100644
--- a/commit.h
+++ b/commit.h
@@ -313,7 +313,23 @@ extern int interactive_add(int argc, const char **argv, const char *prefix, int
extern int run_add_interactive(const char *revision, const char *patch_mode,
const struct pathspec *pathspec);
-struct commit_list *reduce_heads(struct commit_list *heads);
+/*
+ * Takes a list of commits and returns a new list where those
+ * have been removed that can be reached from other commits in
+ * the list. It is useful for, e.g., reducing the commits
+ * randomly thrown at the git-merge command and removing
+ * redundant commits that the user shouldn't have given to it.
+ *
+ * This function destroys the STALE bit of the commit objects'
+ * flags.
+ */
+extern struct commit_list *reduce_heads(struct commit_list *heads);
+
+/*
+ * Like `reduce_heads()`, except it replaces the list. Use this
+ * instead of `foo = reduce_heads(foo);` to avoid memory leaks.
+ */
+extern void reduce_heads_replace(struct commit_list **heads);
struct commit_extra_header {
struct commit_extra_header *next;