Browse Source

Enumerate revision range specifiers in the documentation

It was a bit hard to learn how <rev>^@, <rev>^! and various other
forms of range specifiers are used, because they were discussed
mostly in the prose part of the documentation, unlike various forms
of extended SHA-1 expressions that are listed in an enumerated list.

Also add a few more examples showing use of <rev>, <rev>..<rev> and
<rev>^! forms, stolen from a patch by Max Horn.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Junio C Hamano 12 years ago
parent
commit
ca5ee2d1fb
  1. 31
      Documentation/revisions.txt

31
Documentation/revisions.txt

@ -218,13 +218,44 @@ and its parent commits exist. The 'r1{caret}@' notation means all @@ -218,13 +218,44 @@ and its parent commits exist. The 'r1{caret}@' notation means all
parents of 'r1'. 'r1{caret}!' includes commit 'r1' but excludes
all of its parents.

To summarize:

'<rev>'::
Include commits that are reachable from (i.e. ancestors of)
<rev>.

'{caret}<rev>'::
Exclude commits that are reachable from (i.e. ancestors of)
<rev>.

'<rev1>..<rev2>'::
Include commits that are reachable from <rev2> but exclude
those that are reachable from <rev1>.

'<rev1>\...<rev2>'::
Include commits that are reachable from either <rev1> or
<rev2> but exclude those that are reachable from both.

'<rev>{caret}@', e.g. 'HEAD{caret}@'::
A suffix '{caret}' followed by an at sign is the same as listing
all parents of '<rev>' (meaning, include anything reachable from
its parents, but not the commit itself).

'<rev>{caret}!', e.g. 'HEAD{caret}!'::
A suffix '{caret}' followed by an exclamation mark is the same
as giving commit '<rev>' and then all its parents prefixed with
'{caret}' to exclude them (and their ancestors).

Here are a handful of examples:

D G H D
D F G H I J D F
^G D H D
^D B E I J F B
B..C C
B...C G H D E B C
^D B C E I J F B C
C I J F C
C^@ I J F
C^! C
F^! D G H D F

Loading…
Cancel
Save