path: root/Documentation/technical/api-revision-walking.txt
diff options
authorMiklos Vajna <>2008-05-31 00:18:08 (GMT)
committerJunio C Hamano <>2008-05-31 21:32:56 (GMT)
commitc16570c42a748a29031281badd4762dd4e71d3d0 (patch)
tree178e8180d640ffd82da8e67b15ffc4bb37fb0d69 /Documentation/technical/api-revision-walking.txt
parent6ab69bf253848d641fb08348eca10b7cf79fd275 (diff)
Revision walking documentation: document most important functions
Unfortunately the list is not complete, but includes the essential ones. Signed-off-by: Miklos Vajna <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'Documentation/technical/api-revision-walking.txt')
1 files changed, 59 insertions, 1 deletions
diff --git a/Documentation/technical/api-revision-walking.txt b/Documentation/technical/api-revision-walking.txt
index 01a2455..996da05 100644
--- a/Documentation/technical/api-revision-walking.txt
+++ b/Documentation/technical/api-revision-walking.txt
@@ -1,9 +1,67 @@
revision walking API
+The revision walking API offers functions to build a list of revisions
+and then iterate over that list.
+Calling sequence
+The walking API has a given calling sequence: first you need to
+initialize a rev_info structure, then add revisions to control what kind
+of revision list do you want to get, finally you can iterate over the
+revision list.
+ Initialize a rev_info structure with default values. The second
+ parameter may be NULL or can be prefix path, and then the `.prefix`
+ variable will be set to it. This is typically the first function you
+ want to call when you want to deal with a revision list. After calling
+ this function, you are free to customize options, like set
+ `.ignore_merges` to 0 if you don't want to ignore merges, and so on. See
+ `revision.h` for a complete list of available options.
+ This function can be used if you want to add commit objects as revision
+ information. You can use the `UNINTERESTING` object flag to indicate if
+ you want to include or exclude the given commit (and commits reachable
+ from the given commit) from the revision list.
+NOTE: If you have the commits as a string list then you probably want to
+use setup_revisions(), instead of parsing each string and using this
+ Parse revision information, filling in the `rev_info` structure, and
+ removing the used arguments from the argument list. Returns the number
+ of arguments left that weren't recognized, which are also moved to the
+ head of the argument list. The last parameter is used in case no
+ parameter given by the first two arguments.
+ Prepares the rev_info structure for a walk. You should check if it
+ returns any error (non-zero return code) and if it does not, you can
+ start using get_revision() to do the iteration.
+ Takes a pointer to a `rev_info` structure and iterates over it,
+ returning a `struct commit *` each time you call it. The end of the
+ revision list is indicated by returning a NULL pointer.
+Data structures
Talk about <revision.h>, things like:
* two diff_options, one for path limiting, another for output;
-* calling sequence: init_revisions(), setup_revsions(), get_revision();
+* remaining functions;
(Linus, JC, Dscho)