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

问题描述 投票:1回答:2

背景

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

ct lsvtree -gra <filename>

这会打开一个界面,其中包含许多选项,可以查看文件的两个版本之间的差异。

问题

从图形树界面,我试图找到任何版本的文件中是否存在字符串。这个字符串在某些时候丢失了,我想知道那个“某点”的位置。

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

clearcase
2个回答
1
投票

正如我mentioned before(2015),在ClearCase中没有相当于git log -S or -G (pickaxe search)

该镐搜索已完成(在Git中)以指出已添加或删除字符串的过去修订版。 但是:您需要为ClearCase编写等效功能的脚本。

由于cleartool lsvtree会显示给定文件的所有版本,因此您可以从最新版本开始执行cleartool annotate,以查看何时以及在哪个版本中添加了该行。 如果该行包含您的字符串,那么此版本将是相关的。

如果最新版本不包含您的字符串,则使用以前的版本重复该过程(如果它包含您的字符串,请在该先前版本上执行cleartool annotate)。


1
投票

如果使用动态视图,则可以利用它通过版本扩展命名访问元素版本的方式。以“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表示“文字”。

如果您正在使用快照或Web视图,这会非常棘手,并且需要一个脚本来迭代lsvtree的输出。

© www.soinside.com 2019 - 2024. All rights reserved.