我通过git-svn镜像的svn存储库改变了URL.
在vanilla svn你会做的svn switch --relocate old_url_base new_url_base
.
我怎么能用git-svn做到这一点?
只需更改配置文件中的svn url就会失败.
这很好地处理了我的情况:
https://git.wiki.kernel.org/index.php/GitSvnSwitch
我使用file://
协议克隆,并希望切换到http://
协议.
编辑部分中的url
设置很有吸引力,但就其自身而言这不起作用.通常,您需要遵循以下过程:[svn-remote "svn"]
.git/config
将svn-remote url
设置切换为新名称.
跑git svn fetch
.这需要从svn获取至少一个新版本!
将svn-remote url
设置更改回原始URL.
运行git svn rebase -l
以执行本地rebase(使用上次提取操作所带来的更改).
将svn-remote url
设置更改回新URL.
现在,git svn rebase
应该再次工作.
冒险的灵魂可能想尝试--rewrite-root
.
您可以看到以下是否正常:
如果svn-remote.svn.rewriteRoot
配置文件(.git/config
)中不存在:
git config svn-remote.svn.rewriteRoot
如果svn-remote.svn.rewriteUUID
配置文件中不存在:
git config svn-remote.svn.rewriteUUID
在currentRepositoryUUID
可以从获得.git/svn/.metadata
.
git config svn-remote.svn.url
不幸的是,这些答案中的大多数链接都不起作用,所以我将从git wiki中复制一些信息以供将来参考.
这个解决方案对我有用:
编辑svn-remote
url
(或fetch
路径).git/config
以指向新域/ URL /路径
运行git git svn fetch
.这需要从svn获取至少一个新版本!
如果您git svn rebase
现在尝试,您将收到如下错误消息:
Unable to determine upstream SVN information from working tree history
我认为这是因为git svn
您在获取之前的最新提交将git-svn-id
指向旧路径这一事实感到困惑,旧路径与找到的旧路径不匹配.git/config
.
作为解决方法,将svn-remote
url
(或fetch
路径)更改回原始域/网址/路径
现在git svn rebase -l
再次运行以使用上次提取操作所带来的更改来执行本地rebase.这一次它会起作用,显然是因为git svn
不会因git-svn-id
新头部与发现的头部不匹配这一事实而混淆.git/config
.
最后,将svn-remote
url
(或fetch
路径)更改回新域/ url/path
此时git svn rebase
应该再次工作!
原始信息在这里找到.