哪些版本修改了特定功能

时间:2015-12-07 12:53:50

标签: bash diff clearcase

我有一个VOB文件,有超过100次提交(或签到)。

在所有这些提交中,有没有办法找出哪些版本(提交)修改了我感兴趣的特定功能?

该文件的版本可以/path/to/file@@main/<version_number>

的形式访问

3 个答案:

答案 0 :(得分:3)

另一种方法是利用虚拟文件系统接口和强力提取信息。假设您有一个脚本只从名为extract_function.sh的整个文件中提取您感兴趣的函数(例如,可能就像sed -n '/^void your_function_name/,/^}/p'一样简单),并假设没有短于4的标签字符,然后您可以运行以下命令

$ cd /path/to/file@@main
$ for i in ? ?? ???; do /some/where/extract_function.sh $i > /some/where/your_function.$i; done
$ cd /some/where
$ md5sum your_function.* | uniq --check-chars=32 \
| awk '{print $2}'

这为您提供了修改您感兴趣的功能的版本的基线。然后,您可以通过运行diff -u your_function.1 your_function.15来比较它们。

VFS界面是我真正喜欢使用它时的清晰度的一件事;很高兴能够在命令行上访问所有版本控制信息。如果您想要关联上面找到的每个版本的签到时间,可以使用ls轻松获得。

$ cd /some/where
$ md5sum your_function.* | uniq --check-chars=32 \
| awk '{print $2}' | cut -d. -f2 > version-numbers
$ cd /path/to/file@@main
$ xargs ls -l < /some/where/version-numbers

然后可以轻松忽略超过x年的版本。

答案 1 :(得分:2)

由于您可以访问版本化文件的extended pathnames,因此您可以在每个版本上使用cleartool diff -pred,从最新版本开始。

可以考虑包含函数行的每个差异。

尽管可以找到cleartool annotate的最新版本。

答案 2 :(得分:1)

我从cleartool注释开始,也许使用Visual Annotate第三方工具(比标准工具稍微钻一点)。

Annotate将告诉您此版本的变更地点。您可能还必须注释所声明的源版本以获取完整的历史记录。

这要求元素类型支持注释,这限制了文本文件类型。