使用 Git Notes 在 Git 中存储代码讨论

主要观点:

  • 代码讨论包含相关信息,将其保存在集中的 GitHub/GitLab 服务器中远离去中心化的 Git 代码是一种遗憾,移动提供商会导致丢失所有旧讨论,Symfony 多年前使用 Git 的一个不太知名的功能 Git Notes 解决了此问题。
  • Git Notes 是 Git 的一个未知功能,难以发现和使用,但可在创建提交后为其添加额外信息,且与对象是多对一关系,一个 Git 对象可有多个 Git Notes 引用。
  • Symfony 维护者使用内部 CLI 工具合并贡献,合并后利用 GitHub API 获取拉取请求评论并存储在 Git Note 中,与合并提交关联,即使切换平台也能找到讨论。
  • 可通过特定命令操作 Git Notes,如添加、查看、推送等,GitHub 不再显示某些 Note 对象,但仍可直接引用推送和获取,也可在.git/config 文件中设置默认获取 Notes。

关键信息:

  • Git Notes 命令:git notes addgit log --notesgit notes --ref等。
  • Symfony 工具获取评论及存储流程:使用 GitHub API 获取评论,放入临时文件,创建 Git Note 并推送。
  • 读取 Notes 的方法:git log --notes=github-comments、编辑.git/config 文件等。

重要细节:

  • Git 存储数据使用不可变对象,改变提交消息会创建新对象。
  • 默认情况下 Notes 存储在notes/commitsref 中,可通过--ref选项指定多个参考。
  • Symfony 将 Notes 放在“github-comments”参考中,推送时需明确提及该参考。
阅读 13
0 条评论