Jede Art und Weise ein benutzerdefiniertes Diff-Tool mit Cleartool / Clearcase zu benutzen?
Frage
Ich mag meine eigene diff verwenden, wenn in einer Clearcase Snapshot-Ansicht arbeiten.
Soweit ich sehen kann, gibt es keine Möglichkeit, ein Diff-Tool angeben, wenn „cleartool diff
“ ausgeführt, so dass ich dachte, dass ich so etwas wie „mydiff <predecessor file> <modified file in my view>
“ laufen konnte, aber ich weiß nicht genug über Clearcase der Lage sein, die „Vorgänger-Datei“ zu finden, um diff gegen.
Jede Art und Weise, dies zu tun?
vergessen zu erwähnen (bis jetzt, nachdem die ersten beiden Antworten zu lesen mit Fenstern zu tun), dass dies auf Unix ist, und ich bin nicht mit der Clear Konfiguration Dreck erlaubt.
Lösung 5
habe ich einen anderen Weg hier auf den Vorschlägen arbeiten basiert. Ich entdeckte die Cleartool „get“ -Befehl, so führe ich diese die vorherige Version auf eine temporäre Datei zu erhalten:
Cleartool get -bis fname.temp fname @@ Vorgänger
Dann ist mein diff laufen, und diese Datei löschen.
Vielen Dank für alle Vorschläge.
Andere Tipps
Wie Standard-Diff-Tools ändern
Sie können ein externes Diff-Tool angeben, indem Sie Ändern der Datei Karte , in "c: \ Programme \ rational \ Clearcase \ lib \ mgrs"
Der von Paul vorgeschlagen WinMerge ändert tatsächlich die Datei.
Jede Karte Linie besteht aus 3 Teilen: der CC Datei des Typs, die CC-Aktion und die Anwendung.
Suchen Sie den Abschnitt in der Map-Datei für text_file_delta Dateitypen. Dort finden Sie Linien für CC Aktionen finden vergleichen, xcompare, fusionieren, und xmerge, die wie folgt aussehen:
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
Sie können sie durch die ausführbare Datei Ihrer Wahl Diff-Tool .
Oder ein einfaches diff Skript
Wenn Sie die volle Befehlszeile auf diese gehen wollen (was Ich mag ;-)), ein wenig ccperl kann helfen:
#!/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";
Achtung: erweiterte Pfadname (@@\...
) ist nur in der dynamischen Ansicht (M:\...
, nicht Snapshot-Ansicht (c:\...
)
Das Skript hat nichts mit den map
file oben dargestellten zu tun:
- , die Datei definiert den Begriff 'Type Manager Merge'.
- Dieses Skript können Sie einen beliebigen merge-Manager auf jeder Datei, die Sie ausführen möchten, ohne jede Map-Datei für die richtige diff exe für eine bestimmte Datei zu verwenden, um aussehen zu lesen.
Hier stellen Sie das Skript beiden Informationen: die Datei (als Parameter) und die diff exe ausführen (im Skript Umsetzung: ersetzen mydiff
durch was auch immer diff exe Sie mögen)
Oder verbessert diff Skript (Arbeiten in statischen / snapshot Ansichten zu)
Hier ist eine Version dieses Skripts, das sowohl für Snapshot- und dynamische Sicht funktioniert.
Für Snapshot-Ansicht, verwende ich den Vorschlag des chacmool: cleartool get
Auch hier können Sie den Befehl diff
in diesem Skript durch das Werkzeug Ihrer Wahl enthalten ersetzen.
#!/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";
Eine weitere Option ist Git + Clearcase (oder finden Sie unter dieses oder diese ) und nur diff mit Git.
Dies ist bemerkenswert einfach einzurichten und nach meiner Erfahrung, es tut weh tatsächlich Ihr Gehirn weniger auf einmal zwei VCS-Systeme zu verwenden, als zu versuchen, CC zu schlagen in einem 21.es Jahrhundert Werkzeug zu sein.
Man denke nur an Git als Brücke zwischen CC und diff: -)
Es scheint schon jemand darüber nachgedacht, es auf snip2code!
Hier ist ein Tcsh Bash-Skript, das tut genau das, was Sie wollen.
Gewohnheit-diff-Tool- für-Clearcase-Objekt
Wie Sie das folgende ist der Schlüsselcode sehen Sie die vorherige Version einer bestimmten Datei zu erhalten:
cleartool descr -pred -short $1
Wo $1
ist der Dateiname zu vergleichen.
#!/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 hat bei der Integration aufgebaut. Öffnen Sie das Werkzeug - gehen Sie zu Einstellungen -> -> Integration und klicken Sie auf die ‚Integration mit Clearcase‘ -Taste. Dieses Tool ausgezeichnete 3-Wege-diff Unterstützung hat, behandelt UTF-8 und mit dieser automatisierten Integration Sie müssen keine Sorgen über Elementtypen usw. in der Map-Datei.
Hier ist ein Link zu der IBM-Dokumentation auf das Clear XML Diff-Tool zu ändern:
Ändern der XML-Diff / Merge Type Manager
http://www-01.ibm.com /support/docview.wss?rs=984&uid=swg21256807
Sie könnten versuchen, mit dieser Trick :
-
Erstellen Sie eine leere Datei
% touch empty
-
Abrufen für Version A
% cleartool diff -ser empty File@@/main/28 > A
-
Abrufen für Version B
% cleartool diff -ser empty File@@/main/29 > B
-
Diff & Gewinn!
% your-diff-here A B
Legen Sie es in einem Skript und die Optionen machen etwas flexibler und dort haben Sie es.
Wenn Sie möchten, dass Sie leicht die Cleartool diff crud off mit einem kleinen awk
oder cut
oder perl
oder Ihr Gift der Wahl schnippeln kann.
Hooray für Clearcase!
ich installiert „WinMerge“ (ein kostenloses Diff-Tool), und es installiert sich als Clearcase Diff-Tool. Ich bin mir nicht sicher, wie es das getan hat.
WinMerge als automatisch installiert von Clear erwähnt erkennt und ändert die Map-Datei in dem Pfad Clearcase installieren.
Ich habe erlebt, Probleme waren Clearcase werden stattdessen sein eigenes Diff-Tool öffnen, da die WinMerge Installation nicht alle notwendigen Positionen geändert hat. So ist es eine gute Idee, die Dokumentation für Clearcase zu lesen, so kann man es beheben manuell wenn es sein muss.
Für mich funktioniert gut:
%vimdiff my_file.c my_file.c@@/main/LATEST
ich in der Regel wie folgt vorgehen.
Für einen Standard-Diff
cleartool diff -pred <my file>
Für einen grafischen Vergleich
cleartool diff -pred -g <my file>