我正在使用KDE svn-all-fast-export通过丑陋的22GB SVN存储库迁移到git。旧的维护者做了一些非常奇怪的分支。我遇到一种情况,我需要为单个提交创建2个分支。
树看起来像这样
trunk
branch/lots-of_branches
tags/lots_of_tags
到目前为止一切都很好...
现在,有人通过将顶层标签和分支文件夹复制(svn复制)创建为“新”来创建一个名为“新”的新文件夹。我不确定如何创建顶级分支和标签文件夹以及如何创建子文件夹。
我的规则如下:
match /branch/([^/]+)/
repository myrepo
branch legacy/branch/\1
end match
match /tags/([^/]+)/
repository myrepo
annotated true
branch refs/tags/legacy/\1
end match
这将导致许多分支称为legacy / branch / branch_name,但对于上述情况则没有legacy / branch。我的问题是,有没有一种方法可以为每个分支创建一个分支,并且还有一个分支在每次修改分支文件夹时都会更新?
答案 0 :(得分:0)
您可以通过符号引用到达那里。
git symbolic-ref refs/heads/legacy-another-foo refs/heads/legacy-foo
请记住,如果您签出参考git,则不会报告其符号名称。
因此在git checkout legacy-another-foo
之后,git status
将报告您在legacy-foo
您可以仅过滤掉旧文件夹而不导入它吗?
对不起,您的前任是“创意人”
答案 1 :(得分:0)
以纯git-svn 的术语,您可以告诉多个可以找到标签和分支的位置。您将为分支设置2个位置(一个在分支中,另一个在新/分支中),并为标签设置两个位置(一个在标签中,另一个在new /标签中)。
答案 2 :(得分:0)
@thekbb 好主意,但我正在努力维持历史。我的最新测试是运行当前规则集,直到它消失,然后使用其他集合重新运行导入程序以生成顶级引用。
第二组规则:
match /branch/
repository myrepo
branch legacy/branch
end match
match /tags/
repository myrepo
branch legacy/tags
end
此后,我将在一次提交后恢复第一组结果
++++++++++++++++++++
更新资料
++++++++++++++++++++
这工作了。第二遍比第一遍快,因为它忽略了除触摸/ branch或/ tags的提交以外的所有内容。