X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=commit.h;h=01eec60a1ecc2ff3c73850cb510ba71767e47e03;hb=81f3a188a3781fa4a818ed27ee83430682a98ec4;hp=9c4a244bd90cd96a461a6d6774106b0e6a11fe1e;hpb=c4e804bbf0c16aa0c2234ea733fba73de28bddaa;p=git.git diff --git a/commit.h b/commit.h index 9c4a244b..01eec60a 100644 --- a/commit.h +++ b/commit.h @@ -45,10 +45,13 @@ enum cmit_fmt { CMIT_FMT_FULL, CMIT_FMT_FULLER, CMIT_FMT_ONELINE, + CMIT_FMT_EMAIL, + + CMIT_FMT_UNSPECIFIED, }; extern enum cmit_fmt get_commit_format(const char *arg); -extern unsigned long pretty_print_commit(enum cmit_fmt fmt, const char *msg, unsigned long len, char *buf, unsigned long space); +extern unsigned long pretty_print_commit(enum cmit_fmt fmt, const struct commit *, unsigned long len, char *buf, unsigned long space, int abbrev); /** Removes the first commit from a list sorted by date, and adds all * of its parents. @@ -65,13 +68,40 @@ 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. */ -void sort_in_topological_order(struct commit_list ** list); + +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]; + int nr_parent; + unsigned char parent[FLEX_ARRAY][20]; /* more */ +}; + +struct commit_graft *read_graft_line(char *buf, int len); +int register_commit_graft(struct commit_graft *, int); +int read_graft_file(const char *graft_file); + #endif /* COMMIT_H */