ClearCase中的配置规范

3

关于ClearCase我有一个小问题,希望你能帮助我!配置规格从何时开始生效?是在我点击CHECK OUT还是CHECK IN时?我有一个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

然后我检查了 test.c,我发现创建了分支 /main/branch_1/1。但是为什么呢?
1个回答

3

配置规范将在每次更新、检出和签入时应用规则(但不是您想的那样)。

在签入时,新版本将被创建在它被签出的分支上(这里是branch_1)。
该新版本可能不会被新的配置规范所选中,但它被签出的分支并没有被该新配置规范更改。

test.c已经在branch1中被签出时,将branch1更改为branch2不会改变任何内容。它将在branch_1中被签入。

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

  • 规则element * branch_1/LATEST将把新版本保留在该分支上
  • 规则element * /main/LATEST -mkbranch branch_2仅适用于从主干检出的版本(而test.c不再在/main上,它在branch1上: /main/branch1

这个配置规范将确保所有新版本(在test.c第一次在branch1上签入后)都在branch2上进行:

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

规则的顺序很重要,因为能够应用的第一个规则“胜出”(即其他规则被忽略)。 请参考此具体示例,其中介绍了 "Config Spec to display labeled files from 2 branches" 的配置规范。


请注意,在 test.c 的第一次检入后,将在 branch1 上创建一个新版本,如前所述。

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

这是由于您的第二个配置规范中存在一个错误的规则:

element * branch_1/LATEST

这个将选择正确的版本:
element * .../branch_1/LATEST

但是如果你的第二个配置规则没有涉及branch1test.c,那么/main/1仍然会被选中:因为在branch2上没有创建版本,所以只能应用element*/main/LATEST这一条规则。


1
@所有人第二次检出将根据当前的配置规范(您已修改的)进行,因此它仍将是“branch1”(因为在“branch2”中只有最新的main要被检出)。 如果您希望在第二次检出时看到“branch2”,则需要一个额外的选择规则:“element * ... / branch1 / LATEST-mkbranch branch2”,放在第二个位置。 - VonC
@所有人,没问题,我已经编辑了我的答案,添加了一些其他的元素来进行解释。 - VonC
好的!谢谢!我在ClearCase中做了这些事情,结果是:创建了/main/branch_1/1,但选择了/main/1。我需要帮助)我明白(谢谢!!!:))创建了/main/branch_1/1,但为什么在树形结构中看到/reserved /main/1? - all
1
@所有人,你的意思是在第二次结账期间吗?请注意,保留是在一个没有数字的版本上设置的。因此,在您的情况下,是从/main/1创建的版本,而不是/main/1本身。 - VonC
我在第二个配置规范中犯了一个错误!我有一个关于ClearCase的小问题。请帮帮我!配置规范何时开始工作?当我点击CHECK OUT还是CHECK IN?我有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 然后我Check in test.c,我得到了:created /main/branch_1/1. AND celected /main/1 version again. 但是为什么呢? - all
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接