Merge branch 'mv/remote-rename'

* mv/remote-rename:
  git-remote: document the migration feature of the rename subcommand
  git-remote rename: migrate from remotes/ and branches/
  remote: add a new 'origin' variable to the struct
  Implement git remote rename
This commit is contained in:
Junio C Hamano
2008-11-12 22:00:25 -08:00
5 changed files with 256 additions and 0 deletions

View File

@@ -328,4 +328,52 @@ test_expect_success 'reject adding remote with an invalid name' '
'
# The first three test if the tracking branches are properly renamed,
# the last two ones check if the config is updated.
test_expect_success 'rename a remote' '
git clone one four &&
(cd four &&
git remote rename origin upstream &&
rmdir .git/refs/remotes/origin &&
test "$(git symbolic-ref refs/remotes/upstream/HEAD)" = "refs/remotes/upstream/master" &&
test "$(git rev-parse upstream/master)" = "$(git rev-parse master)" &&
test "$(git config remote.upstream.fetch)" = "+refs/heads/*:refs/remotes/upstream/*" &&
test "$(git config branch.master.remote)" = "upstream")
'
cat > remotes_origin << EOF
URL: $(pwd)/one
Push: refs/heads/master:refs/heads/upstream
Pull: refs/heads/master:refs/heads/origin
EOF
test_expect_success 'migrate a remote from named file in $GIT_DIR/remotes' '
git clone one five &&
origin_url=$(pwd)/one &&
(cd five &&
git remote rm origin &&
mkdir -p .git/remotes &&
cat ../remotes_origin > .git/remotes/origin &&
git remote rename origin origin &&
! test -f .git/remotes/origin &&
test "$(git config remote.origin.url)" = "$origin_url" &&
test "$(git config remote.origin.push)" = "refs/heads/master:refs/heads/upstream" &&
test "$(git config remote.origin.fetch)" = "refs/heads/master:refs/heads/origin")
'
test_expect_success 'migrate a remote from named file in $GIT_DIR/branches' '
git clone one six &&
origin_url=$(pwd)/one &&
(cd six &&
git remote rm origin &&
echo "$origin_url" > .git/branches/origin &&
git remote rename origin origin &&
! test -f .git/branches/origin &&
test "$(git config remote.origin.url)" = "$origin_url" &&
test "$(git config remote.origin.fetch)" = "refs/heads/master:refs/heads/origin")
'
test_done