diff --git a/Documentation/config.txt b/Documentation/config.txt index 92f851e797ca820f6f6126391eafee0d4eec7e26..630e7ca0c9ff2d7c7ac9c6b5cd66d1cb060ae9ef 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -1578,7 +1578,9 @@ remote..uploadpack:: remote..tagopt:: Setting this value to \--no-tags disables automatic tag following when - fetching from remote + fetching from remote . Setting it to \--tags will fetch every + tag from remote , even if they are not reachable from remote + branch heads. remote..vcs:: Setting this to a value will cause git to interact with diff --git a/contrib/examples/git-fetch.sh b/contrib/examples/git-fetch.sh index e44af2c86d8e7e44bc79aafcc8ccef3806804720..a314273bd51a865d9d5fc5cd899a51ffa70388a5 100755 --- a/contrib/examples/git-fetch.sh +++ b/contrib/examples/git-fetch.sh @@ -127,10 +127,12 @@ then orig_head=$(git rev-parse --verify HEAD 2>/dev/null) fi -# Allow --notags from remote.$1.tagopt +# Allow --tags/--notags from remote.$1.tagopt case "$tags$no_tags" in '') case "$(git config --get "remote.$1.tagopt")" in + --tags) + tags=t ;; --no-tags) no_tags=t ;; esac diff --git a/remote.c b/remote.c index c70181cdc621b27ed02aba17b3e4f7ab64518e9f..0f073e0b5f9f08510af3a9e0ab5aed106475b30f 100644 --- a/remote.c +++ b/remote.c @@ -443,6 +443,8 @@ static int handle_config(const char *key, const char *value, void *cb) } else if (!strcmp(subkey, ".tagopt")) { if (!strcmp(value, "--no-tags")) remote->fetch_tags = -1; + else if (!strcmp(value, "--tags")) + remote->fetch_tags = 2; } else if (!strcmp(subkey, ".proxy")) { return git_config_string((const char **)&remote->http_proxy, key, value);