我对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

然后,我签入test.c,然后创建了/main/branch_1/1。但为什么???

最佳答案

配置规范将在每次更新,签出和签入时应用规则(但并非您认为的那样)。

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

在已经签出branch1时(在branch2中)更改test.c中的branch1不会更改任何内容。它将以branch_1签入。

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

  • 规则element * branch_1/LATEST将新版本保留在该分支
  • 规则element * /main/LATEST -mkbranch branch_2仅对从main中检出的版本有效(并且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
    

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

    关于clearcase - ClearCase中的配置规范,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16000958/

    10-10 11:19