refactor pack structure allocation
[gitweb.git] / revision.h
index d8a5a5021f1e066b34b1d0602d7e44649e0aa4cf..abce5001f19a60bb15b519b26773b57c83563021 100644 (file)
@@ -3,7 +3,7 @@
 
 #define SEEN           (1u<<0)
 #define UNINTERESTING   (1u<<1)
-#define TREECHANGE     (1u<<2)
+#define TREESAME       (1u<<2)
 #define SHOWN          (1u<<3)
 #define TMP_MARK       (1u<<4) /* for isolated cases; clean after use */
 #define BOUNDARY       (1u<<5)
@@ -15,8 +15,6 @@
 struct rev_info;
 struct log_info;
 
-typedef void (prune_fn_t)(struct rev_info *revs, struct commit *commit);
-
 struct rev_info {
        /* Starting list */
        struct commit_list *commits;
@@ -28,14 +26,14 @@ struct rev_info {
        /* Basic information */
        const char *prefix;
        void *prune_data;
-       prune_fn_t *prune_fn;
-
        unsigned int early_output;
 
        /* Traversal flags */
        unsigned int    dense:1,
+                       prune:1,
                        no_merges:1,
                        no_walk:1,
+                       show_all:1,
                        remove_empty_trees:1,
                        simplify_history:1,
                        lifo:1,
@@ -48,7 +46,8 @@ struct rev_info {
                        unpacked:1, /* see also ignore_packed below */
                        boundary:2,
                        left_right:1,
-                       parents:1,
+                       rewrite_parents:1,
+                       print_parents:1,
                        reverse:1,
                        cherry_pick:1,
                        first_parent_only:1;
@@ -66,7 +65,9 @@ struct rev_info {
 
        /* Format info */
        unsigned int    shown_one:1,
-                       abbrev_commit:1;
+                       abbrev_commit:1,
+                       use_terminator:1,
+                       missing_newline:1;
        enum date_mode date_mode;
 
        const char **ignore_packed; /* pretend objects in these are unpacked */
@@ -77,7 +78,7 @@ struct rev_info {
        struct log_info *loginfo;
        int             nr, total;
        const char      *mime_boundary;
-       const char      *message_id;
+       char            *message_id;
        const char      *ref_message_id;
        const char      *add_signoff;
        const char      *extra_headers;
@@ -89,6 +90,9 @@ struct rev_info {
        /* Filter by commit log message */
        struct grep_opt *grep_filter;
 
+       /* Display history graph */
+       struct git_graph *graph;
+
        /* special limits */
        int skip_count;
        int max_count;
@@ -133,4 +137,14 @@ extern void add_object(struct object *obj,
 
 extern void add_pending_object(struct rev_info *revs, struct object *obj, const char *name);
 
+extern void add_head_to_pending(struct rev_info *);
+
+enum commit_action {
+       commit_ignore,
+       commit_show,
+       commit_error
+};
+
+extern enum commit_action simplify_commit(struct rev_info *revs, struct commit *commit);
+
 #endif