rev-list: documentation and test for --left/right-only
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e0b9c34f7e
commit
59c8afdf47
@ -31,6 +31,8 @@ SYNOPSIS
|
|||||||
[ \--parents ]
|
[ \--parents ]
|
||||||
[ \--timestamp ]
|
[ \--timestamp ]
|
||||||
[ \--left-right ]
|
[ \--left-right ]
|
||||||
|
[ \--left-only ]
|
||||||
|
[ \--right-only ]
|
||||||
[ \--cherry-pick ]
|
[ \--cherry-pick ]
|
||||||
[ \--encoding[=<encoding>] ]
|
[ \--encoding[=<encoding>] ]
|
||||||
[ \--(author|committer|grep)=<pattern> ]
|
[ \--(author|committer|grep)=<pattern> ]
|
||||||
|
@ -319,6 +319,19 @@ from the other branch (for example, "3rd on b" may be cherry-picked
|
|||||||
from branch A). With this option, such pairs of commits are
|
from branch A). With this option, such pairs of commits are
|
||||||
excluded from the output.
|
excluded from the output.
|
||||||
|
|
||||||
|
--left-only::
|
||||||
|
--right-only::
|
||||||
|
|
||||||
|
List only commits on the respective side of a symmetric range,
|
||||||
|
i.e. only those which would be marked `<` resp. `>` by
|
||||||
|
`--left-right`.
|
||||||
|
+
|
||||||
|
For example, `--cherry-pick --right-only A...B` omits those
|
||||||
|
commits from `B` which are in `A` or are patch-equivalent to a commit in
|
||||||
|
`A`. In other words, this lists the `{plus}` commits from `git cherry A B`.
|
||||||
|
More precisely, `--cherry-pick --right-only --no-merges` gives the exact
|
||||||
|
list.
|
||||||
|
|
||||||
-g::
|
-g::
|
||||||
--walk-reflogs::
|
--walk-reflogs::
|
||||||
|
|
||||||
|
@ -4,14 +4,14 @@ test_description='test git rev-list --cherry-pick -- file'
|
|||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
|
|
||||||
# A---B---D
|
# A---B---D---F
|
||||||
# \
|
# \
|
||||||
# \
|
# \
|
||||||
# C---E
|
# C---E
|
||||||
#
|
#
|
||||||
# B changes a file foo.c, adding a line of text. C changes foo.c as
|
# B changes a file foo.c, adding a line of text. C changes foo.c as
|
||||||
# well as bar.c, but the change in foo.c was identical to change B.
|
# well as bar.c, but the change in foo.c was identical to change B.
|
||||||
# D and C change bar in the same way, E differently.
|
# D and C change bar in the same way, E and F differently.
|
||||||
|
|
||||||
test_expect_success setup '
|
test_expect_success setup '
|
||||||
echo Hallo > foo &&
|
echo Hallo > foo &&
|
||||||
@ -40,7 +40,12 @@ test_expect_success setup '
|
|||||||
git add bar &&
|
git add bar &&
|
||||||
test_tick &&
|
test_tick &&
|
||||||
git commit -m "D" &&
|
git commit -m "D" &&
|
||||||
git tag D
|
git tag D &&
|
||||||
|
echo Nello > bar &&
|
||||||
|
git add bar &&
|
||||||
|
test_tick &&
|
||||||
|
git commit -m "F" &&
|
||||||
|
git tag F
|
||||||
'
|
'
|
||||||
|
|
||||||
cat >expect <<EOF
|
cat >expect <<EOF
|
||||||
@ -83,11 +88,30 @@ test_expect_success 'bar does not come up empty' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
cat >expect <<EOF
|
cat >expect <<EOF
|
||||||
|
<tags/F
|
||||||
>tags/E
|
>tags/E
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_expect_success '--cherry-pick bar does not come up empty (II)' '
|
test_expect_success '--cherry-pick bar does not come up empty (II)' '
|
||||||
git rev-list --left-right --cherry-pick D...E -- bar > actual &&
|
git rev-list --left-right --cherry-pick F...E -- bar > actual &&
|
||||||
|
git name-rev --stdin --name-only --refs="*tags/*" \
|
||||||
|
< actual > actual.named &&
|
||||||
|
test_cmp actual.named expect
|
||||||
|
'
|
||||||
|
|
||||||
|
cat >expect <<EOF
|
||||||
|
tags/E
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success '--cherry-pick --right-only' '
|
||||||
|
git rev-list --cherry-pick --right-only F...E -- bar > actual &&
|
||||||
|
git name-rev --stdin --name-only --refs="*tags/*" \
|
||||||
|
< actual > actual.named &&
|
||||||
|
test_cmp actual.named expect
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success '--cherry-pick --left-only' '
|
||||||
|
git rev-list --cherry-pick --left-only E...F -- bar > actual &&
|
||||||
git name-rev --stdin --name-only --refs="*tags/*" \
|
git name-rev --stdin --name-only --refs="*tags/*" \
|
||||||
< actual > actual.named &&
|
< actual > actual.named &&
|
||||||
test_cmp actual.named expect
|
test_cmp actual.named expect
|
||||||
|
Loading…
Reference in New Issue
Block a user