Jede Art und Weise ein benutzerdefiniertes Diff-Tool mit Cleartool / Clearcase zu benutzen?

StackOverflow https://stackoverflow.com/questions/375398

  •  22-08-2019
  •  | 
  •  

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.

War es hilfreich?

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 mapfile 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 :

  1. Erstellen Sie eine leere Datei

    % touch empty

  2. Abrufen für Version A

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

  3. Abrufen für Version B

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

  4. 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>

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top