有什么方法可以将自定义差异工具与cleartool/clearcase一起使用吗?
题
我想在使用 Clearcase 快照视图时使用我自己的差异。
据我所知,运行时无法指定 diff 工具”cleartool diff
“,所以我想我可以运行类似的东西”mydiff <predecessor file> <modified file in my view>
”,但我对 ClearCase 的了解还不够,无法找到要进行比较的“前身文件”。
有办法做到这一点吗?
忘记提及(直到现在,在阅读了处理 Windows 的前两个响应之后)这是在 Unix 上,并且不允许我破坏 ClearCase 配置。
解决方案 5
我得到了另一种方式基于这里的建议工作。我发现了cleartool“获取”的命令,所以我执行此得到以前的版本到一个临时文件:
cleartool GET -to fname.temp FNAME @@前身
然后运行我的差异,并删除该文件。
感谢所有的建议。
其他提示
如何改变默认差异的工具
你可以指定的一个外部差异的工具 修改的文件 地图, 在"c:\program 文件\理性\明确案件\lib\mgrs"
该WinMerge建议由Paul实际上修改该文件。
每个地图线有3部分:CC文件类型,CC行动,并应用程序。
找到的部分在地图文件text_file_delta的文件类型。在那里你会找到线CC行动进行比较,xcompare、合并和xmerge这看起来是这样的:
text_file_delta compare ..\..\bin\cleardiff.exe
text_file_delta xcompare ..\..\bin\cleardiffmrg.exe
text_file_delta merge ..\..\bin\cleardiff.exe
text_file_delta xmerge ..\..\bin\cleardiffmrg.exe
你可以替代他们 可执行的比较工具的选择.
或者,一个简单的差异脚本
如果你想要去完整的命令行在本(这是我喜欢;-)),一个小ccperl可以帮助:
#!/bin/perl
my ($file, $switches) = @ARGV;
$switches ||= '-ubBw';
my ($element, $version, $pred)
= split(/;/,`cleartool describe -fmt '%En;%Vn;%PVn' $file`);
unless ($pred) { die "ctdiff: $file has no predecessor\n"; }
exec "mydiff $switches $element\@\@$pred $file";
警告:扩展的路径(@@\...
)仅可在动态图(M:\...
, 不快照看(c:\...
).
剧本有什么好做的 map
文件介绍以上:
- 该文件界定了'类型的合并经理人.
- 这个脚本可以让你运行任何合并管理任何文件你想要的,没有阅读任何地图文件,以寻找正确的差异exe用于一个特定文件。
在这里,你提供的脚本,这两种信息:该文件(作为一个参数)和比较可执行软件,以运行(在脚本执行情况:替换 mydiff
无论通过什么差异exe你想要)。
或者,改进差异的脚本(工作中的静态/快照的风景太)
这里是一个版本的这个脚本,这适用于快照和动态图。
对照来看,我使用的chacmool的建议: cleartool get
.
再次,你可以替代的 diff
命令包括在这个脚本的工具的选择。
#!/bin/perl
my ($file, $switches) = @ARGV;
$switches ||= '-u';
my ($element, $version, $pred)
= split(/;/,`cleartool describe -fmt '%En;%Vn;%PVn' $file`);
unless ($pred) { die "ctdiff: $file has no predecessor\n"; }
# figure out if view is dynamic or snapshot
my $str1 = `cleartool lsview -long -cview`;
if($? == 0) { dodie("pred.pl must be executed within a clearcase view"); }
my @ary1 = grep(/Global path:/, split(/\n/, $str1));
if($str1 =~ /View attributes: snapshot/sm) { $is_snapshot = 1; }
my $predfile = "$element\@\@$pred";
$predfile =~ s/\'//g;#'
#printf("$predfile\n");
if ($is_snapshot) {
my $predtemp = "c:\\temp\\pred.txt";
unlink($predtemp);
my $cmd = "cleartool get -to $predtemp $predfile"; printf("$cmd\n");
my $str2 = `$cmd`;
$predfile = $predtemp;
}
sub dodie {
my $message = $_[0];
print($message . "\n");
exit 1;
}
exec "diff $switches $predfile $file";
另一种选择是使用 Git+ClearCase (或参见 这 或者 这) 并与 Git 进行比较。
这非常容易设置,而且根据我的经验,同时使用两个 VCS 系统实际上比尝试将 CC 打造成 21 世纪的工具对大脑的伤害要小。
只需将 Git 视为 CC 和 diff 之间的桥梁即可:-)
这似乎已经有人想过这个问题上snip2code!点击 这里一个tcsh的bash脚本,不正是你想要的。
正如你可以看到下面的关键代码来获得一个给定文件的以前版本:
cleartool descr -pred -short $1
其中$1
是文件名进行比较。
#!/bin/tcsh -e
set _CLEARCASE_VIEW = `cleartool pwv -short -setview`
echo Set view: "$_CLEARCASE_VIEW"
set my_firstversion = ""
set my_secondversion = ""
set my_difftool = kdiff3
# check clearcase view
if ( "$_CLEARCASE_VIEW" == "** NONE **" ) then
echo "Error: ClearCase view not set, aborted."
exit -1
endif
if ( "$1" == "" ) then
echo "Error: missing 1st file argument!"
echo "Eg: `basename $0` file1.txt -> This will diff file1.txt with its previous version"
echo "Eg: `basename $0` file1.txt file2.txt -> This will diff file1.txt and file2.txt"
exit -1
endif
set my_firstversion = "$1"
echo "my_firstversion=$my_firstversion"
if ( "$2" == "" ) then
echo "No 2nd file passed, calculating previous version of $my_firstversion"
set my_secondversion = $my_firstversion@@`cleartool descr -pred -short $my_firstversion`
else
echo "Setting 2nd file to $2"
set my_secondversion = "$2"
endif
echo "my_secondversion=$my_secondversion"
${my_difftool} ${my_firstversion} ${my_secondversion} &
Kdiff3 具有内置的集成。打开工具 - 进入设置 - >配置 - >集成并点击按钮“与ClearCase集成”。此工具具有优异的3路差异的支持,处理UTF-8,然后用这个自动化集成您不必担心元素类型等的地图文件。
下面是关于改变的ClearCase XML比较工具链接到IBM文档:
<强>更改XML比较/合并类型管理器强>
http://www-01.ibm.com /support/docview.wss?rs=984&uid=swg21256807
你可以尝试使用 这一招:
创建一个空的文件
% touch empty
检索的版本了
% cleartool diff -ser empty File@@/main/28 > A
检索的版本,B
% cleartool diff -ser empty File@@/main/29 > B
差异和利润!
% your-diff-here A B
把它放在一个脚本,并使该选择更多一点的灵活和有你拥有它。
如果你想你可以很容易地剪断的cleartool差异。一点点 awk
或 cut
或 perl
或者你毒药的选择。
太棒了明确案件!
我已安装“的WinMerge”(自由的比较工具)和它本身安装为在ClearCase比较工具。我不知道它是怎么做的。
的WinMerge作为自动提到检测安装的ClearCase的和修改映射文件在ClearCase安装路径。
我所经历的问题是ClearCase中会打开自己的比较工具,而不是因为安装的WinMerge没有改变所有neccessary线项目。所以这是一个好主意,阅读ClearCase的文件,以便您可以手动修复它,如果需要的话。
对我来说这很好地工作:
%vimdiff my_file.c my_file.c@@/main/LATEST
我通常这样进行。
有关统一差异
cleartool diff -pred <my file>
有关的图形的diff
cleartool diff -pred -g <my file>