我们有这些Mercurial存储库:
Trunk
|
|
|---------myapp_1_0_23 (created off release 1.0.23)
|
|---------myapp-newstuff (created off rel 2.0.4)
Run Code Online (Sandbox Code Playgroud)
发布时间表(尚未发布):
myapp_1.0.23
,此repo中的任何add'l更改将合并到trunkmyapp-newstuff
和trunk 的合并发布的v3.0或v4.0 .在合并时,中继可能具有v2.0代码或一些我们将从主干中释放的新功能为v3.0在进行更改后myapp_1.0.23
,我们将它们合并到主干,但是假设我们也需要它们,myapp-newstuff
所以我们也将它们合并在那里.当我们最终将myapp-newstuff
代码合并到主干时会发生什么?
主干已经进行了更改,myapp_1.0.23
那么当我们将这些相同的变更集从myapp-newstuff
后台合并到主干时会发生什么?Mercurial是否足够聪明,知道这些变更集已经在主干中?
Mercurial会很好地处理这种情况 - 因为你正在使用'merge'.当你使用导出/导入(或移植)时,樱桃选择被调用,并且你有多个不同的节点ID(由于不同的父母)有相同的变更集,那么Mercurial不能知道"哦,这个是已经在这里".但是,只要你合并Mercurial就会说得很好"哦,这个repo已经有了变更集,所以我不需要重新应用它".
一般的经验法则是:"尽可能早地做出每一个更改,然后合并".如果我有第一版,第二版和第三版的错误,我将其修复为一个,然后合并为两个,然后合并为三个.如果你先把它固定在三个中,那么你必须尝试将它变成两个而不用它带来第三版中的所有其他变化 - 这很难并且通常需要我们试图避免的樱桃挑选.
归档时间: |
|
查看次数: |
257 次 |
最近记录: |