我们说我有两个文件:File1
和File2
在下面的版本树图中,*
表示我的配置规范选择的工作副本的版本。
版本树:
File1在Branch2
上进行了开发,但现在已合并到分支main
| main |
|
(0)----| Branch2 |
| |
| (0)
| |
(1)*<------(1)
File2在Branch2
上有多个修订版
| main |
|
(0)----| Branch2 |
|
(0)
|
(1)
|
(2)*
配置规范:
#Pick up Branch2 LATEST unless it has an outgoing merge hyperlink type
element * {version(.../Branch2/LATEST)&&!hltype(Merge,->)}
element * /main/LATEST
我希望能够做到的只是查找我目前正在查看的Branch2
上的文件。
我试过这个:
cleartool find . -cview -type f -version "brtype(Branch2)" -print
它返回Branch2
.\File1@@\main\Branch2\0
.\File1@@\main\Branch2\1
.\File2@@\main\Branch2\0
.\File2@@\main\Branch2\1
.\File2@@\main\Branch2\2
我只想
.\File2@@\main\Branch2\2
什么是cleartool find
命令只会返回File2
,工作副本版本作为结果?我更喜欢单行命令而不是多步骤过程。
澄清
根据我的配置规范,我只希望将Branch2
和上列出的文件选为我的工作副本。 .\File2@@\main\Branch2\2
位于Branch2
,并被选为我的工作副本。 .\File1@@\main\1
被选为我的工作副本,不在Branch2
上,且不应列出。
答案 0 :(得分:1)
对于分支中的文件查询特定版本(如“LATEST
”)是错误的,因为没有保证您的配置规范实际上选择了给定分支的LATEST。
正确的方法是cleartool find
元素:
cview
)brtype
)这意味着:
cd /path/to/your/view/yourVob
cleartool find . -cview -type f -ele "brtype(Branch2)" -print
那仍然会给你File1
,但这会将其作为/main
中的版本(不是Branch2
)
然后,您可以轻松过滤出您需要的内容:
cleartool find . -cview -type f -ele "brtype(Branch2)" -print | grep Branch2
它仍然是一个命令,并且它不会假设您选择LATEST
Branch2
。
如果您在Branch2
上选择任何版本,它将在该查找结果中。
答案 1 :(得分:-1)
这将为您提供分支上的最新版本
cleartool find . -type f -ele "version(.../Branch2/LATEST)" -print