简而言之,因为合并通常是出错的另一个地方,并且只需出错一次就可以使人们非常害怕再次对其进行处理(如果可能,请害羞两次)。
假设我们正在一个新的“帐户管理”屏幕上工作,事实证明在“新帐户”工作流程中发现了一个错误。好的,我们采取两种不同的方式-您完成帐户管理,然后使用“新帐户”修复该错误。由于我们都在处理帐户,因此我们一直在使用非常相似的代码-也许我们甚至不得不调整相同的代码段。
现在,此刻我们有两个不同但完全正常工作的软件版本。我们都对更改进行了提交,我们都已尽职地测试了代码,并且独立地我们非常有信心我们已经完成了出色的工作。怎么办?
好了,是时候合并了,但是...废话,现在发生了什么?我们很可能会从两个工作软件套件转变为一个统一的,可怕的新漏洞软件,在该错误软件中,您的帐户管理不起作用,新帐户也已失效,我什至不知道旧错误是否仍然存在。
也许该软件很智能,它说存在冲突,并坚持要求我们提供指导。好吧,废话-我坐下来做,看看你添加了一些我不立即理解的复杂代码。我认为这与我所做的更改相冲突...我问你,等一下你检查一下,就会看到你不理解的代码。我们中的一个或两个都必须花时间坐下来,对适当的合并进行哈希处理,并可能重新测试整个dang事物,以确保我们没有破坏它。
同时,其他8个人都像他们的施虐者一样提交代码,在我知道我们发生合并冲突之前,我做了一些小错误修复,然后提交了这些错误,可以肯定,这是个休息的好时机,也许您下午休息或参加会议或其他任何活动。也许我应该去度假。或改变职业。
因此,为了逃避这一噩梦,有些人变得非常害怕承诺(还有什么新东西,对吗?)。在这种情况下,我们很自然地会产生厌恶情绪-除非我们认为自己很烂并且反正会把它搞砸,在这种情况下,人们开始鲁acting地放弃行动。叹
所以你去了。是的,现代系统的设计旨在减轻这种痛苦,并且应该能够轻松地进行还原,变基,变基,freebase和hanglide等。
但是,这还需要更多工作,我们只想按一下微波炉上的按钮,然后在有时间找到叉子之前就完成4道菜的餐点,这一切实在令人非常难以满足-代码是工作,高效,有意义,但是优雅地处理合并就不算在内。
通常,程序员必须开发出良好的工作记忆,然后趋向于在解决问题后立即忘记所有那些垃圾名称和变量名称以及作用域,并处理合并冲突(或更糟糕的是,错误处理的合并)是提醒您死亡的邀请。