我使用git-svn创建了许多作为SVN存储库克隆的git项目。我们已将SVN存储库迁移到新的提供程序,因此URL现已更改。如何更新git clone的远程SVN URL?
一种可能性是我从新的SVN存储库中重新克隆,但是我不想这样做,因为这个过程可能需要几天才能完成整个历史记录。
提出这个问题的另一种方法是,git在哪里存储有关您正在使用的远程SVN存储库位置的信息?即当您输入'git svn info'时,URL信息来自何处?
答案 0 :(得分:24)
我在git wiki中找到了一个页面,它完全回答了我的问题:
https://git.wiki.kernel.org/index.php/GitSvnSwitch
- 编辑.git / config中的svn-remote url URL以指向新域名
- 运行git svn fetch - 这需要从svn获取至少一个新版本!
- 将svn-remote网址更改回原始网址
- 运行git svn rebase -l以执行本地rebase(包含上次提取操作所带来的更改)
- 将svn-remote网址更改回新网址
- 运行git svn rebase现在应该再次运行!
这只有在git svn fetch步骤实际获取时才有效 什么! (花了一些时间才发现......我不得不放入假人 修改我们的svn存储库以实现它!)
答案 1 :(得分:11)
遵循same url [1],但使用更新的解决方案,它变得更加容易。
在.git/config
部分的[svn-remote]
内,将 url
设置为新网址,然后设置 { {1}} 到旧网址:
rewriteRoot
同样可以通过指南中的[svn-remote "svn"]
url = https://new.svn-server.net/svn/root
rewriteRoot = https://old.svn-server.net/svn/root
命令来完成:
git config ...
然后它才有用,对我来说,即使新服务器上没有新版本,我也不必进行任何虚拟修订。有趣的是,$ git config --local --replace-all svn-remote.<name>.rewriteRoot `git config --local --get svn-remote.<name>.url`
$ git config --local --replace-all svn-remote.<name>.url <new_url>
报告了相同的旧URL,但新URL为Repository Root:
git svn info