实践指南
本次作业的目的是让你们熟悉 github 的基本操作。
以小组(不超过四人)为单位,从 github 仓库中的一个指定文件中寻找 typo 并提出修复的 PR。每个小组被要求找到并修复恰好三个 typo,并且要注意避免和其他小组重复。可以使用 github 的搜索功能来检查是否有重复的 PR。
如果小队恰好是四个人,可以由队长负责合并队员的 PR,其他三人提供 typo 修复。少于四人的小队可以自行分配每个人多少修改。(不影响个人评分)
具体步骤如下:
初期工作
队长访问 https://github.com/X-lab2017/oss101 fork 此仓库。
克隆到本地,创建 team-<队长学号>
(例如 team-5555903XXX
) 的分支,作为团队的工作分支。
队长创建好 PR 之后,立即提交 draft PR。标题可以暂定为 typo:
,也可以优先占坑,例如 typo: `peple` at line 27, `throu gh` at line 109 ...
,即便你们 PR 内容还什么都没有,也可以表明你们先占有了这样里的 typo。(注意避免和其他已有同学重复)
强调:我个人希望同学们不要急于求成,完全可以先占坑之后慢慢做协作的部分,不要因为仓促导致了复杂的问题。而从课程的角度我们鼓励出现复杂的问题给学生带来更好的 git 实践经历。
队员 fork 队长的分支,也是采用 PR 的方式向队长分支提交 commit。结合所学 git 协作方法,队长采用 Rebase and merge
合并队员的分支避免引入 merge commit。队员的 commit massage 可以参考: Fix extra space typo `throu gh` at line 109
(添加行号是为了便于其他同学核对)
鼓励队员 fork 队长仓库通过 PR 的方式来提交变更,而不是全队加入队长的仓库的 member 方式来协作。(这一点不强制,在评分上优先考虑第一种。)
查看文件 Assignments/Assignment-typo-for-cloud-computing.md
本作业的主要工作是在 Assignment-typo-for-cloud-computing.md
内部寻找以下几种有限类型的错误,并且除此之外不能包含例如排版,不可见字符,增减空行的修改。如果你有额外的想贡献的内容,我们欢迎额外提单独的 PR。
Skip letter 20
Extra letter 10
Skip spaces 15
Extra space 10
Wrong letter 10
为便于查找 typo,我推荐对比原文,或者使用语法检查工具:
修复 typo,转化 draft PR。
PR 的内容参考见下文的示例,注意随时可以编辑标题和正文内容。
队长注意检查 PR 页面的 Commits
和 Files changed
标签,确保变更内容和文本都正常规范(不能有多余的 change)。
在完成了队内协作以后,可以点击 draft PR 页面的按钮,ready for review 转化成常规 PR。
PR 的标题要以 typo: `<typo原文>` at <行号>, ...
作为标题,例如 typo: `peple` at line 27, `throu gh` at line 109,`th gh` at line
(这样做的目的也是便于其他同学核对检索)
强调:一个小组的作业对应一个 PR,并且考虑到任务不复杂, git 可以完全可以重做分支所以本次作业 PR 不允许自行关闭重开。
鼓励队员 fork 队长仓库通过 PR 的方式来提交变更,而不是全队加入队长的仓库的 member 方式来协作。(在评分上优先考虑第一种,但不强制这一点。)
等待助教或老师审核 PR
助教可能会给出 approve,但不一定保证没有冲突,冲突会在 merge 阶段报告。
助教大概率不会马上合并所有 PR,所以要注意不要与已有的同学冲突。
假如大多数同学已经被助教 approve,那么助教会开始按时间顺序合入 PR,如果有同学被 check 到有冲突,助教会把 PR 打回 draft PR 并且合入顺序会调到下一次合入。请注意及时修改。在这个阶段有一定概率,你们会被后面与你冲突的人二次覆盖,所以希望大家仔细检查尽量一次通过。
作业的评分标准如下(本次实验在云计算课程中只记录通过情况,考虑到同学其他安排也繁忙,尽量提早完成避免意外):
内容:typo 是否正确识别和修复、没有重复和额外的修改、并且和修改内容保持一致(许多人会忘记这一点)
协作:是否恰好包含全体队员的 commits(4 人团队的队长例外)。
格式:PR 以及 commits 的内容是否标准规范。
综合:以上内容都会给出机会修改,评分会优先考虑被助教给出意见较少的团队。
为避免惨剧发生,建议队长仔细检查 file diff 查看变更是否正常。在确保一切正常以后再转化 PR 邀请审查。一人出错可以包容,而我们都不希望出现多人疏忽的小概率事件。
作业的截止日期是 2023 年 5 月 28 日 23:59。请在截止日期前提交 PR,并确保 PR 能够被合并。逾期提交或提交失败的作业将不予评分。如果你们在完成作业的过程中遇到任何问题或困难,请及时联系老师或助教。
附录 1 PR 示例
以下是一个更清晰 PR 文本的例子,标题代表 PR 的标题,之后是 PR 的正文,请同学们务必参考:
markdown
预览
标题 typo: `peple` at line 27, `throu gh` at line 109
fixes #143
- fix extra space typo `throu gh` at line 109 to `through` @whofixit
- fix skip letter typo `lbrary` at line 111 to `library` @whofixit
team: 522759030XX 522759030XX
标题 typo: peple
at line 27, throu gh
at line 109
fixes #143
fix extra space typo throu gh
at line 109 to through
@whofixit
fix skip letter typo lbrary
at line 111 to library
@whofixit
team: 522759030XX 522759030XX
@whofixit
是 @ 团队成员的 GitHub id。
附录 2 重要警示
我们的文档中存在一种非空格的不可见字符 Unicode Character 'NO-BREAK SPACE' (U+00A0) ,顾名思义,他是一种不折行的空格。
但非常不巧,它和我们常用的空格 SPACE (U+0020) 是两种完全不同的符号。我观察到有部分同学的 commit 中,可能因为一些意外(比如使用 GitHub 内置的文本编辑),导致这个符号被转换了。
进而导致引入了额外的变更。请各位同学和队长留心 review code diff,因为额外的变更在 diff 中是很显而易见的。