Htc
在文章开始之前,OI Wiki 项目组全体成员十分欢迎您为本项目贡献页面。正因为有了上百位像您一样的人,才有了 OI Wiki 的今天!
这篇文章将主要叙述参与 OI Wiki 编写的写作过程。请您在撰稿或者修正 Wiki 页面以前,仔细阅读以下内容,以帮助您完成更高质量的内容。
参与协作
???+ warning 在开始编写一段内容之前,请查阅 Issues,确认没有别人在做相同的工作之后,开个 新 issue 记录待编写的内容。
在这里引用维基百科的一句话:
不要害怕编辑,勇于更新页面!^ref1
在 GitHub 上编辑
参与 OI Wiki 的编写 需要 一个 GitHub 账号(可以前往 GitHub 的账号注册页面 页面注册),但 不需要 高超的 GitHub 技巧,即使你是一名新手,只要按照下面所述的步骤操作,也能够 非常出色 地完成编辑。
???+ tip 在你的更改被合并到 OI Wiki 的主仓库之前,你对 OI Wiki 的内容所作出的修改均不会出现在 OI Wiki 的主站上,所以无需担心你的修改会破坏 OI Wiki 上正在显示的内容。
如果还是不放心,可以查看 [GitHub 的官方教程](https://lab.github.com/)。
编辑单个页面内的内容
- 在 OI Wiki 上找到对应页面;
- 点击正文右上方(目录左侧)的 「编辑此页」(edit)按钮,在确认您已经阅读了本页面和 格式手册 后点击按钮根据提示跳转到 GitHub 进行编辑;
- 在编辑框内编写你想修改的内容。请注意,在修改和接下来的提交过程中,请 关闭您的自动翻译软件,因为它可能产生不必要的麻烦(例如您修改的文件有时会被其错误改名,从而影响目录结构);
- 编写完成后滚动到页面下方,按照本文中 commit 信息格式规范 填写 commit 信息,之后点击 Propose changes 按钮提交修改。点击按钮后,GitHub 会自动帮你创建一份 OI Wiki 仓库的分支,并将你的提交添加到这个分支仓库。
- GitHub 会自动跳转到你的分支仓库的页面,此时页面上方会显示一个绿色的 Create pull request 按钮,点击后 GitHub 会跳转到一个创建 Pull Request 页面。向下滚动检查自己所作出的修改没有错误后,按照本文中 Pull Request 信息格式规范 一节中的规范书写 Pull Request 信息,然后点击页面上的绿色的 Create pull request 按钮创建 Pull Request。
- 不出意外的话,你的 Pull Request 就顺利提交到仓库,等待管理员审核并合并到主仓库中即可。
在等待合并的时间里,你可以给他人的 Pull Request 提意见、点赞或者点踩。如果有新消息,会在网页右上角出现提示,并附有邮件提醒(取决于个人设置中配置的通知方式)。
编辑多个页面内的内容
如果你需要同时编辑互相无关联的多个页面的内容,请按照上方的 编辑单个页面内的内容 一节一次修改所有页面。
- 打开 OI-Wiki/OI-Wiki 仓库,点击键盘上的.按钮(或者将 URL 中的
github.com
更改为github.dev
)[^ref2],进入 GitHub 的网页版 VS Code 编辑器; - 在编辑器中作出对页面源文件的更改,可以使用页面右上方的预览按钮(或按下Ctrl+KV快捷键)在右侧打开预览界面;
- 修改完成后使用左侧的 Source Control 选项卡,并按照本文中 commit 信息格式规范 填写 commit 信息并提交,提交时会提示是否创建此仓库的分支,点击绿色的 Fork Repository 按钮即可。
- 提交后会在网页上方的中央弹出一个提示框,在第一次的提示框内填写标题,第二次的提示框内填写此提交要提交到的仓库内分支名称,之后右下角会弹出一个提示框,内容类似于
Created Pull Request #1 for OI-Wiki/OI-Wiki.
,点击蓝字链接即可查看该 Pull Request。
使用 Git 在本地进行编辑
???+ warning 对于一般用户,我们更推荐使用上方所述的 GitHub 的 Web 编辑器进行编辑。
虽然大多数情况下您可以直接在 GitHub 上进行编辑,但对于一些较为特殊的情况(如需要使用 GPG 签名),我们更推荐使用 Git 在本地进行编辑。
大致流程如下:
- 将主仓库 Fork 到自己的仓库中;
- 将 Fork 后的仓库克隆(clone)到本地;
- 在本地进行修改后提交(commit)这些更改;
- 将这些更改推送(push)到你克隆的仓库;
- 提交 Pull Request 至主仓库。
详细的操作方式可以参考 Git 页面。
Commit 信息格式规范
对于提交时需要填写的 commit 信息,请遵守以下几点基本要求:
- commit 摘要请简要描述这一次 commit 改动的内容。注意 commit 摘要的长度不要超过 50 字符,超出的部分会自动置于正文中。
- 如果需要进一步描述本次 commit 内容,请在正文中详细说明。
对于 commit 摘要,推荐按照如下格式书写:
<修改类型>(<文件名>): <修改的内容>
修改类型分为如下几类:
feat
:用于添加内容的情况。fix
:用于修正现有内容错误的情况。refactor
:用于对一个页面进行重构(较大规模的更改)的情况。revert
:用于回退之前更改的情况。
Pull Request 信息格式规范
对于 Pull Request,请遵守以下几点要求:
- 标题请写明本次 PR 的目的(做了 什么 工作,修复了 什么 问题)。
- 内容请简要叙述修改的内容。如果修复了一个 issue 的问题,请在内容中添加
fix #xxxx
字段,其中xxxx
代表 issue 的编号。 - 推荐删除 pull request message 中的模板信息(“首先,十分感谢……”这一段)。
对于 Pull Request 的标题,推荐使用如下格式书写:
<修改类型>(<文件名>): <修改的内容> (<对应 issue 的编号>)
修改类型分为如下几类:
feat
:用于添加内容的情况。fix
:用于修正现有内容错误的情况。refactor
:用于对一个页面进行重构(较大规模的更改)的情况。revert
:用于回退之前更改的情况。
示例:
fix(ds/persistent-seg): 修改代码注释使描述更清晰
fix: tools/judger/index 不在目录中 (#3709)
feat(math/poly/fft): better proof
refactor(ds/stack): 整理页面内容
协作流程
- 在收到一个新的 Pull Request 之后,GitHub 会给 reviewer 发送邮件;
- 与此同时,在 GitHub Actions 和 Netlify 上会运行两组测试,它们会把进度同步在 PR 页面的下方。GitHub Actions 主要用来确认 PR 中内容的修改不会影响到网站构建的进程;Netlify 用来把 PR 中的更新构建出来,方便 reviewer 审核(在测试完成后点击 Details 可以了解更多);
- 在足够多 reviewer 投票通过一个 PR 之后,这个 PR 才可以合并到 master 分支中;
- 在合并到 master 分支之后,GitHub Actions 会重新构建一遍网站内容,并更新到 gh-pages 分支;
- 这时服务器才会拉取 gh-pages 分支的更新,并重新部署最新版本的内容。