Clearcase - 选择性合并

时间:2010-04-26 11:25:45

标签: clearcase

我有一种特殊的Clearcase怀疑。我无法完全描述为什么我在做这样一个令人困惑的架构,但我需要这样做(感谢有人长期以来做错了)。

好的,这里有一些细节:B1是一个被污染的分支,我的小组的变化和另一个小组的变化混合在一起非常糟糕,以至于无法找到哪个代码是谁的。所以提出的解决方案是创建一个名为B2的新分支(与B1处于同一级别)并将其他组的所有未修改代码放在其上(这样做的方法是将B1与B2合并然后去除从它变成原始的所有变化)。然后在B1上创建一个CR分支,并仅保留该组在该分支上新添加的文件或修改过的文件。最后从B2中创建一个集成分支,并将B1的CR分支的变化合并到B2的集成分支。

所以这就是我所做的:(用例是我有dir D的地方,其中文件a,b和c在那里。我的小组最终修改了文件,而b和c根本没有被修改)。

有一个分支B1,其上有文件a,b和c。还有另一个分支B2。合并从B1到B2完成。现在B2也有a,b和c。

此时分支B1和B2都相同。现在我从分支B2(rmname)中删除文件a。现在B2只有b和c。我在这个名为Label1的分支上添加了一个标签。这使得标签Label1的代码成为来自其他组的未修改代码。

现在我从B1创建一个名为CR1的子分支,并删除B2分支中的所有文件(即b和c),使其仅包含原始代码中的修改代码。就我而言,它是文件a。

此时带有标签Label1的分支B2具有文件b和c(这些是未修改的代码),而离开B1的分支CR1只有一个(由我们修改)。

现在我创建另一个名为Integration branch的分支,该分支来自B2 Label1。然后我将CR分支合并到期望它将为我提供所有三个文件a,b和c。我需要做的就是做一个版本树视图,看看谁修改了什么。

但我面临的问题是,因为我之前在分支B2上完成了文件的rmname以放置Label。合并并不真正从CR分支获取文件。

如何解决这个问题。我想有选择地合并。有可能吗?

抱歉,如果这是一个糟糕的设计。我并不熟悉Clear案例,并且选择和时间有限,无法清除其他人的混乱局面。

1 个答案:

答案 0 :(得分:1)

(脸颊)
在其中一种情况下,我实际创建了一个git workspace within my ClearCase view,在clearfsimporting返回结果之前解开Git分支中的情况!

更重要的是:

      CR1----------------------------(a)
      .  (C1 branch from B1)           \  (a merged to Int)  
     .                                  \ 
B1-(abc)                               Int (b,c)  # where is a???
     .                                  . 
       .  (B2 branch from B1)          .  (Int branch from B2)
      B2-(abc)-----------------------(bc,label1)

来自CR1的合并不会添加后退,因为:

  • A的共同祖先(在B1上)已成为B2的一部分,之后在B2上被删除
  • Int来自B2
  • a不考虑合并到来自B2的分支,因为它已经是B2的一部分。

在这种情况下,我会建议目录的图形合并,这将允许您手动解决该合并(强制解析为:“采取”)