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
我的方向对吗?或者有没有更好的命令可以用来实现这一目标?我真的不能用最好的方式来处理这个问题,我可以用我上次不得不处理的问题“这种变化是从哪里来的?” 我用annotate沿着vtree走了回来。我用-long注释了当前版本(以获取整行代码,因为它缩进得相当厉害),并找到了更改的行及其来源。然后我转到那个版本并对其进行注释,发现有问题的行来自另一个版本(合并到这个“中间”版本)。根据需要,用泡沫、冲洗、重复 是的,很无聊,但那是很久以前的事了。。。由于某种原因,我没有想到使用-all “2个相同的变更”问题可能不会对运营产生任何影响。但下面是在一个简单的hello.c源代码中这些“相同的更改”的样子: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个相同
##### 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可以用作命令行实用程序,您可以将其嵌入到脚本中: