Merge branch 'cn/fetch-prune' into maint

* cn/fetch-prune:
  fetch: treat --tags like refs/tags/*:refs/tags/* when pruning
  fetch: honor the user-provided refspecs when pruning refs
  remote: separate out the remote_find_tracking logic into query_refspecs
  t5510: add tests for fetch --prune
  fetch: free all the additional refspecs
This commit is contained in:
Junio C Hamano
2011-11-01 15:51:01 -07:00
5 changed files with 137 additions and 55 deletions

View File

@ -76,6 +76,56 @@ test_expect_success "fetch test for-merge" '
cut -f -2 .git/FETCH_HEAD >actual &&
test_cmp expected actual'
test_expect_success 'fetch --prune on its own works as expected' '
cd "$D" &&
git clone . prune &&
cd prune &&
git fetch origin refs/heads/master:refs/remotes/origin/extrabranch &&
git fetch --prune origin &&
test_must_fail git rev-parse origin/extrabranch
'
test_expect_success 'fetch --prune with a branch name keeps branches' '
cd "$D" &&
git clone . prune-branch &&
cd prune-branch &&
git fetch origin refs/heads/master:refs/remotes/origin/extrabranch &&
git fetch --prune origin master &&
git rev-parse origin/extrabranch
'
test_expect_success 'fetch --prune with a namespace keeps other namespaces' '
cd "$D" &&
git clone . prune-namespace &&
cd prune-namespace &&
git fetch --prune origin refs/heads/a/*:refs/remotes/origin/a/* &&
git rev-parse origin/master
'
test_expect_success 'fetch --prune --tags does not delete the remote-tracking branches' '
cd "$D" &&
git clone . prune-tags &&
cd prune-tags &&
git fetch origin refs/heads/master:refs/tags/sometag &&
git fetch --prune --tags origin &&
git rev-parse origin/master &&
test_must_fail git rev-parse somebranch
'
test_expect_success 'fetch --prune --tags with branch does not delete other remote-tracking branches' '
cd "$D" &&
git clone . prune-tags-branch &&
cd prune-tags-branch &&
git fetch origin refs/heads/master:refs/remotes/origin/extrabranch &&
git fetch --prune --tags origin master &&
git rev-parse origin/extrabranch
'
test_expect_success 'fetch tags when there is no tags' '
cd "$D" &&