index-pack: avoid excessive re-reading of pack directory
[gitweb.git] / revision.h
index 88967d6a24df852453f93cb7bc466386347b0c45..a6205307cf3bb2364b8642b0a4857c5b0ae9b5a9 100644 (file)
@@ -7,6 +7,7 @@
 #include "commit.h"
 #include "diff.h"
 
+/* Remember to update object flag allocation in object.h */
 #define SEEN           (1u<<0)
 #define UNINTERESTING   (1u<<1)
 #define TREESAME       (1u<<2)
@@ -18,7 +19,8 @@
 #define SYMMETRIC_LEFT (1u<<8)
 #define PATCHSAME      (1u<<9)
 #define BOTTOM         (1u<<10)
-#define ALL_REV_FLAGS  ((1u<<11)-1)
+#define TRACK_LINEAR   (1u<<26)
+#define ALL_REV_FLAGS  (((1u<<11)-1) | TRACK_LINEAR)
 
 #define DECORATE_SHORT_REFS    1
 #define DECORATE_FULL_REFS     2
@@ -73,7 +75,8 @@ struct rev_info {
        enum rev_sort_order sort_order;
 
        unsigned int    early_output:1,
-                       ignore_missing:1;
+                       ignore_missing:1,
+                       ignore_missing_links:1;
 
        /* Traversal flags */
        unsigned int    dense:1,
@@ -137,6 +140,10 @@ struct rev_info {
                        preserve_subject:1;
        unsigned int    disable_stdin:1;
        unsigned int    leak_pending:1;
+       /* --show-linear-break */
+       unsigned int    track_linear:1,
+                       track_first_time:1,
+                       linear:1;
 
        enum date_mode date_mode;
 
@@ -172,6 +179,8 @@ struct rev_info {
        unsigned long min_age;
        int min_parents;
        int max_parents;
+       int (*include_check)(struct commit *, void *);
+       void *include_check_data;
 
        /* diff info for patches and for paths limiting */
        struct diff_options diffopt;
@@ -195,6 +204,9 @@ struct rev_info {
 
        /* copies of the parent lists, for --full-diff display */
        struct saved_parents *saved_parents_slab;
+
+       struct commit_list *previous_parents;
+       const char *break_bar;
 };
 
 extern int ref_excluded(struct string_list *, const char *path);