summaryrefslogtreecommitdiff
path: root/revision.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@osdl.org>2006-02-26 00:19:46 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-02-26 23:33:27 (GMT)
commitae563542bf10fa8c33abd2a354e4b28aca4264d7 (patch)
treedc54d0ef8482bb76e1dbb5c4ca9da3a9387761a7 /revision.h
parentac5f7c62c2d59cdad0813fcd8c999db96a4fc9e4 (diff)
downloadgit-ae563542bf10fa8c33abd2a354e4b28aca4264d7.zip
git-ae563542bf10fa8c33abd2a354e4b28aca4264d7.tar.gz
git-ae563542bf10fa8c33abd2a354e4b28aca4264d7.tar.bz2
First cut at libifying revlist generation
This really just splits things up partially, and creates the interface to set things up by parsing the command line. No real code changes so far, although the parsing of filenames is a bit stricter. In particular, if there is a "--", then we do not accept any filenames before it, and if there isn't any "--", then we check that _all_ paths listed are valid, not just the first one. The new argument parsing automatically also gives us "--default" and "--not" handling as in git-rev-parse. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'revision.h')
-rw-r--r--revision.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/revision.h b/revision.h
new file mode 100644
index 0000000..5170ac4
--- /dev/null
+++ b/revision.h
@@ -0,0 +1,48 @@
+#ifndef REVISION_H
+#define REVISION_H
+
+#define SEEN (1u<<0)
+#define UNINTERESTING (1u<<1)
+
+struct rev_info {
+ /* Starting list */
+ struct commit_list *commits;
+ struct object_list *pending_objects;
+
+ /* Basic information */
+ const char *prefix;
+ const char **paths;
+
+ /* Traversal flags */
+ unsigned int dense:1,
+ remove_empty_trees:1,
+ lifo:1,
+ topo_order:1,
+ tag_objects:1,
+ tree_objects:1,
+ blob_objects:1,
+ edge_hint:1;
+
+ /* special limits */
+ int max_count;
+ unsigned long max_age;
+ unsigned long min_age;
+};
+
+/* revision.c */
+extern int setup_revisions(int argc, const char **argv, struct rev_info *revs);
+extern void mark_parents_uninteresting(struct commit *commit);
+extern void mark_tree_uninteresting(struct tree *tree);
+
+struct name_path {
+ struct name_path *up;
+ int elem_len;
+ const char *elem;
+};
+
+extern struct object_list **add_object(struct object *obj,
+ struct object_list **p,
+ struct name_path *path,
+ const char *name);
+
+#endif