工作完成

完成任务的实际工作量最终体现在提交上。提交数量之外,每个提交还有质量的要求如下:

提交的粒度不宜过粗

较小的提交粒度要求修改行数合适,定义增加行数和删除行数之和超过200行的提交为无效的。对第i名成员的第j次提交,记W_{len,i,j}表示这次提交的粒度情况,增加行数和删除行数之和超过200行时,W_{len,i,j}=0,反之W_{len,i,j}=1

对提交内容的充分说明

定义提交信息字符数不足20个的提交为无效的。对第i名成员的第j次提交,记W_{msg,i,j}为此次提交的提交信息说明情况,提交信息字符数达到20个时,W_{msg,i,j}=1,反之W_{msg,i,j}=0

合理的提交间隔

建议每次提交前使用git diff查看更改的内容以避免提交过于草率,过长的提交间隔则反映了开发过程的不连续。对第i名成员的第j次提交,记T_{i,j}为此次提交和前一次提交的时间间隔,j=1时,T_{i,j}=1h。记W_{time,i,j}表示这次提交的间隔情况, $$ W_{time,i,j} = \begin{cases} 0 & T_{i,j} < 30m \\ 1 & 30m \le T_{i,j} < 24h \\ \frac{72h - T_{i,j}}{72h - 24h} & 24h \le T_{i,j} < 72h \\ 0 & T_{i,j} \ge 72h \end{cases} $$

若第i名成员共有m_i次提交,则用C_i=\sum_{j=1}^{m_i} W_{len,i,j} \times W_{msg,i,j} \times W_{time,i,j}衡量其贡献。若共有n名成员,记\overline{C}=\frac{1}{n}\sum_{i=1}^n C_i,团队内的工作量分布用下式评价, $$ Commits=\frac{0.5 - \frac{1}{n\overline{C}}\sqrt{\frac{\sum_{i=1}^n {(C_i - \overline{C})}^2}{n - 1}}}{0.5 - 0.08} $$ 其中,计算结果超过1时取1,小于0时取0。