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
更容易开始,但以下是使用KDE
svn2git
而不是
git svn
更优越的原因,除了它的灵活性之外:

  • 通过
    svn2git
    (如果使用了正确的历史记录),可以更好、更清晰地重建历史记录,对于具有分支和合并等更复杂的历史记录尤其如此
  • 这些标记是真实的标记,而不是Git中的分支
  • 使用
    git svn
    时,标记包含一个额外的空提交,这也使得它们不是分支的一部分,因此正常的
    fetch
    将不会获取它们,直到您将
    --tags
    交给命令,因为默认情况下,也只获取指向已获取分支的标记。使用正确的svn2git标记就可以找到它们所属的位置
  • 如果您更改了SVN中的布局,您可以使用
    svn2git
    轻松配置它,使用
    git SVN
    您最终将丢失历史记录
  • 使用
    svn2git
    还可以轻松地将一个SVN存储库拆分为多个Git存储库
  • 或者将同一SVN根目录中的多个SVN存储库轻松组合到一个Git存储库中
  • 使用正确的
    svn2git
    比使用
    git svn

你看,有很多原因导致
git svn
更差,而KDE
svn2git
更优越。:-)

这是一次迁移,然后只使用Git,还是要从Git克隆版提交回SVN repo?@Vampile这是一次迁移。谢谢。我曾尝试使用svn2git(不是kde的,而是nirvdrum/svn2git,因为我在Windows上),但看起来我陷入了一个反复出现的“问题”
运行命令:git checkout-f master error:pathspec“master”与git已知的任何文件都不匹配。
nirvdrum
svn2git
在引擎盖下使用
git svn
,因此也有很多相同的缺点,只是在实际的
gitsvn
克隆之后修复了其中的一些缺点。我也在Windows上使用KDE
svn2git
,这里没问题。谢谢!我打算试试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