X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=revision.h;h=48d7b4ca94f3fd00f7a1f6a3fb57ebed934ffc0d;hb=0cc9e70c4c9adb3e79b4a492f2f989c611d85966;hp=a22f198515f9cce097bad41cb64139eff7459540;hpb=f64c429ff75a1f53945b508f77e5f8f157a024c2;p=git.git diff --git a/revision.h b/revision.h index a22f1985..48d7b4ca 100644 --- a/revision.h +++ b/revision.h @@ -3,6 +3,17 @@ #define SEEN (1u<<0) #define UNINTERESTING (1u<<1) +#define TREECHANGE (1u<<2) +#define SHOWN (1u<<3) +#define TMP_MARK (1u<<4) /* for isolated cases; clean after use */ +#define BOUNDARY (1u<<5) +#define BOUNDARY_SHOW (1u<<6) +#define ADDED (1u<<7) /* Parents already parsed and added? */ + +struct rev_info; +struct log_info; + +typedef void (prune_fn_t)(struct rev_info *revs, struct commit *commit); struct rev_info { /* Starting list */ @@ -11,10 +22,13 @@ struct rev_info { /* Basic information */ const char *prefix; - const char **paths; + void *prune_data; + prune_fn_t *prune_fn; /* Traversal flags */ unsigned int dense:1, + no_merges:1, + no_walk:1, remove_empty_trees:1, lifo:1, topo_order:1, @@ -23,16 +37,54 @@ struct rev_info { blob_objects:1, edge_hint:1, limited:1, - unpacked:1; + unpacked:1, + boundary:1, + parents:1; + + /* Diff flags */ + unsigned int diff:1, + full_diff:1, + show_root_diff:1, + no_commit_id:1, + verbose_header:1, + ignore_merges:1, + combine_merges:1, + dense_combined_merges:1, + always_show_header:1; + + /* Format info */ + unsigned int shown_one:1, + abbrev_commit:1; + unsigned int abbrev; + enum cmit_fmt commit_format; + struct log_info *loginfo; /* special limits */ int max_count; unsigned long max_age; unsigned long min_age; + + /* diff info for patches and for paths limiting */ + struct diff_options diffopt; + struct diff_options pruning; + + topo_sort_set_fn_t topo_setter; + topo_sort_get_fn_t topo_getter; }; +#define REV_TREE_SAME 0 +#define REV_TREE_NEW 1 +#define REV_TREE_DIFFERENT 2 + /* revision.c */ -extern int setup_revisions(int argc, const char **argv, struct rev_info *revs); +extern int rev_same_tree_as_empty(struct rev_info *, struct tree *t1); +extern int rev_compare_tree(struct rev_info *, struct tree *t1, struct tree *t2); + +extern void init_revisions(struct rev_info *revs); +extern int setup_revisions(int argc, const char **argv, struct rev_info *revs, const char *def); +extern void prepare_revision_walk(struct rev_info *revs); +extern struct commit *get_revision(struct rev_info *revs); + extern void mark_parents_uninteresting(struct commit *commit); extern void mark_tree_uninteresting(struct tree *tree);