这是关于在 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) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。