配置规范将在每次更新、检出和签入时应用规则(但不是您想的那样)。
在签入时,新版本将被创建在它被签出的分支上(这里是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
但是如果你的第二个配置规则没有涉及branch1
和test.c
,那么/main/1
仍然会被选中:因为在branch2
上没有创建版本,所以只能应用element*/main/LATEST
这一条规则。
/main/1
创建的版本,而不是/main/1
本身。 - VonC