svn2git迁移:规则

svn2git迁移:规则,git,svn,git-svn,svn2git,Git,Svn,Git Svn,Svn2git,因此,我决定在得到可靠的推荐后使用该工具。为了迁移存储库,我需要authors文件和rules文件,以及存储库本身。我编写了这三个文件,并将它们放在一个目录下,我暂时称之为myRepository\u test。我希望我的新git存储库在迁移后会在这里 以下是我目前拥有的存储库结构: - myRepository -- myRepository.release -- myRepository.mapping -- myRepository.base -- .. 我在这里总共有大

因此,我决定在得到可靠的推荐后使用该工具。为了迁移存储库,我需要authors文件和rules文件,以及存储库本身。我编写了这三个文件,并将它们放在一个目录下,我暂时称之为myRepository\u test。我希望我的新git存储库在迁移后会在这里

以下是我目前拥有的存储库结构:

- myRepository
  -- myRepository.release
  -- myRepository.mapping
  -- myRepository.base
  -- ..
我在这里总共有大约30个项目

在此,我分享我将使用的文件:

authormap.txt:

egent = Emma Gent <emma.gent@someDomain.com>
gstar = Gabriel Star <gabriel.star@someDomain.com>
.
.
create repository myRepository
end repository

# main history

match /trunk/myRepository/myRepository.release/
  repository myRepository
  branch master
end match

match /trunk/myRepository/myRepository.mapping/
  repository myRepository
  branch master
end match

# Ignore everything else
match /
end match
这将生成最终命令:

./svn-all-fast-export --identity-map authormap.txt --rules myRepository.rules --add-metadata http://address/svn/myRepository
其结尾为:

Loading rules from: "myRepository.rules" 
Loading rules from "myRepository.rules" 
Could not read the rules file: myRepository.rules
Aborted (core dumped)
我不太确定规则文件的内容,如果有人能帮我解决这个问题,那就太好了


提前感谢。

您收到的消息并不意味着语法是假的,语法看起来不错。它实际上无法找到或读取文件本身。您是否从您的
myRepository.rules
文件所在的目录调用
svn all fast export
。您是否以调用
svn all fast export
的用户身份对文件拥有读取权限

关于规则文件的内容,我认为它还不完全正确。将
myRepository.release
myRepository.mapping
的内容存储到存储库的根目录中。如果这是你想要的,那也没关系。如果没有,您可能应该在
匹配
块中使用
前缀
规则,以便将内容添加到单独的子目录中。但无论如何,在您能够成功运行该工具之后,您将看到这一点

还有一点需要注意的是,
match
表达式是正则表达式,因此您可能希望退出
并使用
match/trunk/myRepository/myRepository\.release/
。或者如果你真的想把这些内容放在同一个文件夹里

match /trunk/myRepository/myRepository\.(release|mapping)/
  repository myRepository
  branch master
end match
或者,如果你想要细分市场

match /trunk/myRepository/myRepository\.(release|mapping)/
  repository myRepository
  branch master
  prefix \1
end match


哦,是的,那些文件夹(映射、发布等)应该是存储库下独立的子目录,谢谢你的帮助。好了,添加
前缀\1
。关于
的要点也已完成。最后,我从规则和作者文件所在的目录运行脚本。我应该从脚本最初所在的
svn2git
文件夹运行(因为它安装在那里)?我没有完全理解你的最后两句话。但是您需要从您希望生成的Git存储库所在的位置运行
svn2git
。对于在规则文件中配置的每个存储库,您将有一个可能命名的子目录,其中包含已创建的Git存储库。
--rules
--identity map
的参数是执行程序的文件的相对路径。因此,如果您从文件所在的目录执行它,您可能会在文件名中输入错误,或者您没有该文件的读取权限。我这样做了,这次它给出了一个不同的错误<代码>创建新存储库“myRepository”svn:无法打开文件'http://address/svn/myRepository/format“:没有这样的文件或目录无法打开存储库为什么它会查找该
/format
?您不应该使用远程SVN存储库地址,在本地复制存储库并使用该本地副本。顺便说一句。它之所以会出现,可能是因为它是SVN存储库的一部分,并且在那里会注意到repository的格式版本,因为存储库布局会随着SVN版本的变化而变化。
match /trunk/myRepository/(myRepository\.(release|mapping))/
  repository myRepository
  branch master
  prefix \1
end match