在我的公司,我们目前正在使用Subversion。我们的项目开发流程包括一个“实时”代码分支(这是我们实时网站服务器上的内容),一个用于较小项目的普通开发分支,以及每个较大项目都有自己独立的分支。通常我们会同时开发至少两个较大的项目。将它们合并回实时分支可能会很麻烦,但更麻烦的是当大型项目1上线后,稍后大型项目2也要上线,那个合并过程就会变得混乱不堪。
我在SVN中所做的是每天从live合并到开发分支(包括任何错误修复等)。但是,大型项目合并过程仍然混乱,我想知道使用Git是否会更清晰。例如,有时我们在dev上有一个小功能,将其合并到live,然后在执行live回合并时,SVN会尝试再次将该功能合并回dev(导致冲突),除非我们手动取消合并中的该提交。据我了解,Git足够“聪明”,知道该提交起源于dev,因此不会尝试将其合并回去...但我的理解可能是错误的。我还听说Git更擅长自动处理像我们正在尝试做的复杂合并。因此,第一个问题是:对于我们正在做的事情,Git是否比SVN显着更好,或者我们仍然可能遇到相同的问题和同样棘手的合并?第二个问题:是否有其他集成方法适用于我们的情况?特别是,我读了一篇关于放纵式集成的文章,看起来不错,尽管随着更多项目同时进行,这似乎会变得指数级难度增加。但话说回来,我不指望我们会同时有三个大项目,通常只有两个。对于我们的许多项目来说,持续集成并不是一个选择,因为它们往往是全有或全无的项目,或者是如果分阶段推送将对用户产生不适感的项目(例如我们最近重新设计的结账流程)。这篇文章也似乎是我们情况下的一个好方法。