我对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不可见。
实际访问我创建的分支的步骤是什么?
答案 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
通过从分支中选择标签和文件来获得目录结构。