summaryrefslogtreecommitdiff
path: root/commit.h
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <junkio@cox.net>2006-03-10 22:32:59 -0800
committerLibravatar Junio C Hamano <junkio@cox.net>2006-03-10 22:32:59 -0800
commitc301a0d2cf49b57f246ad73d0fd9f1cf203e7c16 (patch)
treeb548ce5d5211efb71df3615973bd36f11282014b /commit.h
parentMerge branch 'jc/fsck' into next (diff)
parentblame: Rename detection (take 2) (diff)
downloadtgif-c301a0d2cf49b57f246ad73d0fd9f1cf203e7c16.tar.xz
Merge branch 'fk/blame' into next
* fk/blame: blame: Rename detection (take 2) rev-lib: Make it easy to do rename tracking (take 2) Make it possible to not clobber object.util in sort_in_topological_order (take 2) Add git-imap-send, derived from isync 1.0.1. repack: prune loose objects when -d is given try_to_simplify_commit(): do not skip inspecting tree change at boundary. Fix t1200 test for breakage caused by removal of full-stop at the end of fast-forward message. Describe how to add extra mail header lines in mail generated by git-format-patch. Document the --attach flag. allow double click on current HEAD id after git-pull
Diffstat (limited to 'commit.h')
-rw-r--r--commit.h20
1 files changed, 17 insertions, 3 deletions
diff --git a/commit.h b/commit.h
index 70a7c75e65..98682b232a 100644
--- a/commit.h
+++ b/commit.h
@@ -65,15 +65,29 @@ int count_parents(struct commit * commit);
/*
* Performs an in-place topological sort of list supplied.
*
- * Pre-conditions:
+ * Pre-conditions for sort_in_topological_order:
* all commits in input list and all parents of those
* commits must have object.util == NULL
- *
- * Post-conditions:
+ *
+ * Pre-conditions for sort_in_topological_order_fn:
+ * all commits in input list and all parents of those
+ * commits must have getter(commit) == NULL
+ *
+ * Post-conditions:
* invariant of resulting list is:
* a reachable from b => ord(b) < ord(a)
* in addition, when lifo == 0, commits on parallel tracks are
* sorted in the dates order.
*/
+
+typedef void (*topo_sort_set_fn_t)(struct commit*, void *data);
+typedef void* (*topo_sort_get_fn_t)(struct commit*);
+
+void topo_sort_default_setter(struct commit *c, void *data);
+void *topo_sort_default_getter(struct commit *c);
+
void sort_in_topological_order(struct commit_list ** list, int lifo);
+void sort_in_topological_order_fn(struct commit_list ** list, int lifo,
+ topo_sort_set_fn_t setter,
+ topo_sort_get_fn_t getter);
#endif /* COMMIT_H */