remote: allow "-t" with fetch mirrors
authorJeff King <peff@peff.net>
Thu, 26 May 2011 15:11:00 +0000 (11:11 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 26 May 2011 18:38:18 +0000 (11:38 -0700)
commit3eafdc961fa6c44d40382be6a55b62b7e6edb248
treeb7aefcbc339e7c30191155ba8a34091607e62c80
parent099024861021830f9d4c7db4c64c844bf9d5ebd9
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>
builtin/remote.c
t/t5505-remote.sh