如何在非裸仓库上使用git rebase后使用bfg-repo-cleaner?

时间:2017-02-19 22:45:19

标签: git rebase bfg-repo-cleaner

概述

我有Git repo,它可以作为源自其他地方的一些配置的存档:

  • 200 dirs
  • 每个目录100个文件
  • 每个文件10K纯文本
  • 每天
  • ~1000次提交,通常<编辑了10行
  • 1分支
  • 1个用户处理所有提交
  • 所有其他视图回购只读 -

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

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

过程

90天前,我已使用here描述的方法成功将根目录移植到提交中:

  • git checkout -b newroot xyz_90_days_old_rev
  • git reset abc_original_root_rev
  • git add。
  • git commit --amend -m'清除历史记录'
  • git checkout master
  • git rebase --onto newroot xyz_90_days_old_rev

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

我想尝试使用bfg-repo-cleaner,但我不清楚:

  • 是否支持此用例?
  • 是否适用于非裸仓库?

PS :我现在意识到git checkout --orphan会稍微优雅一点,但它并没有真正改变BFG要求回购的问题checkout要求它不是裸露的

1 个答案:

答案 0 :(得分:0)

不要费心重写仓库。如果某人仅需要最后90天,请运行脚本以估计所需深度,然后让他们使用--depth <depth>创建浅表克隆。

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