1git-rev-list(1) 2=============== 3v0.1, May 2005 4 5NAME 6---- 7git-rev-list - Lists commit objects in reverse chronological order 8 9 10SYNOPSIS 11-------- 12'git-rev-list' [ *--max-count*=number ] [ *--max-age*=timestamp ] [ *--min-age*=timestamp ] [ *--merge-order* [ *--show-breaks* ] ] <commit> 13 14DESCRIPTION 15----------- 16Lists commit objects in reverse chronological order starting at the 17given commit, taking ancestry relationship into account. This is 18useful to produce human-readable log output. 19 20If *--merge-order* is specified, the commit history is decomposed into a 21unique sequence of minimal, non-linear epochs and maximal, linear epochs. 22Non-linear epochs are then linearised by sorting them into merge order, which 23is described below. 24 25Maximal, linear epochs correspond to periods of sequential development. 26Minimal, non-linear epochs correspond to periods of divergent development 27followed by a converging merge. The theory of epochs is described in more 28detail at 29link:http://blackcubes.dyndns.org/epoch/[http://blackcubes.dyndns.org/epoch/]. 30 31The merge order for a non-linear epoch is defined as a linearisation for which 32the following invariants are true: 33 34 1. if a commit P is reachable from commit N, commit P sorts after commit N 35 in the linearised list. 36 2. if Pi and Pj are any two parents of a merge M (with i < j), then any 37 commit N, such that N is reachable from Pj but not reachable from Pi, 38 sorts before all commits reachable from Pi. 39 40Invariant 1 states that later commits appear before earlier commits they are 41derived from. 42 43Invariant 2 states that commits unique to "later" parents in a merge, appear 44before all commits from "earlier" parents of a merge. 45 46If *--show-breaks* is specified, each item of the list is output with a 472-character prefix consisting of one of: (|), (^), (=) followed by a space. 48 49Commits marked with (=) represent the boundaries of minimal, non-linear epochs 50and correspond either to the start of a period of divergent development or to 51the end of such a period. 52 53Commits marked with (|) are direct parents of commits immediately preceding 54the marked commit in the list. 55 56Commits marked with (^) are not parents of the immediately preceding commit. 57These "breaks" represent necessary discontinuities implied by trying to 58represent an arbtirary DAG in a linear form. 59 60*--show-breaks* is only valid if *--merge-order* is also specified. 61 62Author 63------ 64Written by Linus Torvalds <torvalds@osdl.org> 65 66Original *--merge-order* logic by Jon Seymour <jon.seymour@gmail.com> 67 68Documentation 69-------------- 70Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>. 71 72GIT 73--- 74Part of the link:git.html[git] suite 75