我不同意这条规则,也同意梅森·惠勒的观点。我想补充一些想法。
每当我有一个有意义的更改要提交时,我都会尝试提交:如果我修复了几个小错误,这可能一天两次,如果我正在开发一个较大的软件,而其余部分无法使用,则每周一次。代码以任何有意义的方式,直到达到一致状态为止。
另外,我将提交解释为发布有意义的修订,该修订为代码库提供了新功能。我认为应该在提交之前尝试清理代码,以便其他开发人员在查看修订历史记录时可以理解更改的含义和目的。其他开发人员在历史记录中看到的更改越少越好:当我查看修订历史记录时,我希望看到增加一些有意义的功能的增量;我对每个开发人员的每个小想法都不感兴趣,并想在他们解决方案之前尝试一下。
此外,我认为使用SVN服务器(或任何版本控制系统)作为提交当前代码快照(前提是可以编译)的备份工具不是一个好主意:您可以使用USB记忆棒或外部USB驱动器或网络磁盘来镜像您当前的代码,这样即使您的计算机出现故障也不会丢失它。版本控制和数据备份是两件事。发布修订与保存
代码快照不同。
最后,我认为时不时地提交(即仅当人们真正对代码的当前状态感到满意时)应该不是问题,并且避免合并冲突并不是经常(过多)提交的合理理由。许多合并时,不同的人对同一文件的工作在同一时间,这是一个不好的做法(见例如冲突发生这篇文章中,7点)。应该通过将项目分成具有清晰接口和尽可能少的依赖关系的模块,并协调开发人员的工作,以使他们工作的代码尽可能少地重叠,来减少合并冲突。
只是我的2美分。
编辑
我想到反对过早提交的另一个原因是(非常多的)错误版本无法测试。如果您要进行测试,并且测试团队每天都在测试,则他们可能在几个小时(或一天)内没有可测试的版本。即使您不尝试修复该错误,而只是还原您的更改,重建也可能需要几个小时。假设有五名测试人员在您的团队中工作,由于不活动,您浪费了5 x 2 = 10个小时的团队时间。它发生在我一次,所以我真的尽量避免名称过早提交尽快提交。