Provided by: git-core_1.1.3-1ubuntu1_i386 bug

NAME

       git-rev-list - Lists commit objects in reverse chronological order

SYNOPSIS

       git-rev-list [ --max-count=number ]
                    [ --max-age=timestamp ]
                    [ --min-age=timestamp ]
                    [ --sparse ]
                    [ --no-merges ]
                    [ --all ]
                    [ [ --merge-order [ --show-breaks ] ] | [ --topo-order ] ]
                    [ --parents ]
                    [ --objects [ --unpacked ] ]
                    [ --pretty | --header ]
                    [ --bisect ]
                    <commit>... [ -- <paths>... ]

DESCRIPTION

       Lists  commit  objects  in  reverse chronological order starting at the
       given commit(s), taking ancestry relationship  into  account.  This  is
       useful to produce human-readable log output.

       Commits  which  are  stated with a preceding ^ cause listing to stop at
       that point. Their parents are implied. "git-rev-list foo bar ^baz" thus
       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
       ^<commit1> <commit2>.

OPTIONS

       --pretty
              Print  the  contents  of the commit changesets in human-readable
              form.

       --header
              Print the contents of the commit in raw-format; each  record  is
              separated with a NUL character.

       --objects
              Print  the  object  IDs  of  any object referenced by the listed
              commits. git-rev-list --objects foo ^bar thus means "send me all
              object  IDs which I need to download if I have the commit object
              bar, but not foo".

       --unpacked
              Only useful with --objects; print the object IDs that are not in
              packs.

       --bisect
              Limit  output  to the one commit object which is roughly halfway
              between the included and excluded commits. Thus, if git-rev-list
              --bisect   foo   bar   baz   outputs  midpoint,  the  output  of
              git-rev-list foo ^midpoint and  git-rev-list  midpoint  bar  baz
              would  be  of  roughly the same length. Finding the change which
              introduces a regression is thus  reduced  to  a  binary  search:
              repeatedly  generate  and  test new ’midpoint’s until the commit
              chain is of length one.

       --max-count
              Limit the number of commits output.

       --max-age=timestamp, --min-age=timestamp
              Limit the commits output to specified time range.

       --sparse
              When optional paths are given,  the  command  outputs  only  the
              commits  that  changes  at  least  one of them, and also ignores
              merges that do not touch the given paths. This  flag  makes  the
              command  output all eligible commits (still subject to count and
              age limitation), but apply merge simplification nevertheless.

       --all  Pretend as if all the refs in $GIT_DIR/refs/ are listed  on  the
              command line as <commit>.

       --topo-order
              By  default,  the  commits  are  shown  in reverse chronological
              order. This option makes them appear in topological order  (i.e.
              descendant commits are shown before their parents).

       --merge-order
              When  specified  the  commit history is decomposed into a unique
              sequence of  minimal,  non-linear  epochs  and  maximal,  linear
              epochs.  Non-linear  epochs  are then linearised by sorting them
              into merge order, which is described below.

              Maximal, linear  epochs  correspond  to  periods  of  sequential
              development. Minimal, non-linear epochs correspond to periods of
              divergent development followed by a converging merge. The theory
              of     epochs     is     described    in    more    detail    at
              http://blackcubes.dyndns.org/epoch/:
              http://blackcubes.dyndns.org/epoch/.

              The  merge  order  for  a  non-linear  epoch  is  defined  as  a
              linearisation for which the following invariants are true:

              1. if a commit P is reachable from  commit  N,  commit  P  sorts
                 after commit N in the linearised list.

              2. if  Pi  and Pj are any two parents of a merge M (with i < j),
                 then any commit N, such that N is reachable from Pj  but  not
                 reachable  from  Pi,  sorts before all commits reachable from
                 Pi.

                 Invariant 1 states that later commits appear  before  earlier
                 commits they are derived from.

                 Invariant  2 states that commits unique to "later" parents in
                 a merge, appear before all commits from "earlier" parents  of
                 a merge.

       --show-breaks
              Each  item  of  the  list  is  output  with a 2-character prefix
              consisting of one of: (|), (^), (=) followed by a space.

              Commits marked with (=) represent  the  boundaries  of  minimal,
              non-linear epochs and correspond either to the start of a period
              of divergent development or to the end of such a period.

              Commits  marked  with  (|)  are  direct   parents   of   commits
              immediately preceding the marked commit in the list.

              Commits  marked  with  (^)  are  not  parents of the immediately
              preceding   commit.   These   "breaks"    represent    necessary
              discontinuities  implied by trying to represent an arbitrary DAG
              in a linear form.

              --show-breaks is only valid if --merge-order is also  specified.

AUTHOR

       Written by Linus Torvalds <torvalds@osdl.org>

       Original --merge-order logic by Jon Seymour <jon.seymour@gmail.com>

DOCUMENTATION

       Documentation  by  David  Greaves,  Junio  C  Hamano  and  the git-list
       <git@vger.kernel.org>.

GIT

       Part of the git(7) suite

                                                               GIT-REV-LIST(1)