我有以下情况:
bitbucket有一个主线分支。每个开发人员都会在此主线之外创建一个分支并对其进行处理。一旦开发人员在dev分支中完成代码开发,他就会从主线同步代码并运行CI过程来测试是否一切正常。一旦构建通过(包括完整性测试),那么来自dev分支的代码将合并到主线。
问题陈述:
我们如何在这里拥有自动智能解决方案?
如何在不添加等待/睡眠或等待X_Dev代码同步到ML或让每个功能都拥有自己的SDLC的情况下处理这些问题?
答案 0 :(得分:0)
我认为不可能有“自动”解决方案来解决合并冲突/问题。 Git可以帮助您管理代码,但是您无法真正教它来解决合并冲突。大多数情况下,您必须自己手动检查并仔细解决每个冲突。
我认为您最好的解决方案是对您的开发过程进行一些更改。
首先,当您说“从主线同步代码”或“从主线复制代码”时,我希望您的意思是在dev分支上执行git rebase master
或git merge master
。如果没有,那么我建议你研究git rebase
。
第二,您如何创建开发分支? 理想情况下,每个分支应该足够独立,以便在1个分支(例如X)上完成的工作不会冲突或依赖于在其他分支(Y,Z等)上完成的工作。合并冲突通常发生在分支触及代码/模块/功能的相同部分时。如果您可以以某种方式将代码更改隔离到单独的分支中,那么这将减少合并冲突的可能性。
在您的示例场景中,似乎Y和X的工作密切相关。也许他们应该只在一个分支机构YX上工作?因此,运行测试只会进行一次,但会同时测试它们的两个功能。或者你可以先创建一个中间分支(Z),你可以在其中对Y和X进行常见更改,然后从Z分支Y和X.在X和Y完成编码和测试之后,他们将代码合并回Z.你在Z上做另一组测试,然后将Z合并回主线。由于X和Y都有常见更改的副本,因此在将代码合并到Z时可以减少冲突的可能性。
第三,您可以进行两种测试:分支/功能测试和集成测试。
分支测试是您已经在做的事情,在每个功能分支合并回主线之前对其进行构建和完整性测试。这很好,因为从分支的角度来看,它检查修改后的代码是否没有破坏任何其他功能。
集成测试(IT)是将分支合并回主线时执行的操作。这是你在每个分支上已经做过的相同的构建和健全性测试,但这一次,它是在主线而不是在分支上完成的并且当所有功能都合并到主线。这允许合并每个分支,而不要求它首先与所有其他分支同步。根据您的示例场景,您已经在使用IT,但是您在EACH分支上执行此操作,因为您需要每个分支首先从其他分支获取更改。当然,这样做仍然是一个好主意,但对于IT,您并不总是需要。 (此外,IT更容易实现自动化,因为您始终可以在主线上运行它。)。
希望有所帮助。