svn2git-命令失败-错误:pathspec';硕士';与git已知的任何文件都不匹配
我们正在尝试使用svn2git实用工具()从svn迁移到git。该实用程序似乎每次都会出现以下错误。如果有人看到同样的错误或有更好的选择,请分享 命令svn2git-命令失败-错误:pathspec';硕士';与git已知的任何文件都不匹配,git,svn,svn2git,Git,Svn,Svn2git,我们正在尝试使用svn2git实用工具()从svn迁移到git。该实用程序似乎每次都会出现以下错误。如果有人看到同样的错误或有更好的选择,请分享 命令 svn2githttps://xyz.xyz.com/svn/svnrepo/ --详细--authors.txt 控制台输出 Running command: git svn init --prefix=svn/ --no-metadata --trunk='trunk' --tags ='tags' --branches='branches'
svn2githttps://xyz.xyz.com/svn/svnrepo/ --详细--authors.txt
控制台输出
Running command: git svn init --prefix=svn/ --no-metadata --trunk='trunk' --tags
='tags' --branches='branches' https://xyz.xyz.com/svn/svnrepo/
Running command: git config --local --get user.name
Running command: git config --local svn.authorsfile authors.txt
Running command: git svn fetch
Running command: git branch -l --no-color
Running command: git branch -r --no-color
Running command: git config --local --get user.name
Running command: git config --local --get user.email
Running command: git checkout -f master
error: pathspec 'master' did not match any file(s) known to git.
command failed:
git checkout -f master
另外,我的SVN回购URL也是正确的,就在主干上方。我正在Win7 64位机器上尝试此功能。有很多工具称为
svn2git
,最好的工具可能是来自的KDE工具。我强烈建议使用svn2git
工具。这是我所知道的最好的一款,它的规则文件非常灵活
您使用的svn2git
工具基于git svn
,git svn
是而不是一次性转换存储库或存储库部件的正确工具。如果您想将Git用作现有SVN服务器的前端,那么它是一个很好的工具,但是对于一次性转换,您应该不要使用Git SVN
,而是svn2git
,它更适合此用例
如果您不是100%了解存储库的历史记录,svneverever
from是在将SVN存储库迁移到Git时调查其历史记录的一个很好的工具
尽管
git svn
(或者您的案例中错误的svn2git
)更容易开始,但以下是使用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
更优越。:-) 已经很晚了,但有人可能仍然需要这个。我设法把这件事追查到了警察局。长话短说,Windows不理解脚本添加到git
命令的参数周围的单引号(”
)。修复它的方法可能多种多样,但我只是手动破解了migration.rb
文件,即以下代码片段:
cmd+=“--trunk=#{trunk}”,除非trunk.nil?
除非是零?
#在此处填充默认标记,以便以后可以对其进行筛选
tags=['tags']如果tags.empty?
#处理默认标记或用户提供的标记
标记。每个do |标记|
cmd+=“--tags=#{tag}”
结束
结束
除非是零?
#在此处填充默认分支,以便以后可以对其进行筛选
Branchs=['Branchs']如果branchs.empty?
#处理默认或用户提供的分支
分支机构。每个机构都有分支机构|
cmd+=“--branchs=#{branch}”
结束
注意,{trunk}
、{tag}
和{branch}
周围不再有引号。这就成功了。不是什么“答案”,但这是我的案例的解决方案。顺便说一句,来自svn2git的错误消息真的毫无帮助
得到完全相同错误的原因是,在执行初始导入时,我没有使用主干的完整路径
SVN回购协议的结构如下:
https://example.com/folderA/projectName
- trunk
- tags
- ...
我只使用svn2git运行svn2githttps://example.com/folderA --用户名…
当我将“/projectName”也包括在回购路径中时,我做到了:
svn2githttps://example.com/folderA/projectName --用户名…
…一切都很好。另外,在重试之前-我从以前的尝试中删除了现有的
.git
文件夹。git repo中有主分支吗?没有,我正在尝试克隆svn repo,它应该在本地创建并初始化一个新的git repo。我无法使用svn2git,但我尝试了以下两个选项,这两个选项都对我有效。1) 对于完整的SVN回购迁移-2)对于选择性分支/标签-为什么要复制粘贴相同的答案?@bahrep这不是相同的答案,但适合于这个问题。事实上,问题是完全不同的,但答案通常是“使用正确的工具,效果会更好”。我不确定它是否适用于您的情况,但投票结束作为副本如何?选择最受欢迎和最相关的问题,并投票将类似的问题作为副本关闭。这并不是真的正确,因为这些问题非常不同,而且都是关于不同的问题。这和我建议的解决方案是一样的,答案中有特定于问题的部分。事实上,看到这样重复的答案很烦人。我们中的许多人通过搜索来这里,必须反复筛选相同的答案,以找到一个真正有效的答案。对于Windows上的非Ruby用户:以下是我使用的路径:C:\Ruby26-x64\lib\Ruby\gems\2.6.0\gems\svn2git-2.4.0\lib\svn2git
查找迁移