git svn克隆失败,因为已删除分支
我正在使用git svn克隆失败,因为已删除分支,git,svn,github,bitbucket,git-svn,Git,Svn,Github,Bitbucket,Git Svn,我正在使用git SVN clone将一些SVN repo迁移到Bitbucket。当克隆将要克隆的版本不存在时,克隆似乎失败了,因为受其影响的分支在Subversion中不再存在 是的 日志显示 {...} r12 = f16b3d1014109ccd1c7e24dd70bfa9df45362e48 (refs/remotes/git-svn) M trunk/xx.java M trunk/xx.java
git SVN clone
将一些SVN repo迁移到Bitbucket。当克隆将要克隆的版本不存在时,克隆似乎失败了,因为受其影响的分支在Subversion中不再存在
是的
日志显示
{...}
r12 = f16b3d1014109ccd1c7e24dd70bfa9df45362e48 (refs/remotes/git-svn)
M trunk/xx.java
M trunk/xx.java
r13 = 9e61cda58fb2f5afa0a97277a10fd92365f3d1e3 (refs/remotes/git-svn)
M trunk/xx.java
M trunk/xx.java
r14 = f9964ce0a8081cf0bf22ee8a5ba32afe725323c3 (refs/remotes/git-svn)
M trunk/xx.java
r15 = ac1f5c4a61346601dd85fbca55bd585ce5fc358d (refs/remotes/git-svn)
fatal: .git\svn\refs\remotes\origin\https;C:\Program Files\Git\index: index file open failed: Invalid argument
(in cleanup) update-index -z --index-info: command returned error: 128
W: +empty_dir: branches/https:/my.svn.com/project001/branches
在探索SVN回购协议时,修订版16似乎是指创建一个不再存在的分支机构(错误命名为https:/my.SVN.com/project001/branchs
),该分支机构在修订版18时被删除
我想问题是由这个引起的,但是在阅读文档和浏览之后,我发现我没有办法让git svn克隆忽略这个问题。如果可能的话,我正在寻找一种自动化的方法,因为我必须编写一个脚本来迁移几GB的SVN repo。对于一次性迁移
git SVN
不是转换存储库或存储库部分的正确工具。如果您想将Git用作现有SVN服务器的前端,那么它是一个很好的工具,但是对于一次性转换,您应该而不是Git SVN
,而是svn2git
,它更适合此用例
有很多工具称为svn2git
,最好的工具可能是来自的KDE工具。我强烈建议使用svn2git
工具。这是我所知道的最好的一款,它的规则文件非常灵活
您将能够轻松地配置svn2git
s规则文件,以从当前的SVN布局生成所需的结果
如果您不是100%了解存储库的历史记录,svneverever
from是在将SVN存储库迁移到Git时调查其历史记录的一个很好的工具
尽管
git svn
更容易开始,但以下是使用KDEsvn2git
而不是git svn
更优越的原因,除了它的灵活性之外:
- 通过
(如果使用了正确的历史记录),可以更好、更清晰地重建历史记录,对于具有分支和合并等更复杂的历史记录尤其如此svn2git
- 这些标记是真实的标记,而不是Git中的分支
- 使用
时,标记包含一个额外的空提交,这也使得它们不是分支的一部分,因此正常的git svn
将不会获取它们,直到您将fetch
交给命令,因为默认情况下,也只获取指向已获取分支的标记。使用正确的svn2git标记就可以找到它们所属的位置--tags
- 如果您更改了SVN中的布局,您可以使用
轻松配置它,使用svn2git
您最终将丢失历史记录git SVN
- 使用
还可以轻松地将一个SVN存储库拆分为多个Git存储库svn2git
- 或者将同一SVN根目录中的多个SVN存储库轻松组合到一个Git存储库中
- 使用正确的
比使用svn2git
git svn
你看,有很多原因导致
git svn
更差,而KDEsvn2git
更优越。:-) 这是一次迁移,然后只使用Git,还是要从Git克隆版提交回SVN repo?@Vampile这是一次迁移。谢谢。我曾尝试使用svn2git(不是kde的,而是nirvdrum/svn2git,因为我在Windows上),但看起来我陷入了一个反复出现的“问题”运行命令:git checkout-f master error:pathspec“master”与git已知的任何文件都不匹配。
nirvdrumsvn2git
在引擎盖下使用git svn
,因此也有很多相同的缺点,只是在实际的gitsvn
克隆之后修复了其中的一些缺点。我也在Windows上使用KDEsvn2git
,这里没问题。谢谢!我打算试试KDESVN2git。
{...}
r12 = f16b3d1014109ccd1c7e24dd70bfa9df45362e48 (refs/remotes/git-svn)
M trunk/xx.java
M trunk/xx.java
r13 = 9e61cda58fb2f5afa0a97277a10fd92365f3d1e3 (refs/remotes/git-svn)
M trunk/xx.java
M trunk/xx.java
r14 = f9964ce0a8081cf0bf22ee8a5ba32afe725323c3 (refs/remotes/git-svn)
M trunk/xx.java
r15 = ac1f5c4a61346601dd85fbca55bd585ce5fc358d (refs/remotes/git-svn)
fatal: .git\svn\refs\remotes\origin\https;C:\Program Files\Git\index: index file open failed: Invalid argument
(in cleanup) update-index -z --index-info: command returned error: 128
W: +empty_dir: branches/https:/my.svn.com/project001/branches