1

概述

我有 Git 存储库,它作为来自其他地方的许多配置的存档:

  • 200个目录
  • 每个目录 100 个文件
  • 每个文件 10K 纯文本
  • 每天约 1000 次提交,通常编辑不到 10 行
  • 1 家分店
  • 1 个用户处理所有提交
  • 所有其他只读的视图回购

在有人建议我尝试将这个 repo 分解成更小的 repo 之前,这不是一个选择,因为客户。

回购包含约 2 年的数据,但我们的客户只需要最后 90 天。

过程

90 天前,我使用此处描述的方法成功地将根嫁接到了提交上:

  • git checkout -b newroot xyz_90_days_old_rev
  • git 重置 abc_original_root_rev
  • 混帐添加。
  • git commit --amend -m '清除历史记录'
  • git结账大师
  • git rebase --onto newroot xyz_90_days_old_rev

问题是之后使用 git-filter-branch cleanup - 它需要 > 24 小时,这对用户来说是不可接受的停机时间。

我想改用 bfg-repo-cleaner ,但我不清楚:

  • 它支持这个用例吗?
  • 它适用于非裸回购吗?

PS:我现在知道这git checkout --orphan会稍微优雅一些​​,但它并没有真正改变BFG需要 repo 裸露而checkout要求它不裸露的问题

4

1 回答 1

0

不要费心重写回购。如果有人只需要最后 90 天,请运行一个脚本来估计所需的深度,并让他们使用--depth <depth>.

BFG 应该在镜像/裸克隆上运行。

于 2018-08-03T20:13:30.700 回答