È un modo per usare un custom diff strumento con cleartool/clearcase?
Domanda
Vorrei usare il mio diff quando si lavora in un clearcase istantanea.
Per quanto posso vedere, non c'è modo di specificare un diff strumento durante l'esecuzione "cleartool diff
", quindi pensavo che si potrebbe eseguire qualcosa di simile "mydiff <predecessor file> <modified file in my view>
"ma io non so abbastanza di ClearCase per essere in grado di trovare il "predecessore file di" diff contro.
Qualche modo per fare questo?
Ho dimenticato di dire che fino a oggi, dopo aver letto le prime due risposte trattare con windows che su Unix, e non mi è permesso di letame con la ClearCase di configurazione.
Soluzione 5
ho ottenuto un altro modo di lavoro sulla base dei suggerimenti qui. Ho scoperto il cleartool "ottengo" di comando, quindi eseguo questo per ottenere la versione precedente di un file temporaneo:
cleartool get -per fname.temp fname @@ predecessore
Quindi eseguire il mio diff, ed eliminare il file.
Grazie per tutti i suggerimenti.
Altri suggerimenti
Come cambiare strumenti di default diff
È possibile specificare uno strumento di diff esterno da modificando il file mappa , in "c: \ programmi \ razionale \ ClearCase \ lib \ MGRS"
Il WinMerge suggerita da Paul modifica in realtà quel file.
Ogni linea mappa ha 3 parti: il tipo di file CC, l'azione CC, e l'applicazione.
Trova la sezione nel map file per i tipi di file text_file_delta. Vi si possono trovare le linee per le azioni CC COMPARE, xcompare, unire e xmerge che assomigliano a questo:
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
Si possono sostituire con la di vostra scelta strumento diff .
Oppure, un semplice script diff
Se si vuole andare completa della riga di comando su questo (che mi piace ;-)), un po 'ccperl può aiutare:
#!/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";
Attenzione: percorso esteso (@@\...
) è accessibile solo in vista dinamico (M:\...
, non Istantanea vista (c:\...
)
Lo script non ha nulla a che fare con la map
file presentate sopra:
- che i file definisce 'Tipo Merge Managers'.
- Questo script consente di eseguire qualsiasi gestore di unione su qualsiasi file che si desidera, senza leggere qualsiasi file di mappa per cercare l'exe diff diritto di utilizzare per un dato file.
Qui, si fornisce allo script entrambe le informazioni: il file (come parametro) e l'exe diff per l'esecuzione (nell'ambito dell'attuazione script: sostituire mydiff
con qualsiasi exe diff che volete)
oppure, migliorato Script Diff (lavori in vista statico / snapshot troppo)
Ecco una versione di questo script che funziona sia per snapshot e visione dinamica.
Per visione istantanea, io uso del chacmool suggerimento: cleartool get
Anche in questo caso, è possibile sostituire il comando diff
inclusi in questo script dallo strumento di tua scelta.
#!/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";
Un'altra opzione è quella di utilizzare Git + ClearCase (o vedere questo o questo ) e appena diff con Git.
Questo è molto facile da configurare e, nella mia esperienza, mi fa male in realtà il cervello meno di utilizzare due sistemi VCS in una sola volta che cercare di battere CC in essere uno strumento del 21 ° secolo.
Basta pensare a Git come un ponte tra CC e diff: -)
Sembra che qualcuno già pensato a questo proposito sul snip2code!
Ecco uno script bash tcsh che fa esattamente quello che vuoi.
Custom-diff-tool- per-ClearCase-oggetto
Come si può vedere il seguente è il codice della chiave per ottenere la versione precedente di un dato file:
cleartool descr -pred -short $1
Dove $1
è il nome del file da confrontare.
#!/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 ha costruito in integrazione. Aprire lo strumento - andare su Impostazioni -> Configura -> Integrazione e fare clic sul 'integrarsi con ClearCase' pulsante. Questo strumento ha un eccellente supporto 3 vie diff, maniglie UTF-8 e con questa integrazione automatizzata non devi preoccuparti di tipi di elementi, ecc nel file di mappa.
Ecco un link per la documentazione di IBM su come cambiare lo strumento diff XML ClearCase:
Modifica del XML Diff / Unisci Type Manager
http://www-01.ibm.com /support/docview.wss?rs=984&uid=swg21256807
Si potrebbe provare a utilizzare questo trucco :
-
Crea un file vuoto
% touch empty
-
Recuperare per la versione A
% cleartool diff -ser empty File@@/main/28 > A
-
Recuperare per la versione B
% cleartool diff -ser empty File@@/main/29 > B
-
Diff e profitto!
% your-diff-here A B
Mettere in uno script e rendere disponibili le opzioni un po 'più flessibile e il gioco è fatto.
Se si vuole si potrebbe facilmente tagliare il CRUD cleartool diff via con un po 'di awk
o cut
o perl
o il vostro veleno della scelta.
Hooray for ClearCase!
ho installato "WinMerge" (uno strumento diff libero) ed esso stesso installato come strumento ClearCase diff. Io non sono sicuro di come ha fatto.
WinMerge come accennato rileva automaticamente l'installazione di ClearCase e modifica i file di mappa in Clearcase percorso di installazione.
Ho sperimentato problemi sono stati ClearCase si aprirà proprio diff strumento, invece, perché il WinMerge installazione non cambiare tutti i necessari elementi di riga.Quindi è una buona idea di leggere la documentazione per ClearCase così si può risolvere il problema manualmente, se necessario.
Per me questo funziona bene:
%vimdiff my_file.c my_file.c@@/main/LATEST
Io di solito procedere in questo modo.
Per un diff unificato
cleartool diff -pred <my file>
Per un diff grafica
cleartool diff -pred -g <my file>