我在编写脚本的中间,以找到在Clearcase中添加特定代码的罪魁祸首。我正在使用注释命令。cleartool annotate -all -fmt "%Ad %-8.8u %-100.150Vn | " -nheader -force
我正在使用 - 以便可以探索无关的级别(不在同一血统中)。但是我闻到了一个问题。如果我的.c文件中有2行相同的代码,那么选择哪个?因此,要解决此问题,我认为我可以删除所有 - 并在同一下降行中找到特定版本。然后查看任何合并即将到达该特定版本,并在该版本中执行另一个annotate
。
所以我的问题是,如果我目前不在此版本中,我可以这样做吗?
cleartool annotate -all -fmt "%Ad %-8.8u %-100.150Vn | " -nheader -force MEMManager.c@@mainoptimus_2_buildoptimus_r10_integration_branch12
我朝正确的方向吗?还是我可以使用更好的命令来实现此目标?
我真的不能说出最好的方法,我可以在上次不得不处理的时候做什么,"这种变化从何而来?"问题。
我使用注释将VTREE返回。我用-Long(以获取整个代码,因为它的缩进非常缩进)注释了当前版本,并找到了更改的行及其来自位置。然后,我转到该版本并注释它,发现所讨论的行来自另一个版本(该版本已合并到此"中间"版本中)。泡沫,冲洗,根据需要重复。
是的,这很乏味,但是那是一段时间前...出于某种原因,我没有出现 -
" 2个相同的更改"问题可能没有任何操作影响。但这是简单的Hello.c来源中的"相同更改"的样子:
##### 2016-12-05T09:19:55-05:00 Brian main1 | | #include <stdio.h>
##### . | |
##### . | | int main(int argc, char** argv)
##### . | | {
##### 2016-12-05T09:23:38-05:00 Brian maintestbr2 | | // And here
##### 2016-12-05T09:22:10-05:00 Brian main3 | UNRELATED | // And here
##### 2016-12-05T09:19:55-05:00 Brian main1 | | printf("Hello World!n");
##### . | | return 0;
##### 2016-12-05T09:21:31-05:00 Brian main2 | UNRELATED | // I felt like adding this here
##### 2016-12-05T09:21:02-05:00 Brian maintestbr1 | | // I felt like adding this here
##### 2016-12-05T09:19:55-05:00 Brian main1 | | }
"无关"的意思是它确实来自当前的"下降线",并且还告诉您更改也发生在哪里。这可能是因为其中一个版本已合并到多个分支,或者有些是非常多产的打字员。
cleartool注释并未查明(也是)在许多情况下更改代码行的人。只需考虑合并而创建的文件版本。 ClearTool Annotate 将此版本视为更改,但这不是真正的!真正的一个实际上是在另一个流/分支上。此外,可能是这个"真实的"源版本不是真实的版本,而是另一个合并的目的地!这是一种递归。
有一个clearcase实用程序, getRealChange ,它为您提供了给定代码行的真实版本。它很快,支持Windows和Linux。请参阅http://almtoolbox.com/va4vs。