ClearCase注释以查找添加特定LOC的罪犯 我正在编写一个脚本来查找在CycCask中添加了特定代码行的罪犯。我正在为此使用annotate命令cleartool注释-全部-fmt”%Ad%-8.8u%-100.150Vn |“-nheader-强制力 我正在使用-all,这样我可以探索到不相关的层次(不在同一条下降线中)。但我觉得有问题。如果我的.c文件中有两行相同的代码,那么选择哪一行? 所以为了解决这个问题,我想我可以把它全部删除,然后在同一条血统线上找到一个特定的版本。然后查看该特定版本的任何合并,并在该版本中执行另一个注释。 所以我的问题是,如果我现在不在这个版本,我可以这样做吗 cleartool annotate -all -fmt "%Ad %-8.8u %-100.150Vn | " -nheader -force MEMManager.c@@\main\optimus_2_build\optimus_r10_integration_branch\12

ClearCase注释以查找添加特定LOC的罪犯 我正在编写一个脚本来查找在CycCask中添加了特定代码行的罪犯。我正在为此使用annotate命令cleartool注释-全部-fmt”%Ad%-8.8u%-100.150Vn |“-nheader-强制力 我正在使用-all,这样我可以探索到不相关的层次(不在同一条下降线中)。但我觉得有问题。如果我的.c文件中有两行相同的代码,那么选择哪一行? 所以为了解决这个问题,我想我可以把它全部删除,然后在同一条血统线上找到一个特定的版本。然后查看该特定版本的任何合并,并在该版本中执行另一个注释。 所以我的问题是,如果我现在不在这个版本,我可以这样做吗 cleartool annotate -all -fmt "%Ad %-8.8u %-100.150Vn | " -nheader -force MEMManager.c@@\main\optimus_2_build\optimus_r10_integration_branch\12,clearcase,annotate,Clearcase,Annotate,我的方向对吗?或者有没有更好的命令可以用来实现这一目标?我真的不能用最好的方式来处理这个问题,我可以用我上次不得不处理的问题“这种变化是从哪里来的?” 我用annotate沿着vtree走了回来。我用-long注释了当前版本(以获取整行代码,因为它缩进得相当厉害),并找到了更改的行及其来源。然后我转到那个版本并对其进行注释,发现有问题的行来自另一个版本(合并到这个“中间”版本)。根据需要,用泡沫、冲洗、重复 是的,很无聊,但那是很久以前的事了。。。由于某种原因,我没有想到使用-all “2个相同

我的方向对吗?或者有没有更好的命令可以用来实现这一目标?

我真的不能用最好的方式来处理这个问题,我可以用我上次不得不处理的问题“这种变化是从哪里来的?”

我用annotate沿着vtree走了回来。我用-long注释了当前版本(以获取整行代码,因为它缩进得相当厉害),并找到了更改的行及其来源。然后我转到那个版本并对其进行注释,发现有问题的行来自另一个版本(合并到这个“中间”版本)。根据需要,用泡沫、冲洗、重复

是的,很无聊,但那是很久以前的事了。。。由于某种原因,我没有想到使用-all

“2个相同的变更”问题可能不会对运营产生任何影响。但下面是在一个简单的hello.c源代码中这些“相同的更改”的样子:

##### 2016-12-05T09:19:55-05:00 Brian    \main\1                  |                         | #include <stdio.h>
#####                             .                               |                         | 
#####                             .                               |                         | int main(int argc, char** argv)
#####                             .                               |                         | {
##### 2016-12-05T09:23:38-05:00 Brian    \main\testbr\2           |                         |         // And here 
##### 2016-12-05T09:22:10-05:00 Brian    \main\3                  | UNRELATED               |         // And here 
##### 2016-12-05T09:19:55-05:00 Brian    \main\1                  |                         |         printf("Hello World!\n");
#####                             .                               |                         |         return 0;
##### 2016-12-05T09:21:31-05:00 Brian    \main\2                  | UNRELATED               |         // I felt like adding this here
##### 2016-12-05T09:21:02-05:00 Brian    \main\testbr\1           |                         |         // I felt like adding this here
##### 2016-12-05T09:19:55-05:00 Brian    \main\1                  |                         | }
######2016-12-05T09:19:55-05:00 Brian\main\1包括
#####                             .                               |                         | 
#####                             .                               |                         | int main(int argc,字符**argv)
#####                             .                               |                         | {
#####2016-12-05T09:23:38-05:00 Brian\main\testbr\2 | |//这里
#####2016-12-05T09:22:10-05:00 Brian\main\3 | unrelative |//这里
#####2016-12-05T09:19:55-05:00 Brian\main\1 | printf(“你好,世界!”);
#####.| |返回0;
#####2016-12-05T09:21:31-05:00 Brian\main\2 | UNRELATED |//我想在这里添加这个
#####2016-12-05T09:21:02-05:00 Brian\main\testbr\1 | |//我想在这里添加这个
#####2016-12-05T09:19:55-05:00布莱恩
“无关”意味着它不来自当前的“血统线”,也告诉你变化也发生在哪里。这可能是因为其中一个版本被合并到多个分支,或者一些版本是一个非常多产的打字员。

cleartool annotate没有指出(太)多情况下更改代码行的人。只需考虑合并后创建的文件版本。ClearToolAnnotate将此版本视为更改,但它不是真正的版本!真正的一个实际上在另一个流/分支上。此外,可能这个“真实”源版本不是真实版本,而是另一个合并的目标!这是一种递归


有一个ClearCase实用程序GetRealChange,它为您提供给定代码行的真实版本。它速度快,支持Windows和Linux。请参阅。

有时,您必须沿着树返回,以找到发生更改的原始版本,但它会帮助您实现更改。Getrealchange和Visual Annotate实际上是cleartool Annotate的前端…Getrealchange实际上是一个独立的应用程序,它比较一个分支与另一个分支的文件内容,以找出给定行的来源。谢谢Alex。事实上,我想要的东西,我可以用在我的脚本。Visual Annotate似乎是面向GUI的。GetRealChange可以用作命令行实用程序,您可以将其嵌入到脚本中: