一句话总结:
为了解决仓库太大的问题,src-openeuler/kernel 仓库于今天 2021/04/27 下午 17:30 左右进行了 force push
因此大家之前 fork 和 clone 的私人仓库建议强制同步。
1. 个人 fork 的仓库,可以使用 gitee 的一键同步功能,强制拉取。
2. 个人本地 clone 的仓库,建议 删除掉仓库后重新下载(如果 clone 的是自己 fork 的仓库,待 1 完成后再进行 2 操作)。
# 1 问题背景
-------
仓库地址:https://gitee.com/src-openeuler/kernel
src-openEuler/kernel 仓库通过 PR 方式来合入补丁。
但是 gitee 限制私人仓库不能超过 1G,超过 1G 之后 仓库将被封禁,停止访问,禁止提交。
个人 fork 的 src-openEuler/kernel 私人仓库无法正常 push,因此无法向 openEuler 主仓提交 PR。
# 2 问题分析
-------
检索 git/objects 信息发现:
历史提交中有一些内核源代码 TAR 包,该文件大小接近 1G,导致仓库较大
涉及的历史提交如下:
即使大文件已经在历史提交中被删除,但是仍然存在于 git 历史记录中,方便查找历史提交和回滚版本。
# 3 问题解决
-------
通过 git filter-branch 强制删除了历史上的大文件的提交,并重建了 commit 记录。
最后仓库进行了强制 push
本次瘦身清理的历史文件包括:
1. linux-4.19.90.tar.gz 内核源代码 TAR 包
2. patches.tar.bz2 patch 文件 TAR 包
此次清理的历史都是早期仓库创建初期的一些提交,已在后面提交中被清理。
现在当前仓库使用 PR 方式合入,经过 CI 门禁和 Committer 检视,不会再发生此类问题。
清理前,仓库大小 1.1G
清理后,仓库大小 3.1M
# 4 影响以及建议操作
-------
由于仓库进行了强制 push,因此大家之前 fork 和 clone 的私人仓库建议强制同步。
1. fork 的仓库,可以使用 gitee 的一键同步功能,强制拉取。点击红色框中的刷新按钮即可。
2. 自己本地 clone 的仓库,建议删除仓库后重新下载。
谢谢
---- 成坚