我想在使用 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脚本,不正是你想要的。

定制的Diff-工具 - 换clearcase的对象

正如你可以看到下面的关键代码来获得一个给定文件的以前版本:

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

你可以尝试使用 这一招:

  1. 创建一个空的文件

    % touch empty

  2. 检索的版本了

    % cleartool diff -ser empty File@@/main/28 > A

  3. 检索的版本,B

    % cleartool diff -ser empty File@@/main/29 > B

  4. 差异和利润!

    % your-diff-here A B

把它放在一个脚本,并使该选择更多一点的灵活和有你拥有它。

如果你想你可以很容易地剪断的cleartool差异。一点点 awkcutperl 或者你毒药的选择。

太棒了明确案件!

我已安装“的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>

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top