Topo-sort before --simplify-merges
[gitweb.git] / Documentation / git-rev-list.txt
index f2c5fa9f4cd598681ccdb6873f98fee5d37e845b..fd1de92e34b459cdc89928e1561ee6934cd63c19 100644 (file)
@@ -1,6 +1,5 @@
 git-rev-list(1)
 ===============
-v0.1, May 2005
 
 NAME
 ----
@@ -9,14 +8,95 @@ git-rev-list - Lists commit objects in reverse chronological order
 
 SYNOPSIS
 --------
-'git-rev-list' <commit>
+[verse]
+'git-rev-list' [ \--max-count=number ]
+            [ \--skip=number ]
+            [ \--max-age=timestamp ]
+            [ \--min-age=timestamp ]
+            [ \--sparse ]
+            [ \--no-merges ]
+            [ \--first-parent ]
+            [ \--remove-empty ]
+            [ \--full-history ]
+            [ \--not ]
+            [ \--all ]
+            [ \--branches ]
+            [ \--tags ]
+            [ \--remotes ]
+            [ \--stdin ]
+            [ \--quiet ]
+            [ \--topo-order ]
+            [ \--parents ]
+            [ \--timestamp ]
+            [ \--left-right ]
+            [ \--cherry-pick ]
+            [ \--encoding[=<encoding>] ]
+            [ \--(author|committer|grep)=<pattern> ]
+            [ \--regexp-ignore-case | \-i ]
+            [ \--extended-regexp | \-E ]
+            [ \--fixed-strings | \-F ]
+            [ \--date={local|relative|default|iso|rfc|short} ]
+            [ [\--objects | \--objects-edge] [ \--unpacked ] ]
+            [ \--pretty | \--header ]
+            [ \--bisect ]
+            [ \--bisect-vars ]
+            [ \--bisect-all ]
+            [ \--merge ]
+            [ \--reverse ]
+            [ \--walk-reflogs ]
+            [ \--no-walk ] [ \--do-walk ]
+            <commit>... [ \-- <paths>... ]
 
 DESCRIPTION
 -----------
+
 Lists commit objects in reverse chronological order starting at the
-given commit, taking ancestry relationship into account.  This is
+given commit(s), taking ancestry relationship into account.  This is
 useful to produce human-readable log output.
 
+Commits which are stated with a preceding '{caret}' cause listing to
+stop at that point. Their parents are implied. Thus the following
+command:
+
+-----------------------------------------------------------------------
+       $ git rev-list foo bar ^baz
+-----------------------------------------------------------------------
+
+means "list all the commits which are included in 'foo' and 'bar', but
+not in 'baz'".
+
+A special notation "'<commit1>'..'<commit2>'" can be used as a
+short-hand for "{caret}'<commit1>' '<commit2>'". For example, either of
+the following may be used interchangeably:
+
+-----------------------------------------------------------------------
+       $ git rev-list origin..HEAD
+       $ git rev-list HEAD ^origin
+-----------------------------------------------------------------------
+
+Another special notation is "'<commit1>'...'<commit2>'" which is useful
+for merges.  The resulting set of commits is the symmetric difference
+between the two operands.  The following two commands are equivalent:
+
+-----------------------------------------------------------------------
+       $ git rev-list A B --not $(git merge-base --all A B)
+       $ git rev-list A...B
+-----------------------------------------------------------------------
+
+'git-rev-list' is a very essential git program, since it
+provides the ability to build and traverse commit ancestry graphs. For
+this reason, it has a lot of different options that enables it to be
+used by commands as different as 'git-bisect' and
+'git-repack'.
+
+OPTIONS
+-------
+
+:git-rev-list: 1
+include::rev-list-options.txt[]
+
+include::pretty-formats.txt[]
+
 
 Author
 ------
@@ -24,9 +104,9 @@ Written by Linus Torvalds <torvalds@osdl.org>
 
 Documentation
 --------------
-Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+Documentation by David Greaves, Junio C Hamano, Jonas Fonseca
+and the git-list <git@vger.kernel.org>.
 
 GIT
 ---
-Part of the link:git.html[git] suite
-
+Part of the linkgit:git[1] suite