主要观点:
- 代码讨论包含相关信息,将其保存在集中的 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 add
、git log --notes
、git notes --ref
等。 - Symfony 工具获取评论及存储流程:使用 GitHub API 获取评论,放入临时文件,创建 Git Note 并推送。
- 读取 Notes 的方法:
git log --notes=github-comments
、编辑.git/config 文件等。
重要细节:
- Git 存储数据使用不可变对象,改变提交消息会创建新对象。
- 默认情况下 Notes 存储在
notes/commits
ref 中,可通过--ref
选项指定多个参考。 - Symfony 将 Notes 放在“github-comments”参考中,推送时需明确提及该参考。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。