首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用git-svn切换svn仓库?

如何使用git-svn切换svn仓库?
EN

Stack Overflow用户
提问于 2011-05-12 17:01:11
回答 2查看 8.6K关注 1票数 23

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

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

提出这个问题的另一种方式是,git将您正在使用的远程SVN存储库的位置信息存储在哪里?也就是说,当你输入'git svn info‘时,URL信息从何而来?

EN

回答 2

Stack Overflow用户

发布于 2011-05-12 18:25:44

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

https://git.wiki.kernel.org/index.php/GitSvnSwitch

git

  • 将.git/config中的svn -远程url URL编辑为指向新域名

  • 运行git svn fetch -这需要从svn中提取至少一个新的修订版!

  • 更改svn-远程url返回到原始url

  • 运行git svn rebase -l进行本地rebase (使用上次提取git svn-远程url返回到新的url

<代码>H114运行git svn rebase现在应该可以再次工作!

只有在git svn fetch步骤实际获取任何东西的情况下,这才能起作用!(我花了一段时间才发现……为了实现这一点,我不得不对我们的svn存储库进行了一个虚拟修订!)

票数 27
EN

Stack Overflow用户

发布于 2016-11-10 17:15:47

遵循same url [1],但有了更新的解决方案,它变得更容易。

.git/config内部的[svn-remote]部分中,将url设置为新的 URL,并将url设置为旧的 URL:

代码语言:javascript
复制
[svn-remote "svn"]
    url         = https://new.svn-server.net/svn/root
    rewriteRoot = https://old.svn-server.net/svn/root

通过本指南中的git config ...命令也可以做到这一点:

代码语言:javascript
复制
$ 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>

然后它就可以工作了,对我来说,即使在新服务器上没有新的修订,我也不需要做任何虚拟的修订。有趣的是,git svn info报告了相同的旧网址,但使用新网址作为Repository Root:

代码语言:javascript
复制
$ git svn info
Path: .
URL: <old-url>
Repository Root: <new-url>

1

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5975667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档