1

假设我有两个文件: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并且不应该列出。

4

2 回答 2

1

为分支中的文件查询特定版本(例如“ 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

它仍然是一个命令,并且它不假设您正在选择LATESTof Branch2
如果您在 上选择任何版本Branch2,它将在该查找的结果中。

于 2013-09-13T05:17:10.737 回答
-1

This will get you the latest version on the branch

cleartool find . -type f -ele "version(.../Branch2/LATEST)" -print
于 2013-09-13T02:34:32.263 回答