Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用git svn切换svn存储库?_Git_Svn_Git Svn - Fatal编程技术网

如何使用git svn切换svn存储库?

如何使用git svn切换svn存储库?,git,svn,git-svn,Git,Svn,Git Svn,我使用git SVN创建了许多git项目,作为SVN存储库的克隆。我们已经将我们的SVN存储库迁移到一个新的提供者,因此URL现在已经更改。如何更新git克隆的远程SVN URL 一种可能性是我从新的SVN存储库中重新克隆,但我不希望这样做,因为这个过程可能需要几天的时间才能完成整个历史记录 提出这个问题的另一种方式是,git在哪里存储您正在使用的远程SVN存储库的位置信息?例如,当您键入“git svn info”时,URL信息来自何处?我在git wiki中找到了一个页面,它准确地回答了我的

我使用git SVN创建了许多git项目,作为SVN存储库的克隆。我们已经将我们的SVN存储库迁移到一个新的提供者,因此URL现在已经更改。如何更新git克隆的远程SVN URL

一种可能性是我从新的SVN存储库中重新克隆,但我不希望这样做,因为这个过程可能需要几天的时间才能完成整个历史记录


提出这个问题的另一种方式是,git在哪里存储您正在使用的远程SVN存储库的位置信息?例如,当您键入“git svn info”时,URL信息来自何处?

我在git wiki中找到了一个页面,它准确地回答了我的问题:

  • 在.git/config中编辑svn远程url以指向新域名
  • 运行git svn fetch-这需要从svn获取至少一个新版本
  • 将svn远程url更改回原始url
  • 运行git svn rebase-l来执行本地rebase(使用上次获取操作中的更改)
  • 将svn远程url更改回新url
  • 运行git svn rebase现在应该可以再次工作了
这仅在git svn fetch步骤实际获取数据时才起作用 任何东西(我花了一段时间才发现……我不得不装上一个假人 对我们的svn存储库进行了修订,使之成为现实!)

遵循,但有了更新的解决方案,它变得更加容易

.git/config
内部的
[svn remote]
部分中,将
url
设置为新的url,并将
重写根目录
设置为旧的url:

[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>

[1]

可能的重复可能的重复而不是“重复”,这个问题实际上对Git用户来说更好、更容易找到,因为这个问题是使用SVN特定术语提出的。该页面上的一些链接现在已经失效。另外,如果你能把实际的解决方案放在这里,而不仅仅是链接,那就太好了。这对我也很有用。我在内联网外有一台服务器,我必须使用sshfs将其装载为本地目录。在我更改了存储库位置之后,我已经成功地使用这个
rewriteRoot
config方法执行了
git svn dcommit
。谢谢
$ git svn info
Path: .
URL: <old-url>
Repository Root: <new-url>