即使删除了分支,AWS CodeCommit 也会保留未引用的二进制 blob

问题描述

假设我错误地将一个包含 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。