一句话总结:

    为了解决仓库太大的问题,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 的仓库,建议删除仓库后重新下载。


谢谢

---- 成坚