在ClearCase中查找仅存在于其父目录的某些版本中的元素版本

时间:2015-04-13 21:07:00

标签: find clearcase cleartool

情况就是这样。

我们说我有一个文件," foo.cpp"。 它的父目录是/ path / to / foo /。

  • / vobs / myvob / path / to / foo @@ / main / release / 1 包含foo.cpp
  • / vobs / myvob / path / to / foo @@ / main / release / 2 DOES 包含foo.cpp
  • / vobs / myvob / path / to / foo @@ / main / release / 3 包含foo.cpp

所以,foo.cpp仅存在于:

/vobs/myvob/path/to/foo@@/main/release/2/foo.cpp@@/main/release/some-branch/{versions}

其中 {versions} 是foo.cpp的几个版本,例如1,2,3,LATEST。

我的配置规范非常通用,因为我的脚本需要解析数百个不同的分支才能找到某些版本的文件:

element * CHECKEDOUT
element * /main/release/LATEST
element * /main/LATEST

很清楚,

ct find . -name 'foo.cpp' -print 

在分支上找不到foo.cpp" some-branch"。

我试过了:

ct find . -a -nvi -name 'foo.cpp' -branch 'brtype(some-branch)' -print
ct find . -a -nvi -name 'foo.cpp' -print | grep some-branch
ct find . -a -nvi -name '*' | grep foo.cpp

这些都没有找到foo.cpp。

有什么想法吗?可以以任何方式修改我的配置规范以使其更容易吗?

2 个答案:

答案 0 :(得分:1)

来自“Additional examples of the cleartool find command”:

  

cleartool find命令用于定位VOB中的ClearCase对象,不受视图配置规范(配置规范)的限制。

确保使用动态视图。

ct find . -a -nvis -name 'foo.cpp' -ver 'brtype(some-branch)' -print
# or:
ct find . -nvis -name 'foo.cpp' -ver 'brtype(some-branch)' -print

选项-ver是必需的,以便查找和列出版本。

答案 1 :(得分:0)

如果您100%确定该文件位于/ vobs / myvob / path / to / foo @@ / main / release / 2,则可以修改配置规范

element * CHECKEDOUT
element /vobs/myvob/path/to/foo /main/release/2
element * /main/release/LATEST
element * /main/LATEST

然后,按上述方法执行搜索。然后,您将不需要-nvi选项,因为您将在可以看到对象的视图中。

考虑到你想要一个通用答案,我会建议使用以下命令

 cleartool find -all -name "foo.cpp" -version 'brtype(some-branch)' -print

除非您只想列出视图中不可见的版本,否则请勿使用-nvi选项。