如何查找当前视图中特定分支上的文件?

时间:2013-09-12 23:00:21

标签: version-control clearcase cleartool

我们说我有两个文件:File1File2

在下面的版本树图中,*表示我的配置规范选择的工作副本的版本。

版本树:

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上,且不应列出。

2 个答案:

答案 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