builtin-blame: Reencode commit messages according to git-log rules.
[gitweb.git] / revision.h
index e8bac6d14161dfd7121967726c3ba30eded5b7eb..2fdb2dd0ff3425b68b47aa8fd11155aa881d4a4a 100644 (file)
@@ -1,6 +1,9 @@
 #ifndef REVISION_H
 #define REVISION_H
 
+#include "parse-options.h"
+#include "grep.h"
+
 #define SEEN           (1u<<0)
 #define UNINTERESTING   (1u<<1)
 #define TREESAME       (1u<<2)
@@ -10,8 +13,7 @@
 #define CHILD_SHOWN    (1u<<6)
 #define ADDED          (1u<<7) /* Parents already parsed and added? */
 #define SYMMETRIC_LEFT (1u<<8)
-#define TOPOSORT       (1u<<9) /* In the active toposort list.. */
-#define ALL_REV_FLAGS  ((1u<<10)-1)
+#define ALL_REV_FLAGS  ((1u<<9)-1)
 
 struct rev_info;
 struct log_info;
@@ -26,6 +28,7 @@ struct rev_info {
 
        /* Basic information */
        const char *prefix;
+       const char *def;
        void *prune_data;
        unsigned int early_output;
 
@@ -39,6 +42,7 @@ struct rev_info {
                        simplify_history:1,
                        lifo:1,
                        topo_order:1,
+                       simplify_merges:1,
                        tag_objects:1,
                        tree_objects:1,
                        blob_objects:1,
@@ -50,6 +54,7 @@ struct rev_info {
                        rewrite_parents:1,
                        print_parents:1,
                        reverse:1,
+                       reverse_output_stage:1,
                        cherry_pick:1,
                        first_parent_only:1;
 
@@ -66,6 +71,7 @@ struct rev_info {
 
        /* Format info */
        unsigned int    shown_one:1,
+                       show_merge:1,
                        abbrev_commit:1,
                        use_terminator:1,
                        missing_newline:1;
@@ -89,7 +95,7 @@ struct rev_info {
        int             show_log_size;
 
        /* Filter by commit log message */
-       struct grep_opt *grep_filter;
+       struct grep_opt grep_filter;
 
        /* Display history graph */
        struct git_graph *graph;
@@ -105,6 +111,8 @@ struct rev_info {
        struct diff_options pruning;
 
        struct reflog_walk_info *reflog_info;
+       struct decoration children;
+       struct decoration merge_simplification;
 };
 
 #define REV_TREE_SAME          0
@@ -112,11 +120,16 @@ struct rev_info {
 #define REV_TREE_DIFFERENT     2
 
 /* revision.c */
+void read_revisions_from_stdin(struct rev_info *revs);
+
 typedef void (*show_early_output_fn_t)(struct rev_info *, struct commit_list *);
-volatile show_early_output_fn_t show_early_output;
+extern volatile show_early_output_fn_t show_early_output;
 
 extern void init_revisions(struct rev_info *revs, const char *prefix);
 extern int setup_revisions(int argc, const char **argv, struct rev_info *revs, const char *def);
+extern void parse_revision_opt(struct rev_info *revs, struct parse_opt_ctx_t *ctx,
+                                const struct option *options,
+                                const char * const usagestr[]);
 extern int handle_revision_arg(const char *arg, struct rev_info *revs,int flags,int cant_be_filename);
 
 extern int prepare_revision_walk(struct rev_info *revs);