这是关于在 Go 项目中使用jj的介绍,包含日常贡献、Gerrit 配置、工作流程、技巧和附录等方面的内容:
- 日常贡献:使用
jj为 Go 项目做贡献,Go 项目使用 Gerrit 进行代码审查,从jj使用 Gerrit 比 GitHub 更复杂。 Gerrit 配置:
- 从
jj使用 Gerrit 存在三个关键问题:Gerrit 的“神奇”引用refs/for/master`jj git push不支持推送任意引用;推送 Go 的 Gerrit 需要 HTTP 认证 cookie,jj不支持;Gerrit 需要Change-Id行但jj不支持git`的预提交钩子。 - 解决方法:用
jj克隆仓库使用标准的未认证 URL,创建为共置仓库以便使用正常git命令,使用自定义提交消息表添加Change-Id行。
- 从
- 工作流程:
jj的“一切都是提交”模型有独特影响,可使用类似“squash”工作流程,在空提交中进行所有更改,然后通过jj commit或jj squash处理。 - 技巧和窍门:默认
jj squash将当前提交合并到其直接父提交,通过--into、--from等参数可进行更复杂的合并操作。 - 附录:Change-Id 模板应添加到
~/.config/jj/config.toml,可扩展标准提交消息添加Change-Id行,避免重复。
参考资料:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。