mirror of
https://github.com/git/git
synced 2024-08-26 19:19:18 +00:00
Merge branch 'dj/fetch-tagopt'
* dj/fetch-tagopt: fetch: allow command line --tags to override config
This commit is contained in:
commit
381b2e7698
|
@ -1646,7 +1646,9 @@ remote.<name>.tagopt::
|
|||
Setting this value to \--no-tags disables automatic tag following when
|
||||
fetching from remote <name>. Setting it to \--tags will fetch every
|
||||
tag from remote <name>, even if they are not reachable from remote
|
||||
branch heads.
|
||||
branch heads. Passing these flags directly to linkgit:git-fetch[1] can
|
||||
override this setting. See options \--tags and \--no-tags of
|
||||
linkgit:git-fetch[1].
|
||||
|
||||
remote.<name>.vcs::
|
||||
Setting this to a value <vcs> will cause git to interact with
|
||||
|
|
|
@ -49,7 +49,9 @@ ifndef::git-pull[]
|
|||
endif::git-pull[]
|
||||
By default, tags that point at objects that are downloaded
|
||||
from the remote repository are fetched and stored locally.
|
||||
This option disables this automatic tag following.
|
||||
This option disables this automatic tag following. The default
|
||||
behavior for a remote may be specified with the remote.<name>.tagopt
|
||||
setting. See linkgit:git-config[1].
|
||||
|
||||
-t::
|
||||
--tags::
|
||||
|
@ -58,7 +60,9 @@ endif::git-pull[]
|
|||
objects reachable from the branch heads that are being
|
||||
tracked will not be fetched by this mechanism. This
|
||||
flag lets all tags and their associated objects be
|
||||
downloaded.
|
||||
downloaded. The default behavior for a remote may be
|
||||
specified with the remote.<name>.tagopt setting. See
|
||||
linkgit:git-config[1].
|
||||
|
||||
-u::
|
||||
--update-head-ok::
|
||||
|
|
|
@ -659,10 +659,12 @@ static int do_fetch(struct transport *transport,
|
|||
|
||||
for_each_ref(add_existing, &existing_refs);
|
||||
|
||||
if (transport->remote->fetch_tags == 2 && tags != TAGS_UNSET)
|
||||
tags = TAGS_SET;
|
||||
if (transport->remote->fetch_tags == -1)
|
||||
tags = TAGS_UNSET;
|
||||
if (tags == TAGS_DEFAULT) {
|
||||
if (transport->remote->fetch_tags == 2)
|
||||
tags = TAGS_SET;
|
||||
if (transport->remote->fetch_tags == -1)
|
||||
tags = TAGS_UNSET;
|
||||
}
|
||||
|
||||
if (!transport->get_refs_list || !transport->fetch)
|
||||
die("Don't know how to fetch from %s", transport->url);
|
||||
|
|
41
t/t5525-fetch-tagopt.sh
Executable file
41
t/t5525-fetch-tagopt.sh
Executable file
|
@ -0,0 +1,41 @@
|
|||
#!/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)
|
||||
}
|
||||
|
||||
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
|
||||
'
|
||||
|
||||
test_expect_success "fetch --tags with tagopt=--no-tags gets tag" '
|
||||
git fetch --tags remote_one &&
|
||||
git show-ref tag_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
|
||||
'
|
||||
|
||||
test_expect_success "fetch with tagopt=--tags gets tag" '
|
||||
git fetch remote_two &&
|
||||
git show-ref tag_two
|
||||
'
|
||||
test_done
|
Loading…
Reference in a new issue