在我的现任工作中,主管的惯例是只检查生产就绪的代码。最近我参与的项目涉及3个不同开发人员的工作,其中一些文件重叠。这意味着尽管某些更改需要一天时间,但仍需手动集成更改。我想知道这是否是常见做法,并获得有关如何改变这种做法的建议,因为很多时候我的意见在大局中并不重要。
在我的现任工作中,主管的惯例是只检查生产就绪的代码。最近我参与的项目涉及3个不同开发人员的工作,其中一些文件重叠。这意味着尽管某些更改需要一天时间,但仍需手动集成更改。我想知道这是否是常见做法,并获得有关如何改变这种做法的建议,因为很多时候我的意见在大局中并不重要。
应该对提交的代码进行单元测试,但是对我来说,“生产就绪”意味着它已经通过了集成和系统测试。在代码冻结之前无法进行这样的测试,因此我不明白你如何在每次提交之前都进行这样的测试。
首先,将版本控制系统从VSS切换到更可靠且功能丰富的工具。请参阅如何说服公司转换其源代码控制
然后应用已知的良好实践:
现在你还没有“生产就绪”:在部署之前仍需要几周时间进行测试和修复。缩短这段时间对您和客户都很有帮助,因此请投资于:
在代码库中建立一个测试分支,将非“生产就绪代码”在修改和测试完成后进行检入,这不是个好主意吗?
主干应该永远不会有破坏构建并未通过单元测试的代码检入,但分支不必遵守所有这些限制。
我认为这可能与我们使用的版本控制工具VSS以及缺乏学习分支相关。我非常喜欢每晚提交代码的想法,以帮助开发并避免“Going Dark”。我可以看出他对主干可能会有所抵触,但也许可以建立一个开发SS,在代码准备好投入生产时将其移动到生产SS。
从我所见到的实践来看,“生产质量”这个术语被用作一种“恐吓工具”,以确保人们害怕破坏树的顶部,说实话这并不是什么坏事,因为树的顶部应该尽可能地正常工作。
我认为最佳做法是,您只应将不同(即分离的)功能组件合并到树的顶部。如果对相同源文件的增量存在显着重叠,我认为这可能表明项目管理已经崩溃,那些开发人员应将其更改合并到单独的集成分支中,然后再进入主要的源代码。一个开发人员说他们对自己的东西进行了单元测试是无关紧要的,因为他们测试的东西已经变了!
试图在您的主线代码行上解决整合问题必然会阻碍其他无关提交。
假设您正在使用集中式版本控制系统(例如Subversion),并且假设您有一个“主干”概念(其中最新的良好工作代码存放):
如果您在“功能分支”/“实验分支”上开发新功能,则可以提交远未完成的代码。 (当功能完成时,您将良好行为的结果提交到“主干”中。)
但是,如果将非编译/明显不起作用的代码提交到“主干”或“发布分支”,则您将无法赢得受欢迎的竞赛。
Pragmatic Programmers有一本名为Pragmatic Version Control using Subversion的书,其中包括有关分支的建议部分。
早期及经常性检查有两个主要原因 -
1- 可能使代码集成更容易
2- 如果你的电脑爆炸了,你数周的工作不会消失
@bpapa
定期将工作文件夹备份到服务器可以避免丢失一天以上的工作。
@tonyo
让我们看看需求文档是在我们编码完成后的第二天才完成的。这告诉你我们的项目管理情况吗?
我们是一个小店,所以尽管你可能认为变化很容易,但这里有些人对旧方式固执不变。