SVN - Git迁移问题错误

yrdbyhpb  于 2023-04-10  发布在  Git
关注(0)|答案(1)|浏览(158)

我使用下面的命令将SVN迁移到Git:

git svn clone --stdlayout //url

我得到以下错误:

fatal: Unable to create 'C:/Users/.git/svn/refs/remotes/origin/Fortify Issues Fix and Clean up./index.lock': No such file or directory
write-tree: command returned error: 128

我尝试手动创建Fortify文件夹,但它不工作,并尝试创建./index.lock文件和删除仍然我面临着同样的问题。

cbeh67ev

cbeh67ev1#

git-svn不是一次性转换仓库或仓库部件的合适工具。如果你想使用Git作为现有SVN服务器的前端,它是一个很好的工具,但是对于一次性转换,你应该使用git-svn,而使用svn2gitsvn2git更适合这个用例。
有很多名为svn2git的工具,最好的可能是https://github.com/svn-all-fast-export/svn2git的KDE工具。我强烈推荐使用svn2git工具。这是我所知道的最好的工具,它在规则文件上非常灵活。
您将能够轻松地设置规则文件,以便准确地迁移您的分支及其历史。
如果你不是100%了解仓库的历史,svneverever from http://blog.hartwork.org/?p=763是一个很好的工具,可以在将SVN仓库迁移到Git时调查仓库的历史。
尽管git-svn更容易上手,但除了灵活性之外,还有一些其他原因可以解释为什么使用KDE svn2git而不是git-svn更上级:

  • svn2git(如果使用正确的)可以更好更清晰地重建历史,对于具有分支和合并等的更复杂的历史尤其如此
  • 标签是真实的的标签,而不是Git中的分支
  • 对于git-svn,标签包含一个额外的空提交,这也使得它们不是分支的一部分,所以普通的fetch不会获取它们,直到你给予--tags命令,因为默认情况下,只有指向被获取的分支的标签才会被获取。
  • 如果你改变了SVN中的布局,你可以很容易地用svn2git配置它,用git-svn你最终会丢失历史记录
  • 使用svn2git,您还可以轻松地将一个SVN仓库拆分为多个Git仓库
  • 或将同一SVN根目录中的多个SVN仓库轻松合并为一个Git仓库
  • 使用正确的svn2git进行转换的速度要比使用git-svn快无数倍

git-svn更差而KDE svn2git更上级的原因有很多。
我建议您使用svn2git工具也会遇到同样的问题,Git分支名称中不允许有空格,但您可以通过以下名称替换轻松解决此问题:

substitute branch s/ /_/

用下划线替换空格。
因此,作为标准布局的完全匹配规则,例如,这可能看起来像

match /branches/([^/]+)/
    repository myproject
    branch \1
    substitute branch s/ /_/
end match

相关问题