【问题标题】:How to prevent a Git object from getting garbage collected?如何防止 Git 对象被垃圾收集?
【发布时间】:2018-10-08 23:33:11
【问题描述】:

据我了解,任何对象在没有refs 时都会被垃圾回收。 防止收集我们想要在数据库中持久化的对象的最佳方法是什么?

一个用例是在拉取请求中进行更改(可能根据代码审查)并且先前的提交变得分离,它们不会被合并到存储库中它们应该始终可用于跟踪拉取请求中的更改。

示例:

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

现在 CommitA2 将是更改历史记录中的内容,但拉取请求仍将有一个指向旧 CommitA 的链接。 在某些年份,我们希望能够看到 pull-request 是关于什么以及它的 cmets 指的是什么。

如何防止提交被 GC 收集?

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

【问题讨论】:

  • 我很确定你想保持提交可达。给它,或者它的任何后代,一个参考。我用非共享分支名称乱扔我的本地存储库以保持提交。
  • 是的,使用标签是最好的解决方案,因为如果它是关于归档提交,你不想使用可能被错误更新的分支引用。

标签: git garbage-collection


【解决方案1】:

Refs 不必是分支或标签,您可以将本地 refs 保留为您想要的任何内容。

这是一个简单的“让我为 pull 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多