summaryrefslogtreecommitdiff
path: root/revision.h
diff options
context:
space:
mode:
Diffstat (limited to 'revision.h')
-rw-r--r--revision.h90
1 files changed, 79 insertions, 11 deletions
diff --git a/revision.h b/revision.h
index 9d0dddbcbc..059bfff812 100644
--- a/revision.h
+++ b/revision.h
@@ -3,6 +3,7 @@
#include "parse-options.h"
#include "grep.h"
+#include "notes.h"
#define SEEN (1u<<0)
#define UNINTERESTING (1u<<1)
@@ -13,13 +14,36 @@
#define CHILD_SHOWN (1u<<6)
#define ADDED (1u<<7) /* Parents already parsed and added? */
#define SYMMETRIC_LEFT (1u<<8)
-#define ALL_REV_FLAGS ((1u<<9)-1)
+#define PATCHSAME (1u<<9)
+#define ALL_REV_FLAGS ((1u<<10)-1)
#define DECORATE_SHORT_REFS 1
#define DECORATE_FULL_REFS 2
struct rev_info;
struct log_info;
+struct string_list;
+
+struct rev_cmdline_info {
+ unsigned int nr;
+ unsigned int alloc;
+ struct rev_cmdline_entry {
+ struct object *item;
+ const char *name;
+ enum {
+ REV_CMD_REF,
+ REV_CMD_PARENTS_ONLY,
+ REV_CMD_LEFT,
+ REV_CMD_RIGHT,
+ REV_CMD_REV
+ } whence;
+ unsigned flags;
+ } *rev;
+};
+
+#define REVISION_WALK_WALK 0
+#define REVISION_WALK_NO_WALK_SORTED 1
+#define REVISION_WALK_NO_WALK_UNSORTED 2
struct rev_info {
/* Starting list */
@@ -29,18 +53,20 @@ struct rev_info {
/* Parents of shown commits */
struct object_array boundary_commits;
+ /* The end-points specified by the end user */
+ struct rev_cmdline_info cmdline;
+
/* Basic information */
const char *prefix;
const char *def;
- void *prune_data;
- unsigned int early_output;
+ struct pathspec prune_data;
+ unsigned int early_output:1,
+ ignore_missing:1;
/* Traversal flags */
unsigned int dense:1,
prune:1,
- no_merges:1,
- merges_only:1,
- no_walk:1,
+ no_walk:2,
show_all:1,
remove_empty_trees:1,
simplify_history:1,
@@ -51,11 +77,15 @@ struct rev_info {
tag_objects:1,
tree_objects:1,
blob_objects:1,
+ verify_objects:1,
edge_hint:1,
limited:1,
unpacked:1,
boundary:2,
+ count:1,
left_right:1,
+ left_only:1,
+ right_only:1,
rewrite_parents:1,
print_parents:1,
show_source:1,
@@ -63,6 +93,9 @@ struct rev_info {
reverse:1,
reverse_output_stage:1,
cherry_pick:1,
+ cherry_mark:1,
+ bisect:1,
+ ancestry_path:1,
first_parent_only:1;
/* Diff flags */
@@ -78,10 +111,21 @@ struct rev_info {
/* Format info */
unsigned int shown_one:1,
+ shown_dashes:1,
show_merge:1,
+ show_notes:1,
+ show_notes_given:1,
+ show_signature:1,
+ pretty_given:1,
abbrev_commit:1,
+ abbrev_commit_given:1,
use_terminator:1,
- missing_newline:1;
+ missing_newline:1,
+ date_mode_explicit:1,
+ preserve_subject:1;
+ unsigned int disable_stdin:1;
+ unsigned int leak_pending:1;
+
enum date_mode date_mode;
unsigned int abbrev;
@@ -111,6 +155,8 @@ struct rev_info {
int max_count;
unsigned long max_age;
unsigned long min_age;
+ int min_parents;
+ int max_parents;
/* diff info for patches and for paths limiting */
struct diff_options diffopt;
@@ -119,6 +165,14 @@ struct rev_info {
struct reflog_walk_info *reflog_info;
struct decoration children;
struct decoration merge_simplification;
+
+ /* notes-specific options: which refs to show */
+ struct display_notes_opt notes_opt;
+
+ /* commit counts */
+ int count_left;
+ int count_right;
+ int count_same;
};
#define REV_TREE_SAME 0
@@ -127,20 +181,31 @@ struct rev_info {
#define REV_TREE_DIFFERENT 3 /* Mixed changes */
/* revision.c */
-void read_revisions_from_stdin(struct rev_info *revs);
-
typedef void (*show_early_output_fn_t)(struct rev_info *, struct commit_list *);
extern volatile show_early_output_fn_t show_early_output;
+struct setup_revision_opt {
+ const char *def;
+ void (*tweak)(struct rev_info *, struct setup_revision_opt *);
+ const char *submodule;
+ int assume_dashdash;
+ unsigned revarg_opt;
+};
+
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 int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct setup_revision_opt *);
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);
+#define REVARG_CANNOT_BE_FILENAME 01
+#define REVARG_COMMITTISH 02
+extern int handle_revision_arg(const char *arg, struct rev_info *revs, int flags, unsigned revarg_opt);
+extern void reset_revision_walk(void);
extern int prepare_revision_walk(struct rev_info *revs);
extern struct commit *get_revision(struct rev_info *revs);
+extern char *get_revision_mark(const struct rev_info *revs, const struct commit *commit);
+extern void put_revision_mark(const struct rev_info *revs, const struct commit *commit);
extern void mark_parents_uninteresting(struct commit *commit);
extern void mark_tree_uninteresting(struct tree *tree);
@@ -153,12 +218,15 @@ struct name_path {
char *path_name(const struct name_path *path, const char *name);
+extern void show_object_with_name(FILE *, struct object *, const struct name_path *, const char *);
+
extern void add_object(struct object *obj,
struct object_array *p,
struct name_path *path,
const char *name);
extern void add_pending_object(struct rev_info *revs, struct object *obj, const char *name);
+extern void add_pending_sha1(struct rev_info *revs, const char *name, const unsigned char *sha1, unsigned int flags);
extern void add_head_to_pending(struct rev_info *);