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