我有一个VOB文件,有超过100次提交(或签到)。
在所有这些提交中,有没有办法找出哪些版本(提交)修改了我感兴趣的特定功能?
该文件的版本可以/path/to/file@@main/<version_number>
答案 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将告诉您此版本的变更地点。您可能还必须注释所声明的源版本以获取完整的历史记录。
这要求元素类型支持注释,这限制了文本文件类型。