[PATCH 3/3] rev-list: documentation and test for --cherry
From: Michael J Gruber <hidden>
Date: 2016-06-15 22:50:35
Subsystem:
documentation, the rest · Maintainers:
Jonathan Corbet, Linus Torvalds
Signed-off-by: Michael J Gruber <redacted> --- Documentation/git-rev-list.txt | 1 + Documentation/rev-list-options.txt | 10 ++++++++++ t/t6007-rev-list-cherry-pick-file.sh | 25 +++++++++++++++++++++---- 3 files changed, 32 insertions(+), 4 deletions(-)
diff --git a/Documentation/git-rev-list.txt b/Documentation/git-rev-list.txt
index 8e1e329..a74fb97 100644
--- a/Documentation/git-rev-list.txt
+++ b/Documentation/git-rev-list.txt@@ -32,6 +32,7 @@ SYNOPSIS [ \--timestamp ] [ \--left-right ] [ \--cherry-pick ] + [ \--cherry ] [ \--encoding[=<encoding>] ] [ \--(author|committer|grep)=<pattern> ] [ \--regexp-ignore-case | -i ]
diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 44a2ef1..3a68629 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt@@ -319,6 +319,16 @@ from the other branch (for example, "3rd on b" may be cherry-picked from branch A). With this option, such pairs of commits are excluded from the output. +--cherry:: + + Omit any commit that instroduces the same change as + another commit on the left side of a symmetric or asymmetric + range (they are treated the same). ++ +For example, `git rev-list --cherry 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`. + -g:: --walk-reflogs::
diff --git a/t/t6007-rev-list-cherry-pick-file.sh b/t/t6007-rev-list-cherry-pick-file.sh
index 64b72a3..56efdd0 100755
--- a/t/t6007-rev-list-cherry-pick-file.sh
+++ b/t/t6007-rev-list-cherry-pick-file.sh@@ -4,14 +4,14 @@ test_description='test git rev-list --cherry-pick -- file' . ./test-lib.sh -# A---B---D +# A---B---D---F # \ # \ # C---E # # 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. -# 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 ' echo Hallo > foo &&
@@ -40,7 +40,12 @@ test_expect_success setup ' git add bar && test_tick && 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
@@ -83,11 +88,23 @@ test_expect_success 'bar does not come up empty' ' ' cat >expect <<EOF +<tags/F >tags/E EOF 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 bar does not come up empty' ' + git rev-list --cherry F..E -- bar > actual && git name-rev --stdin --name-only --refs="*tags/*" \ < actual > actual.named && test_cmp actual.named expect
--
1.7.4.1.74.gf39475.dirty