我应该多久向源代码控制提交一次更改?在每个小特性之后,还是只在大特性之后?
我正在开发一个项目,有一个长期的功能要实现。目前,我在完成每一大块工作后,即每一个子特性实现和bug修复后提交。我甚至在发现bug后为某些特性添加了一组新的测试之后才提交。
然而,我对这种模式感到担忧。在一个富有成效的工作中,我可能会提交10次。鉴于我使用的是Subversion,这些提交会影响整个存储库,所以我想知道做这么多次是否真的是一个好做法?
我应该多久向源代码控制提交一次更改?在每个小特性之后,还是只在大特性之后?
我正在开发一个项目,有一个长期的功能要实现。目前,我在完成每一大块工作后,即每一个子特性实现和bug修复后提交。我甚至在发现bug后为某些特性添加了一组新的测试之后才提交。
然而,我对这种模式感到担忧。在一个富有成效的工作中,我可能会提交10次。鉴于我使用的是Subversion,这些提交会影响整个存储库,所以我想知道做这么多次是否真的是一个好做法?
当前回答
我也喜欢定期检查。那就是每次我都朝着我的目标迈进了一步。
这通常是每隔几个小时。
我的困难是找到一个愿意并且能够执行这么多代码审查的人。
我们公司的政策是,在签入任何东西之前,我们需要进行代码审查,这是有道理的,但在部门中并不总是有人有时间立即执行代码审查。可能的解决方式:
每次签入需要更多的工作;更少的签到=更少的评论。 改变公司签到政策。如果我刚刚做了一些重构,单元测试全部运行绿色,也许我可以放松规则? 搁置变更,直到有人能够执行评审并继续工作。如果审阅者不喜欢你的代码,你就必须重新设计,这就会产生问题。通过“搁置”更改来处理任务的不同阶段可能会变得混乱。
其他回答
不要提交实际上不起作用的代码。不要将存储库用作备份解决方案。
相反,以自动的方式在本地备份不完整的代码。时间机器会照顾我,还有很多其他平台的免费程序。
我喜欢每30-60分钟提交一次更改,只要它编译干净,并且在单元测试中没有回归。
当您说您担心“提交会影响整个存储库”时,您是指整个存储库的修订号会增加吗?我不知道Subversion使用多少位来存储它,但我非常确定您不会用完修订号!多次提交不是问题。你可以承诺的次数是隔壁人的十倍,而你根本不会增加你的碳足迹。
单个函数或方法应该根据其功能命名,如果名称太长,则说明它的功能太多。我尝试将相同的规则应用于签入:签入注释应该准确地描述更改完成的内容,如果注释太长,则可能一次更改太多。
我个人会提交每一组已完成/稳定/编译的逻辑代码,并尽量在没有提交我当天所做的事情的情况下下班。
你现在的模式说得通。请记住如何使用这个源代码控制:如果您必须回滚,或者如果您想做一个不同的?在这些情况下,你所描述的块看起来就像是正确的差异:差异将准确地显示在实现bug #(在签入日志中指定)时发生了什么变化,或者确切地显示用于实现特性的新代码是什么。类似地,回滚一次只会触及一个东西。