summaryrefslogtreecommitdiff
path: root/commit.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2007-11-02 20:32:58 (GMT)
committerJunio C Hamano <gitster@pobox.com>2007-11-04 08:54:20 (GMT)
commit23c17d4a4a0e1fc9a5fa347f1fc6be3cf477e543 (patch)
treec220a3c6a6e6cda4c6b0119e5a837823157cde12 /commit.h
parent140dd77a5cb2e61dcb942e245a2474fae95e42a5 (diff)
downloadgit-23c17d4a4a0e1fc9a5fa347f1fc6be3cf477e543.zip
git-23c17d4a4a0e1fc9a5fa347f1fc6be3cf477e543.tar.gz
git-23c17d4a4a0e1fc9a5fa347f1fc6be3cf477e543.tar.bz2
Simplify topo-sort logic
.. by not using quite so much indirection. This currently grows the "struct commit" a bit, which could be avoided by using a union for "util" and "indegree" (the topo-sort used to use "util" anyway, so you cannot use them together), but for now the goal of this was to simplify, not optimize. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'commit.h')
-rw-r--r--commit.h20
1 files changed, 1 insertions, 19 deletions
diff --git a/commit.h b/commit.h
index 13b5372..4ed0c1c 100644
--- a/commit.h
+++ b/commit.h
@@ -14,6 +14,7 @@ struct commit_list {
struct commit {
struct object object;
void *util;
+ unsigned int indegree;
unsigned long date;
struct commit_list *parents;
struct tree *tree;
@@ -84,31 +85,12 @@ void clear_commit_marks(struct commit *commit, unsigned int mark);
/*
* Performs an in-place topological sort of list supplied.
*
- * Pre-conditions for sort_in_topological_order:
- * all commits in input list and all parents of those
- * commits must have object.util == NULL
- *
- * 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);
struct commit_graft {
unsigned char sha1[20];