ClearCase使用configspec进行分支

时间:2010-11-22 13:16:39

标签: clearcase


我对ClearCase知之甚少,想了解更多 我在BR_PHASE2下创建了一个分支/main 我使用以下命令将文件签出到分支中:

element * CHECKEDOUT
element * .../BR_PHASE2/LATEST
element * /main/LBL_MS_PHASE2_04-NOV-2010 -mkbranch BR_PHASE2 

现在的问题是如何从分支机构访问文件? 如果我切换到这个配置规范,我甚至无法打开VOB:

element * CHECKEDOUT
element * /main/BR_PHASE2/LATEST

我写的配置规格错了吗?当我尝试如上设置配置规范时,我得到的错误:
警告:新的配置规范使当前工作的dir不可见。

实际访问我创建的分支的步骤是什么?

2 个答案:

答案 0 :(得分:4)

问题是:

实际拥有哪些目录:

  • 分支BR_PHASE2中的某个版本?
  • 标有LBL_MS_PHASE2_04-NOV-2010
  • 的版本

如果您只对/myVob/myDirectory下的所有文件进行分支/标记,则目录/myVob本身将永远不会被分支/标记。

这意味着以下配置规范将无法为/myVob选择任何版本,因此/myVob下任何文件的所有其他规则都无用:
在ClearCase能够选择一个有效版本的/myVob之前,它将无法为/myVob下的任何文件选择任何版本。

element * CHECKEDOUT 
element * /main/BR_PHASE2/LATEST

您应该始终使用“config stop-rule”结束您的配置规范,如:

element * /main/LATEST

或至少:

element /myVob /main/LATEST

在配置规范的末尾添加其中一个,视图应按预期工作。


ClearCase配置规范机制是基于组合的机制:要了解更多信息,请参阅SO答案“Flexible vs static branching (GIT vs Clearcase/Accurev)”。


OP补充道:

  

您提到要始终使用以下内容结束cs:element * /main/LATEST

不一定:

如果你想确保只使用正确的分支/标签查看/ myVob / myDir下的文件,你可以像我上面提到的那样使用:

element /myVob /main/LATEST

该规则仅适用于/myVob(不适用于/myVob下的任何内容) 这允许ClearCase超过/myVob(因为它至少可以选择一个有效版本)并开始将其他选择规则应用于子目录。

  

但是如果我只想从分支BR_PHASE2检出文件,那么这不会产生错误。我说当我用/ main / LATEST和checkout以及签入文件结束时,它会在主分支中更新。我该怎么办呢?

这取决于您使用的配置规范:

element * CHECKEDOUT
element * /main/BR_PHASE2/LATEST
element * /main/LATEST

确实会在主分支中创建新版本

element * CHECKEDOUT
element * .../BR_PHASE2/LATEST
element * /main/LBL_MS_PHASE2_04-NOV-2010 -mkbranch BR_PHASE2 
element * /main/LATEST

不会,因为如果元素已标记为LBL_MS_PHASE2_04-NOV-2010,则第一个规则将首先应用。

答案 1 :(得分:0)

您的第一个配置规范似乎没问题。您尝试从标签'LBL_MS_PHASE2_04-NOV-2010'更改的所有文件将分支到BR_PHASE2。只是尝试签出一些东西,并观看版本树。

此外,第二个配置规范告诉您查看仅属于分支的所有文件,但如果您还没有签出分支任何文件,那么您将看不到任何内容。

尝试以下方法:

element * CHECKEDOUT
element * /main/LBL_MS_PHASE2_04-NOV-2010
element * /main/BR_PHASE2/LATEST

通过从分支中选择标签和文件来获得目录结构。