运行Kde svn2git以将单个svn存储库(具有26,000多个修订版)迁移到多个git存储库后,标记未完全获取。在这种情况下,标签的名称与分支的名称相同。完成迁移步骤后,一些新的git存储库包含一些原始标签,而其中一些都不包含。没有抛出错误。
在我试图解决问题的方法中,
使用未获取的标签之一创建规则
结果:该规则一次不匹配。
/tmp/conf/rules.txt:58 / Project / tags / $被匹配0次
/tmp/conf/rules.txt:70 / Project / tags / tag_1 / dir_1 / $被匹配0次
/tmp/conf/rule.txts:87 / Project / tags / tag_1 / dir_1 /被匹配0次
在与代码匹配的规则中添加了“动作递归”
结果:迁移成功完成,并且某些标记包含在某些存储库中,而其他标记未包含。
仅迁移一些存储库
结果:迁移成功完成,并且某些标记包含在某些存储库中,而其他标记未包含。
将整个svn存储库迁移到一个git存储库
结果:迁移成功完成,并且所有标签似乎都在那里。
这是我用来开始迁移的命令:
/usr/local/svn2git/svn-all-fast-export \
--identity-map /tmp/conf/authors.txt --rules /tmp/conf/rules.txt \
--stats --commit-interval 1 --add-metadata --fast-import-timeout 1 --debug-rules \
--svn-branches --debug-rules --svn-ignore --debug-rules --empty-dirs
/tmp/svn/
这是我的规则文件的一个片段,我只包含了一个我试图单独迁移的存储库:
create repository my_repo
end repository
#
# Declare the rules
# Note: rules must end in a slash
# my_repo
#
#### Recurse into branches
match /Project/branches/([^/]+)/dir_1/$
action recurse
end match
# Recurse into tags
match /Project/tags/tag_1/dir_1/$
action recurse
end match
#
# Start matching
#
match /Project/trunk/dir_1/
repository my_repo
branch master
end match
match /Project/branches/([^/]+)/dir_1/
repository my_repo
branch \1
end match
match /Project/tags/tag_1/dir_1/
repository my_repo
branch refs/tags/vtag_1
annotated true
end match
match /
end match
正如我之前提到的,没有引发任何错误,但是有些东西无法正常工作。
我非常感谢您的任何评论或帮助。
感谢并希望有人能提供帮助。
编辑1: 我在日志中发现了一些东西:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++recursiveDumpDir: "/Project/tags/tag1/dir_1/" skip entry for different/ignored repository
所有路径都以/Project/tags/tag_x/dir_1/
的形式发生。
这是否意味着SVN信息库存在问题?