summaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorLibravatar Jeff King <peff@peff.net>2011-05-26 11:11:00 -0400
committerLibravatar Junio C Hamano <gitster@pobox.com>2011-05-26 11:38:18 -0700
commit3eafdc961fa6c44d40382be6a55b62b7e6edb248 (patch)
treeb7aefcbc339e7c30191155ba8a34091607e62c80 /builtin
parentremote: deprecate --mirror (diff)
downloadtgif-3eafdc961fa6c44d40382be6a55b62b7e6edb248.tar.xz
remote: allow "-t" with fetch mirrors
Commit 13fc2c1 (remote: disallow some nonsensical option combinations, 2011-03-30) made it impossible to use "remote add -t foo --mirror". The argument was that specifying specific branches is useless because: 1. Push mirrors do not want a refspec at all. 2. The point of fetch mirroring is to use a broad refspec like "refs/*", but using "-t" overrides that. Point (1) is valid; "-t" with push mirrors is useless. But point (2) ignored another side effect of using --mirror: it fetches the refs directly into the refs/ namespace as they are found upstream, instead of placing them in a separate-remote layout. So 13fc2c1 was overly constrictive, and disallowed reasonable specific-branch mirroring, like: git remote add -t heads/foo -t heads/bar --mirror=fetch which makes the local "foo" and "bar" branches direct mirrors of the remote, but does not fetch anything else. This patch restores the original behavior, but only for fetch mirrors. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r--builtin/remote.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/builtin/remote.c b/builtin/remote.c
index eb1229d689..aa7111824d 100644
--- a/builtin/remote.c
+++ b/builtin/remote.c
@@ -193,8 +193,8 @@ static int add(int argc, const char **argv)
if (mirror && master)
die("specifying a master branch makes no sense with --mirror");
- if (mirror && track.nr)
- die("specifying branches to track makes no sense with --mirror");
+ if (mirror && !(mirror & MIRROR_FETCH) && track.nr)
+ die("specifying branches to track makes sense only with fetch mirrors");
name = argv[0];
url = argv[1];