具有专用分支的Clearcase配置规范

时间:2008-10-28 18:13:12

标签: version-control clearcase

我的工作分支结构有点复杂(至少对我而言)。它是这样的:

Main
 |
 1
 |
 2
 | \
 3   \
     Ver2
      |
      1
      | \
      2   \ 
      |   ProjectA
      3      |
             1

主要有两个分支。 “Ver2”包含了下一个版本的每个人的变化,以及“ProjectA”,这是我的工作。

我的问题是:有没有办法创建一个配置规范,知道已合并的内容,所以我得到:

  1. ProjectA中尚未合并的任何内容
  2. 如果ProjectA的LATEST已合并到Ver2,则从Ver2分支获取LATEST
  3. 如果没有ProjectA分支,请从Ver2
  4. 获取
  5. 如果没有Ver2,请从MAIN
  6. 获取

    例如,在上面的例子中,如果我将版本1从ProjectA合并到Ver2分支中的版本2,那么我希望在Ver2上看到版本3。但是,如果我还没有合并这些文件,我希望在我的视图中使用ProjectA的版本1.

3 个答案:

答案 0 :(得分:0)

我认为你不能那样做。但是,你能得到的是ProjectA的最新成果; Ver2上任何未在ProjectA中更改的内容;以及在Ver2或ProjectA中未更改的MAIN上的任何内容。其余的技巧是确保从Ver2或MAIN合并所有必要的东西。为此,您可以使用带有Ver2配置规范的参考视图(除非Ver2没有保持最新,否则不需要MAIN),然后在ProjectA视图中执行:

cleartool findmerge . -fta view-tag-for-ver2 -merge

-fta表示“来自标签”。当然,还有无数的额外选择。

这可确保ProjectA完全与Ver2相关。

答案 1 :(得分:0)

您必须记住为什么要定义 branch
隔离开发工作。

因此,为了更好地管理复杂的配置规范,您应该确切地知道扮演'main'分支,v2分支和项目A分支的角色。

例如,V2和项目A应该有两个不同的原因。

如果项目A在那里开发项目的当前版本,则应该合并到V2分支以允许将一些当前开发改进到V2分支。

根据这个推理,你不应该在同一个视图中看到“both”:它们代表两组不同的文件,V2可能包含具有非常不同API的大型重构。

但是,如果您坚持这样的配置,您可以使用移动“MERGE_FROM_PA”标签的功能:每次将某些文件从项目A合并到V2分支时,再次为每个合并设置“MERGE_FROM_PA”标签文件/目录,将该标签从之前的V2版本移动到最新版本。

配置规范可以是:

element * MERGE_FROM_PA
element * .../ProjectA/LATEST
element * .../V2/LATEST
element * /main/LATEST

但话又说回来,这没什么意义。

您需要定义要进行模型化的不同开发工作,然后定义coherent workflow,允许您的配置规范仅关注那些环境中的一个

答案 2 :(得分:0)

为什么不呢?如果某个分支在某处合并,则不使用分支对我有意义。

这是配置规范:

element * {version(.../ProjectA/LATEST)&&!hltype(Merge,->)}
element * {version(.../Ver2/LATEST)&&!hltype(Merge,->)}
element * /main/LATEST

是什么让这个工作流程不连贯,只要你在构建之前标记它?