如何在 clearcase 文件的所有版本中进行文本搜索?
How do I do a text search across all versions of a clearcase file?
背景
在 Clearcase 中,您可以通过在 linux 终端中输入以下命令来获取文件的图形版本树。
ct lsvtree -gra <filename>
这将打开一个界面,其中包含许多选项,用于查看文件两个版本之间的差异。
问题
从图形树界面,我试图查找某个字符串是否存在于文件的任何版本中。这个字符串在某个时候丢失了,我想弄清楚 "somepoint" 在哪里。
问题
我如何 运行 在 clearcase 文件的所有版本中进行文本搜索?
如果您使用动态视图,则可以利用它通过版本扩展命名访问元素版本的方式。以 "foo.c@@/main/branch/1" 为例,您将 "foo.c@@" 作为目录结构 的 根目录,其中 "main" 和 "branch" 是子目录, “1”是 "file"
您可以通过执行以下操作来使用它:
- 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 for "literal" 时也是如此。
如果您使用的是快照或 Web 视图,这会比较棘手,并且需要一个脚本来迭代 lsvtree 的输出。
正如我在 ClearCase 中 mentioned before (2015), there is no equivalent to a git log -S or -G
(pickaxe search)。
完成镐搜索(在 Git 中)以指出添加或删除字符串的过去修订。
但是:您需要为 ClearCase 编写等效功能的脚本。
从 cleartool lsvtree
shows you all the version of a given file, you can, starting with the most recent version do a cleartool annotate
开始查看添加该行的时间和版本。
如果该行包含您的字符串,那么此版本将是相关的。
如果最新版本不包含您的字符串,则对之前的版本重复该过程(如果之前的版本包含您的字符串,请执行 cleartool annotate
)。
背景
在 Clearcase 中,您可以通过在 linux 终端中输入以下命令来获取文件的图形版本树。
ct lsvtree -gra <filename>
这将打开一个界面,其中包含许多选项,用于查看文件两个版本之间的差异。
问题
从图形树界面,我试图查找某个字符串是否存在于文件的任何版本中。这个字符串在某个时候丢失了,我想弄清楚 "somepoint" 在哪里。
问题
我如何 运行 在 clearcase 文件的所有版本中进行文本搜索?
如果您使用动态视图,则可以利用它通过版本扩展命名访问元素版本的方式。以 "foo.c@@/main/branch/1" 为例,您将 "foo.c@@" 作为目录结构 的 根目录,其中 "main" 和 "branch" 是子目录, “1”是 "file"
您可以通过执行以下操作来使用它:
- 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 for "literal" 时也是如此。
如果您使用的是快照或 Web 视图,这会比较棘手,并且需要一个脚本来迭代 lsvtree 的输出。
正如我在 ClearCase 中 mentioned before (2015), there is no equivalent to a git log -S or -G
(pickaxe search)。
完成镐搜索(在 Git 中)以指出添加或删除字符串的过去修订。
但是:您需要为 ClearCase 编写等效功能的脚本。
从 cleartool lsvtree
shows you all the version of a given file, you can, starting with the most recent version do a cleartool annotate
开始查看添加该行的时间和版本。
如果该行包含您的字符串,那么此版本将是相关的。
如果最新版本不包含您的字符串,则对之前的版本重复该过程(如果之前的版本包含您的字符串,请执行 cleartool annotate
)。