【发布时间】:2017-02-19 22:45:19
【问题描述】:
概述
我有 Git 存储库,它作为来自其他地方的许多配置的存档:
- 200 个目录
- 每个目录 100 个文件
- 每个文件 10K 纯文本
- 每天~1000 次提交,通常编辑
- 1 个分支
- 1 个用户处理所有提交
- 只读的所有其他视图存储库
在有人建议我尝试将这个 repo 分解成更小的 repo 之前,这不是一个选择,因为客户。
回购包含价值约 2 年的数据,但我们的客户只需要过去 90 天。
流程
我在 90 天前使用here 描述的方法成功地将根移植到了提交上:
- git checkout -b newroot xyz_90_days_old_rev
- git reset abc_original_root_rev
- git 添加。
- 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 要求repo 裸露而checkout 要求的问题它不是裸露的
【问题讨论】:
标签: git rebase bfg-repo-cleaner