使用集市(和launchpad)几年后,我们计划将FEniCS project迁移到Git。我们对此迁移有一些要求,这使得它相当复杂:
我以DOLFIN为例:
导入bzr trunk:
git init dolfin && cd dolfin
(cd path/to/bzr/trunk; bzr fast-export --plain) | git fast-import
过滤历史记录:
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch ${files_to_strip}" --prune-empty
它需要导出上述bzr fast-export
(dolfin.marks.bzr
)和git fast-import
(dolfin.marks.git
)步骤的标记文件。我们可以把它们提供给贡献者s.t.他们可以像这样导入他们的功能分支:
(cd path/to/bzr/branch; bzr fast-export --marks=path/to/dolfin.marks.bzr --git-branch=$(bzr nick)) | \
git fast-import --import-marks=path/to/dolfin.marks.git --export-marks=path/to/dolfin.marks.git
但是当我们过滤分支时,这个配方会崩溃,因为这个操作会使所有中继提交的SHA1哈希失效,从而使标记文件无效。
所以问题是:是否有一个可靠地满足两个要求1和2的配方。?
请注意,理想情况下,这应该适用于已将主干合并回来的功能分支(甚至多次)的复杂情况:应正确识别来自主干的这些合并的父级(因为它们在2中)。 )。
答案 0 :(得分:0)
不幸的是,目前使用标记文件无法为1和2执行此操作。
如果忽略标记文件(只是不生成它们),让用户进行完全转换并确保对所有用户一致地进行过滤,那么你应该得到相同的SHA1,因此相同的共同历史记录到处。