summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2011-05-31 12:08:52 -0700
committerJunio C Hamano <gitster@pobox.com>2011-05-31 12:08:52 -0700
commit2cd517cdd3f52bcfb5a87e6991560cc000b11089 (patch)
tree40ae945ca7f062da8abe6e5861fd44f78db422cf
parentefd02e92c9961063bae63da7f7446868a38f14ce (diff)
parent3eafdc961fa6c44d40382be6a55b62b7e6edb248 (diff)
downloadgit-2cd517cdd3f52bcfb5a87e6991560cc000b11089.tar.gz
Merge branch 'jk/maint-remote-mirror-safer'
* jk/maint-remote-mirror-safer: remote: allow "-t" with fetch mirrors
-rw-r--r--builtin/remote.c4
-rwxr-xr-xt/t5505-remote.sh22
2 files changed, 24 insertions, 2 deletions
diff --git a/builtin/remote.c b/builtin/remote.c
index 8424152269..9ff1cac69b 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];
diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh
index 4e69c907d8..0d0222ea2a 100755
--- a/t/t5505-remote.sh
+++ b/t/t5505-remote.sh
@@ -347,6 +347,21 @@ test_expect_success 'fetch mirrors do not act as mirrors during push' '
)
'
+test_expect_success 'add fetch mirror with specific branches' '
+ git init --bare mirror-fetch/track &&
+ (cd mirror-fetch/track &&
+ git remote add --mirror=fetch -t heads/new parent ../parent
+ )
+'
+
+test_expect_success 'fetch mirror respects specific branches' '
+ (cd mirror-fetch/track &&
+ git fetch parent &&
+ git rev-parse --verify refs/heads/new &&
+ test_must_fail git rev-parse --verify refs/heads/renamed
+ )
+'
+
test_expect_success 'add --mirror=push' '
mkdir mirror-push &&
git init --bare mirror-push/public &&
@@ -382,6 +397,13 @@ test_expect_success 'push mirrors do not act as mirrors during fetch' '
)
'
+test_expect_success 'push mirrors do not allow you to specify refs' '
+ git init mirror-push/track &&
+ (cd mirror-push/track &&
+ test_must_fail git remote add --mirror=push -t new public ../public
+ )
+'
+
test_expect_success 'add alt && prune' '
(mkdir alttst &&
cd alttst &&