如何防止Git对象获取垃圾?

时间:2018-10-08 13:51:22

标签: git garbage-collection

据我了解,如果没有refs,则任何对象都会被垃圾回收。 防止收集要保留在数据库中的对象的最佳方法是什么?

一个用例是当在拉取请求中进行更改(也许根据代码审查)并且以前的提交变得分离时,它们将不合并在存储库中。以便跟踪请求请求中的更改。

示例:

  • CommitA 修复了一个错误
  • 为其创建请求请求
  • 有人检查并提出更改建议,并链接到代码中的特定行
  • 更改代码,修改 CommitA ,然后重新提交为 CommitA2

现在 CommitA2 将是更改历史记录中的内容,但是pull-request请求仍将具有指向旧的 CommitA 的链接。 几年后,我们希望能够看到请求请求的内容及其注释指的是什么。

如何防止GC收集提交?

给它一个标签是我想到的第一个解决方案。

1 个答案:

答案 0 :(得分:1)

引用不必是分支或标签,您可以将本地引用保留到所需的任何内容。

这是一个简单的“让我成为拉动137的另一个快照参考”,

next=$((`git rev-list --no-walk --count --glob=refs/snap/pull/137/head-v*`+1))
git update-ref refs/snap/pull/137/head-v$next refs/pull/137/head