2009-08-09 18:01:48 +08:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
test_description='test auto-generated merge messages'
|
2020-11-19 07:44:40 +08:00
|
|
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
tests: mark tests relying on the current default for `init.defaultBranch`
In addition to the manual adjustment to let the `linux-gcc` CI job run
the test suite with `master` and then with `main`, this patch makes sure
that GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME is set in all test scripts
that currently rely on the initial branch name being `master by default.
To determine which test scripts to mark up, the first step was to
force-set the default branch name to `master` in
- all test scripts that contain the keyword `master`,
- t4211, which expects `t/t4211/history.export` with a hard-coded ref to
initialize the default branch,
- t5560 because it sources `t/t556x_common` which uses `master`,
- t8002 and t8012 because both source `t/annotate-tests.sh` which also
uses `master`)
This trick was performed by this command:
$ sed -i '/^ *\. \.\/\(test-lib\|lib-\(bash\|cvs\|git-svn\)\|gitweb-lib\)\.sh$/i\
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master\
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME\
' $(git grep -l master t/t[0-9]*.sh) \
t/t4211*.sh t/t5560*.sh t/t8002*.sh t/t8012*.sh
After that, careful, manual inspection revealed that some of the test
scripts containing the needle `master` do not actually rely on a
specific default branch name: either they mention `master` only in a
comment, or they initialize that branch specificially, or they do not
actually refer to the current default branch. Therefore, the
aforementioned modification was undone in those test scripts thusly:
$ git checkout HEAD -- \
t/t0027-auto-crlf.sh t/t0060-path-utils.sh \
t/t1011-read-tree-sparse-checkout.sh \
t/t1305-config-include.sh t/t1309-early-config.sh \
t/t1402-check-ref-format.sh t/t1450-fsck.sh \
t/t2024-checkout-dwim.sh \
t/t2106-update-index-assume-unchanged.sh \
t/t3040-subprojects-basic.sh t/t3301-notes.sh \
t/t3308-notes-merge.sh t/t3423-rebase-reword.sh \
t/t3436-rebase-more-options.sh \
t/t4015-diff-whitespace.sh t/t4257-am-interactive.sh \
t/t5323-pack-redundant.sh t/t5401-update-hooks.sh \
t/t5511-refspec.sh t/t5526-fetch-submodules.sh \
t/t5529-push-errors.sh t/t5530-upload-pack-error.sh \
t/t5548-push-porcelain.sh \
t/t5552-skipping-fetch-negotiator.sh \
t/t5572-pull-submodule.sh t/t5608-clone-2gb.sh \
t/t5614-clone-submodules-shallow.sh \
t/t7508-status.sh t/t7606-merge-custom.sh \
t/t9302-fast-import-unpack-limit.sh
We excluded one set of test scripts in these commands, though: the range
of `git p4` tests. The reason? `git p4` stores the (foreign) remote
branch in the branch called `p4/master`, which is obviously not the
default branch. Manual analysis revealed that only five of these tests
actually require a specific default branch name to pass; They were
modified thusly:
$ sed -i '/^ *\. \.\/lib-git-p4\.sh$/i\
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master\
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME\
' t/t980[0167]*.sh t/t9811*.sh
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-11-19 07:44:19 +08:00
|
|
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
|
|
|
|
2009-08-09 18:01:48 +08:00
|
|
|
. ./test-lib.sh
|
|
|
|
|
|
|
|
check_oneline() {
|
|
|
|
echo "$1" | sed "s/Q/'/g" >expect &&
|
|
|
|
git log -1 --pretty=tformat:%s >actual &&
|
|
|
|
test_cmp expect actual
|
|
|
|
}
|
|
|
|
|
|
|
|
test_expect_success 'merge local branch' '
|
2020-11-19 07:44:40 +08:00
|
|
|
test_commit main-1 &&
|
2009-08-09 18:01:48 +08:00
|
|
|
git checkout -b local-branch &&
|
|
|
|
test_commit branch-1 &&
|
2020-11-19 07:44:40 +08:00
|
|
|
git checkout main &&
|
|
|
|
test_commit main-2 &&
|
2009-08-09 18:01:48 +08:00
|
|
|
git merge local-branch &&
|
2020-07-31 01:06:42 +08:00
|
|
|
check_oneline "Merge branch Qlocal-branchQ"
|
2009-08-09 18:01:48 +08:00
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'merge octopus branches' '
|
2020-11-19 07:44:40 +08:00
|
|
|
git checkout -b octopus-a main &&
|
2009-08-09 18:01:48 +08:00
|
|
|
test_commit octopus-1 &&
|
2020-11-19 07:44:40 +08:00
|
|
|
git checkout -b octopus-b main &&
|
2009-08-09 18:01:48 +08:00
|
|
|
test_commit octopus-2 &&
|
2020-11-19 07:44:40 +08:00
|
|
|
git checkout main &&
|
2009-08-09 18:01:48 +08:00
|
|
|
git merge octopus-a octopus-b &&
|
2020-07-31 01:06:42 +08:00
|
|
|
check_oneline "Merge branches Qoctopus-aQ and Qoctopus-bQ"
|
2009-08-09 18:01:48 +08:00
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'merge tag' '
|
2020-11-19 07:44:40 +08:00
|
|
|
git checkout -b tag-branch main &&
|
2009-08-09 18:01:48 +08:00
|
|
|
test_commit tag-1 &&
|
2020-11-19 07:44:40 +08:00
|
|
|
git checkout main &&
|
|
|
|
test_commit main-3 &&
|
2009-08-09 18:01:48 +08:00
|
|
|
git merge tag-1 &&
|
2020-07-31 01:06:42 +08:00
|
|
|
check_oneline "Merge tag Qtag-1Q"
|
2009-08-09 18:01:48 +08:00
|
|
|
'
|
|
|
|
|
merge: fix incorrect merge message for ambiguous tag/branch
If we have both a tag and a branch named "foo", then calling
"git merge foo" will warn about the ambiguous ref, but merge
the tag.
When generating the commit message, though, we simply
checked whether "refs/heads/foo" existed, and if it did,
assumed it was a branch. This led to the statement "Merge
branch 'foo'" in the commit message, which is quite wrong.
Instead, we should use dwim_ref to find the actual ref used,
and describe it appropriately.
In addition to the test in t7608, we must also tweak the
expected output of t4202, which was accidentally triggering
this bug.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2009-08-09 18:02:24 +08:00
|
|
|
test_expect_success 'ambiguous tag' '
|
2020-11-19 07:44:40 +08:00
|
|
|
git checkout -b ambiguous main &&
|
2009-08-09 18:01:48 +08:00
|
|
|
test_commit ambiguous &&
|
2020-11-19 07:44:40 +08:00
|
|
|
git checkout main &&
|
|
|
|
test_commit main-4 &&
|
2009-08-09 18:01:48 +08:00
|
|
|
git merge ambiguous &&
|
2020-07-31 01:06:42 +08:00
|
|
|
check_oneline "Merge tag QambiguousQ"
|
2009-08-09 18:01:48 +08:00
|
|
|
'
|
|
|
|
|
2010-11-02 23:31:25 +08:00
|
|
|
test_expect_success 'remote-tracking branch' '
|
2020-11-19 07:44:40 +08:00
|
|
|
git checkout -b remote main &&
|
2009-08-09 18:02:51 +08:00
|
|
|
test_commit remote-1 &&
|
2020-11-19 07:44:40 +08:00
|
|
|
git update-ref refs/remotes/origin/main remote &&
|
|
|
|
git checkout main &&
|
|
|
|
test_commit main-5 &&
|
|
|
|
git merge origin/main &&
|
|
|
|
check_oneline "Merge remote-tracking branch Qorigin/mainQ"
|
2009-08-09 18:02:51 +08:00
|
|
|
'
|
|
|
|
|
2009-08-09 18:01:48 +08:00
|
|
|
test_done
|