参与开发
参与 Hugo 开发:贡献方式、功能提案、构建测试与提交补丁的流程。
概述
参与 Hugo 项目有很多种方式,不限于写代码。你可以:
文档相关的议题与拉取请求请提交到文档仓库。完整的贡献指南见 CONTRIBUTING.md。
功能提案
如果你有改进或新功能的想法,请先在论坛的 Feature 分类发起新话题。这样做有助于:
- 确认该能力是否已经存在;
- 衡量社区的兴趣;
- 打磨概念。
如果兴趣足够,再提交提案。在项目负责人接受提案之前,请不要提交拉取请求。
前置条件
要从源码构建 Hugo,必须先安装:
GitHub 工作流
用下面的流程创建并提交拉取请求。
-
派生(fork)项目仓库。
-
克隆你的派生仓库。
-
新建一个分支,分支名要有描述性,并包含对应的议题编号。新增功能时:
git checkout -b feat/implement-some-feature-99999修复缺陷时:
git checkout -b fix/fix-some-bug-99999 -
修改代码。
-
构建并安装。构建标准版本:
CGO_ENABLED=0 go install构建 deploy 版本(自 v0.159.2 起):
CGO_ENABLED=0 go install -tags withdeploy构建扩展(extended)版本,需要先安装 C 编译器,例如 GCC 或 Clang:
CGO_ENABLED=1 go install -tags extended构建扩展版加 deploy 版本,同样需要 C 编译器:
CGO_ENABLED=1 go install -tags extended,withdeploy -
测试你的改动:
go test ./... -
提交改动,并写清楚提交信息(约定见下)。
-
把新分支推送到你的派生仓库。
-
访问项目仓库,创建拉取请求(PR)。
-
项目维护者会审查你的 PR,可能会要求修改。维护者合并 PR 之后,你可以删除该分支。
提交信息约定
- 第一行是摘要,通常不超过 50 个字符,之后空一行。摘要以包名开头,后接冒号、空格,以及以大写字母开头的简短说明;使用祈使句的现在时态,具体要求见提交信息指南。
- 可选地提供详细描述,每行不超过 72 个字符,之后空一行。
- 添加一行或多行
Fixes、Closes关键字,各自单独成行,并引用本次改动解决的议题。
例如:
git commit -m "tpl/strings: Create wrap function
The strings.Wrap function wraps a string into one or more lines,
splitting the string after the given number of characters, but not
splitting in the middle of a word.
Fixes #99998
Closes #99999"