mirror of
https://github.com/git/git.git
synced 2024-11-24 18:33:43 +08:00
c5a84e92a2
Previously, fetch's "--tags" option was considered equivalent to
specifying the refspec "refs/tags/*:refs/tags/*" on the command line;
in particular, it caused the remote.<name>.refspec configuration to be
ignored.
But it is not very useful to fetch tags without also fetching other
references, whereas it *is* quite useful to be able to fetch tags *in
addition to* other references. So change the semantics of this option
to do the latter.
If a user wants to fetch *only* tags, then it is still possible to
specifying an explicit refspec:
git fetch <remote> 'refs/tags/*:refs/tags/*'
Please note that the documentation prior to 1.8.0.3 was ambiguous
about this aspect of "fetch --tags" behavior. Commit
f0cb2f137c
2012-12-14 fetch --tags: clarify documentation
made the documentation match the old behavior. This commit changes
the documentation to match the new behavior.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
55 lines
1.2 KiB
Bash
Executable File
55 lines
1.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='tagopt variable affects "git fetch" and is overridden by commandline.'
|
|
|
|
. ./test-lib.sh
|
|
|
|
setup_clone () {
|
|
git clone --mirror . $1 &&
|
|
git remote add remote_$1 $1 &&
|
|
(cd $1 &&
|
|
git tag tag_$1 &&
|
|
git branch branch_$1)
|
|
}
|
|
|
|
test_expect_success setup '
|
|
test_commit test &&
|
|
setup_clone one &&
|
|
git config remote.remote_one.tagopt --no-tags &&
|
|
setup_clone two &&
|
|
git config remote.remote_two.tagopt --tags
|
|
'
|
|
|
|
test_expect_success "fetch with tagopt=--no-tags does not get tag" '
|
|
git fetch remote_one &&
|
|
test_must_fail git show-ref tag_one &&
|
|
git show-ref remote_one/branch_one
|
|
'
|
|
|
|
test_expect_success "fetch --tags with tagopt=--no-tags gets tag" '
|
|
(
|
|
cd one &&
|
|
git branch second_branch_one
|
|
) &&
|
|
git fetch --tags remote_one &&
|
|
git show-ref tag_one &&
|
|
git show-ref remote_one/second_branch_one
|
|
'
|
|
|
|
test_expect_success "fetch --no-tags with tagopt=--tags does not get tag" '
|
|
git fetch --no-tags remote_two &&
|
|
test_must_fail git show-ref tag_two &&
|
|
git show-ref remote_two/branch_two
|
|
'
|
|
|
|
test_expect_success "fetch with tagopt=--tags gets tag" '
|
|
(
|
|
cd two &&
|
|
git branch second_branch_two
|
|
) &&
|
|
git fetch remote_two &&
|
|
git show-ref tag_two &&
|
|
git show-ref remote_two/second_branch_two
|
|
'
|
|
test_done
|