问题描述
假设我错误地将一个包含 100 MB 二进制 blob 文件的分支推送到我的 AWS CodeCommit,这使得现在克隆存储库变得非常缓慢。
我已经删除了包含它的分支,但是克隆 repo 仍然很慢,而且 the binary blob is still there 即使 I have verified it's unreachable 来自任何分支或提交。
如何强制 AWS CodeCommit 对其进行垃圾收集?或者至少,我可以指望 CodeCommit 最终对其进行垃圾收集(在两周内,或者它使用的任何时间间隔内)?
解决方法
或者至少,我可以指望 CodeCommit 最终对其进行垃圾收集(在两周内,或者它使用的任何时间间隔内)?
是的,如果 blob 确实无法访问,CodeCommit 最终应该对其进行垃圾回收。阅读the docs for git gc
:
在运行创建对象的普通瓷器操作时,它们会检查存储库自上次维护以来是否已大幅增长,如果是,则自动运行 git gc
。
因此假设 CodeCommit 执行执行此操作的代码,例如直接从命令行执行 git add
,那么它将自动运行垃圾收集。
我发现了问题,是来自 Which commit has this blob? 的脚本。它列出了引用 blob 的提交,但仅当这些提交位于当前检出的分支中时才列出。
我的 blob 被另一个(不同的)分支引用!一旦我删除了它,这个 blob 立即从 AWS CodeCommit 中消失了,所以我错误地认为 CodeCommit 即使没有被引用也会保留 blob。