mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
![Johannes Schindelin](/assets/img/avatar_default.png)
We used to rely on the fact that cherry-pick would trigger the code path to set limited = 1 in handle_commit(), when an uninteresting commit was encountered. However, when cherry picking between two independent branches, i.e. when there are no merge bases, and there is only linear development (which can happen when you cvsimport a fork of a project), no uninteresting commit will be encountered. So set limited = 1 when --cherry-pick was asked for. Noticed by Martin Bähr. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
58 lines
1.2 KiB
Bash
Executable file
58 lines
1.2 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='test git rev-list --cherry-pick -- file'
|
|
|
|
. ./test-lib.sh
|
|
|
|
# A---B
|
|
# \
|
|
# \
|
|
# C
|
|
#
|
|
# 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.
|
|
|
|
test_expect_success setup '
|
|
echo Hallo > foo &&
|
|
git add foo &&
|
|
test_tick &&
|
|
git commit -m "A" &&
|
|
git tag A &&
|
|
git checkout -b branch &&
|
|
echo Bello > foo &&
|
|
echo Cello > bar &&
|
|
git add foo bar &&
|
|
test_tick &&
|
|
git commit -m "C" &&
|
|
git tag C &&
|
|
git checkout master &&
|
|
git checkout branch foo &&
|
|
test_tick &&
|
|
git commit -m "B" &&
|
|
git tag B
|
|
'
|
|
|
|
test_expect_success '--cherry-pick foo comes up empty' '
|
|
test -z "$(git rev-list --left-right --cherry-pick B...C -- foo)"
|
|
'
|
|
|
|
test_expect_success '--cherry-pick bar does not come up empty' '
|
|
! test -z "$(git rev-list --left-right --cherry-pick B...C -- bar)"
|
|
'
|
|
|
|
test_expect_success '--cherry-pick with independent, but identical branches' '
|
|
git symbolic-ref HEAD refs/heads/independent &&
|
|
rm .git/index &&
|
|
echo Hallo > foo &&
|
|
git add foo &&
|
|
test_tick &&
|
|
git commit -m "independent" &&
|
|
echo Bello > foo &&
|
|
test_tick &&
|
|
git commit -m "independent, too" foo &&
|
|
test -z "$(git rev-list --left-right --cherry-pick \
|
|
HEAD...master -- foo)"
|
|
'
|
|
|
|
test_done
|