gpt4 book ai didi

git - 如何将具有许多分支的大型 bzr 项目迁移到 git 并过滤历史记录

转载 作者:行者123 更新时间:2023-12-04 18:10:13 25 4
gpt4 key购买 nike

在使用 bazaar(和 launchpad)几年后,我们计划迁移 FEniCS project交给 Git。我们对此迁移有一些要求,这使得它相当复杂:

  1. 我们希望保留历史记录,但对其进行过滤并从历史记录中删除(现已过时的)文件列表,以减小存储库的大小。
  2. many来自许多独立贡献者的特色分支(目前来自 25 个不同的人的 76 个分支)。我们想为他们提供一个简单的迁移路径(git 新手也可以),让他们的brances进入转换和过滤的存储库。

1的解决方案。

我正在服用 DOLFIN举个例子:

导入bzr主干:

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

还有a solution 2.

它需要为 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.都没有解

所以问题是:是否有可靠地满足 要求 1. 和 2. 的配方?

请注意,这在理想情况下也适用于复杂的情况,例如已经将主干 merge 回(甚至多次)的功能分支:应该正确识别这些来自主干的 merge 的父级(因为它们在 2. ).

最佳答案

不幸的是,目前无法使用标记文件对 1 和 2 执行此操作。

如果您忽略标记文件(只是不生成它们),让用户进行完全转换并确保对所有用户进行一致的过滤,那么您最终应该得到相同的 SHA1,从而获得相同的公共(public)历史记录到处。

关于git - 如何将具有许多分支的大型 bzr 项目迁移到 git 并过滤历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15660467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com