背景
在Clearcase中,您可以通过在Linux终端中输入以下命令来获取文件的图形版本树。
ct lsvtree -gra <filename>
这将打开一个带有许多选项的界面,以查看文件的两个版本之间的差异。
问题
从图形树界面中,我试图查找文件的任何版本中是否存在字符串。该字符串在某些时候丢失了,我想弄清楚那个“某个点”在哪里。
问题
如何在所有版本的文件中使用大写字母进行文本搜索?
答案 0 :(得分:1)
如果使用动态视图,则可以利用其通过版本扩展的命名方式访问元素版本的优势。以“ foo.c @@ / main / branch / 1”为例,您将“ foo.c @@”作为目录结构的根,并带有“ main”和“ branch”是子目录,“ 1”是“文件”
您可以通过以下操作来使用它:
例如:
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的输出。
答案 1 :(得分:1)
正如我mentioned before(2015年)一样,ClearCase中没有等效的git log -S or -G
(pickaxe search)。
完成镐查找(在Git中),以指出过去的修订版本,其中添加或删除了字符串。
但是:您需要为ClearCase编写等效功能的脚本。
由于cleartool lsvtree
向您显示了给定文件的所有版本,因此您可以从最新版本开始执行cleartool annotate
,以查看添加行的时间和版本。 br />
如果该行包含您的字符串,则此版本将是相关的。
如果最新版本不包含您的字符串,请对先前版本重复此过程(如果包含您的字符串,请对该先前版本执行cleartool annotate
)。