git-svn clone或svn2git意外停止

时间:2010-09-17 07:48:51

标签: git git-svn

我正尝试使用以下命令从git迁移到svn:

git svn clone --stdlayout https://my_sourcecontrol

或使用git2svn

svn2git --notags https://sourcecontrol -v

在迁移过程中,只需使用以下语句停止:

W: -empty_dir: directory

当我做一个git branch -a

我看到它导入了标签和一些前段时删除的分支。此外,它还没有导入任何现有分支,只导入了前一段时间删除的分支。

任何人都可以了解正在发生的事情吗?

4 个答案:

答案 0 :(得分:6)

你可以尝试使用较小的克隆,例如,首先只做一个分支,看看是否有效。

我见过类似的问题:运行几分钟后,git-svn fetch(在git svn clone的引擎下运行)halts with "signal 13"

我在输出中没有看到任何错误消息,但可能在Windows上有所不同。尽管如此,运行git svn fetch应该从它停止的地方开始。我做了一个小的shell脚本循环来运行fetch直到它完成(你需要cygwin / * nix来运行它):

while ! git svn fetch; do echo "git-svn halted. Restarting...i"; done

答案 1 :(得分:3)

以上* nix脚本的powershell版本对我有用:

$i = 1
do
{
    git svn fetch
    if( !$? )
    {
        Write-Host "git-svn halted. Restarting... $i++"
    }
    else
    {
        Write-Host "git-svn completed successfully"
    }
}
while( !$? )
Write-Host "git-svn fetch required $i iteration(s)"

答案 2 :(得分:1)

我遇到了类似的问题。

在SVN repo的早期,我使用了顶级trunk/tags/文件夹的默认文件结构。在以后的某个日子里,我切换到了一个包含多个项目的<project name>/trunk<project name>/tags结构。

因此,使用--stdlayout开关只会导致迁移早期代码(因为<project name>/*文件被忽略了。)

使用-t <project name>/tags-T <project name>/trunk解决了问题。

答案 3 :(得分:0)

可能是SIGPIPE的情况。

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=526989

将git升级到1.8或更高版本。我得到1.7的这个错误(因为稳定的Debian有很旧的包)并且必须从源安装最新的git,即2.1.0。