ClearCase中的配置规范

ClearCase中的配置规范,clearcase,config,cleartool,specifications,Clearcase,Config,Cleartool,Specifications,我对ClearCase有个小问题。请帮帮我!配置规范什么时候开始工作?当我单击“签出”或“签入”时?我有test.c和配置规范 element * CHECKEDOUT element * .../branch_1/LATEST element * /main/LATEST -mkbranch branch_1 然后修改test.c,然后更改配置规范: element * CHECKEDOUT element * .../branch_2/LATEST element * /main/LATE

我对ClearCase有个小问题。请帮帮我!配置规范什么时候开始工作?当我单击“签出”或“签入”时?我有
test.c
和配置规范

element * CHECKEDOUT
element * .../branch_1/LATEST
element * /main/LATEST -mkbranch branch_1
然后修改
test.c
,然后更改配置规范:

element * CHECKEDOUT
element * .../branch_2/LATEST
element * /main/LATEST -mkbranch branch_2
element * branch_1/LATEST

然后我签入
test.c
,我已经创建了
/main/branch\u 1/1
。但是为什么呢?

配置规范将在每次更新、签出和签入时应用这些规则(但不像您认为的那样)

签入时,将在已签出的分支中创建新版本(此处
分支1
)。
新配置规范可能不会选择该新版本,但签出该版本的分支不会被新配置规范更改

branch2
中更改
branch1
,而
test.c
已签出(在
branch1
中),不会更改任何内容。它将在
分支_1
中签入

现在,您将在签入
test.c
时在
branch1
上创建一个版本(即使使用第二个配置规范),您需要意识到,将来所有签出/签入都将在
test.c
的同一分支上进行,因为:

  • 规则
    元素*branch_1/LATEST
    将保留该分支上的新版本
  • 规则
    元素*/main/LATEST-mkbranch branch_2
    仅对从main签出的版本有效(test.c不再在
    /main
    上,而是在
    branch1
    上:
    /main/branch1
此配置规范将确保所有新版本(在
branch1
上首次签入
test.c
后)都在
branch2
上完成:

element * CHECKEDOUT
element * .../branch_2/LATEST
element * ../branch_1/LATEST  -mkbranch branch_2
element * /main/LATEST -mkbranch branch_2
规则的顺序很重要,因为第一个可以应用的规则“获胜”(即忽略波特规则)。
请参见“”中的配置规范的具体示例


请注意,在第一次签入
test.c
之后,您将获得一个在
branch1
上创建的新版本,如前所述

然而,您的第二个配置规范将选择
/main/1
,而不是
/main/branch1/1

这是因为第二个配置规范中的规则不正确:

element * CHECKEDOUT
element * .../branch_2/LATEST
element * /main/LATEST -mkbranch branch_2
element * branch_1/LATEST
这将选择正确的版本:

element * .../branch_1/LATEST

但是如果您的第二个配置规范没有关于
branch1
的规则,
test.c
仍将被选择为
/main/1
:没有在
branch2
上创建版本,因此
元素*/main/LATEST
是唯一可以应用的规则。

非常感谢!我是一个绝对的初学者,这对我来说很难。我不理解“在branch2中更改branch1,而test.c已经签出(在branch1中)不会更改任何内容。它将在branch_1中签入。”。当我再次签出test.c时,将在视图中选择什么?@所有第二次签出将根据当前配置规范(您已修改)进行,因此它仍然是
branch1
(因为只有最新的main才会在
branch2
中签出)。如果要在第二次签出时查看branch2,则需要一个附加的选择规则:
元素*!非常感谢。我在ClearCase中执行这些操作,结果是:创建了/main/branch_1/1,但选择了/main/1。我需要帮助)我理解(谢谢!!!:)创建的/main/branch_1/1,但是为什么我在树/main/1中看到“保留”?@你的意思是在第二次结账时?请注意,保留是在没有编号的版本上设置的。因此,在您的例子中,一个版本是从
/main/1
创建的,而不是从
/main/1
本身创建的。