如何在clearcase文件的所有版本中进行文本搜索?

如何在clearcase文件的所有版本中进行文本搜索?,clearcase,Clearcase,背景 在Clearcase中,您可以通过在linux终端中输入以下命令来获得文件的图形版本树 ct lsvtree -gra <filename> ct lsvtree-gra 这带来了一个界面,其中有许多选项可以查看文件的两个版本之间的差异 问题 在图形树界面中,我试图找出文件的任何版本中是否存在字符串。这个字符串在某个点丢失了,我想知道“某个点”在哪里 问题: 如何在clearcase中跨文件的所有版本运行文本搜索?如果使用动态视图,可以利用它通过版本扩展命名访问元素版本的方

背景

在Clearcase中,您可以通过在linux终端中输入以下命令来获得文件的图形版本树

ct lsvtree -gra <filename>
ct lsvtree-gra
这带来了一个界面,其中有许多选项可以查看文件的两个版本之间的差异

问题

在图形树界面中,我试图找出文件的任何版本中是否存在字符串。这个字符串在某个点丢失了,我想知道“某个点”在哪里

问题:


如何在clearcase中跨文件的所有版本运行文本搜索?

如果使用动态视图,可以利用它通过版本扩展命名访问元素版本的方式。以“foo.c@@@main/branch/1”为例,将“foo.c@@@”作为目录结构的根,其中“main”和“branch”是子目录,“1”是“文件”

您可以通过执行以下操作来使用此功能:

  • cd至“foo.c@@@
  • 执行搜索
例如:

cd foo.c@@
grep -rl "target-string" *
要获取不带字符串的文件,请执行以下操作:

cd foo.c@@
grep -rlv "target-string" *
您也可以使用lsvtree输出来支持脚本中的搜索,但以上是实现这一点的最简单技巧。这适用于Unix和Windows,但如果目标字符串包含多个单词,则可能需要使用标准Windows“findstr”以外的其他内容,因为findstr处理这些单词的方式很奇怪:findstr“foo-bar-oof”将打印包含“foo”、“bar”或“oof”的行,有时甚至使用/L表示“literal”

如果您使用的是快照或web视图,这就要复杂得多,需要一个脚本来迭代lsvtree的输出。

正如我(2015年)所说,在ClearCase中没有等价物

完成鹤嘴锄搜索(Git)是为了指出添加或删除字符串的过去版本。
但是:您需要为ClearCase编写等效的特性脚本

由于显示了给定文件的所有版本,因此您可以从最新版本开始,查看添加行的时间和版本。
如果该行包含您的字符串,那么此版本将是相关的


如果最新版本不包含您的字符串,则对上一版本重复此过程(如果该版本包含您的字符串,则在该上一版本上执行
cleartool注释)。

此外,如果您正在寻找相反的结果——在版本中字符串“来自”的位置,则可以使用“cleartool注释”来查找。这相当于CC的“git责怪”,它将告诉您每个文本块的最新来源。第三方“视觉注释”程序IIRC迭代多个注释输出,以便第一次出现一行/一块文本。我不是这个工具的创建者,但我想我应该提到它。我喜欢动态视图扩展路径名文件夹的方法。向上投票。我从未成功地使用过它,但它可能会起作用。