2010-01-27 8 views
14

Ho un file nel mio repository Clearcase. L'ho controllato e modificato, quindi lo ho ricontrollato.Come si esegue il rollback di un file archiviato in Clearcase?

Non ho fatto nulla come fare una linea di base, o rebase, o consegnare nel mio stream/view.

Mi rammarico di aver apportato le modifiche a questo file - avrei dovuto annullare il checkout, in retrospettiva.

Come si ripristinano le modifiche? (O annullare, o ripristinare, o qualunque sia la nomenclatura corretta.)

risposta

20

What is described byskwllsp si può essere fatto in un dynamic view attraverso l'utilizzo di extended pathnames

cd m:/myDynamicView/MyVob/path/to/file 
cleartool lsvtree myFile 
cleartool checkout -c "cancel co" myFile 
copy [email protected]@/main/xx myFile 
cleartool checkin -nc myFile 

con xx essendo il numero di versione che si desidera ripristinare.


ma dovrebbe aver effettuato più checkin, tra cui alcuni che si desidera annullare, ClearCase consente di annullare parte delle archiviazioni precedenti attraverso Subtractive Merge
Vedere IBM "to remove contributions of some versions" (e merge man page)

È possibile rimuovere tutte le modifiche da una gamma di versioni contemporaneamente. Ad esempio, il seguente comando rimuove revisioni versioni 14 a 16 sul ramo principale:

  • Sul sistema UNIX o Linux:
cleartool merge -graphical -to opt.c -delete -version /main/14 /main/16 
  • Sul sistema di Windows :
cleartool merge -graphical -to opt.c -delete -version \main\14 \main\16 

È anche possibile rimuovere le modifiche da una versione alla volta. Ad esempio, i seguenti comandi rimuovono solo le modifiche nella versione 14 dalla versione di opt.c controllato la vista corrente:

  • Sul sistema UNIX o Linux:
cleartool merge -graphical -to opt.c -delete -version /main/14 
  • Sui sistemi Windows:
cleartool merge -graphical -to opt.c -delete -version \main\14 

In alternativa, in uno degli esempi precedenti, è possibile omettere l'argomento -version se si utilizza il percorso esteso versione per il selettore versione-contributore.


Infine, l'unica cosa a non fare è un rmver.
Questo comando distrugge irrimediabilmente l'informazione e raramente è una buona cosa.

+0

Quando dici "distrugge informazioni irrimediabilmente", stai solo parlando di informazioni relative all'ultimo check-in (che era comunque errato), giusto? In tal caso, perché dici che raramente è una buona cosa? Dopotutto, il check-in è stato un errore, quindi qual è il danno nel rimuovere l'esistenza di quelle versioni? Per favore condividi le tue conoscenze. –

+2

@ArvindhMani Sto parlando di qualsiasi versione che vorresti 'rmver'. E ciò lascerebbe pendere i collegamenti ipertestuali (o rimuoverli), il che può compromettere l'integrità di altri oggetti (come una linea di base UCM completa). Se la versione più recente non ha collegamenti ipertestuali e non fa riferimento a un altro oggetto, allora sì, 'rmver' è una soluzione. – VonC

+2

@ArvindhMani Il problema è che, mentre potrebbe funzionare nel tuo caso, tutto quello che ricorderai è che "' rmver' funziona "... che porterà a un giorno in cui' rmver' verrà usato incautamente e farà più danno. Questo è il motivo per cui preferisco limitare il suo utilizzo. – VonC

1

Aprire la cronologia delle versioni per questo file, quindi aprire nell'editor una versione corretta del file dall'albero delle versioni, estrarre nuovamente il file, sostituirlo con il contenuto della precedente versione corretta e il check-in. Non dimenticare di confrontare la versione precedente e l'ultima versione.

+1

È questo il meglio che CC può fare? Oy. (Sono nuovo in CC, ho usato svn in esclusiva per i precedenti 5 anni.) – JXG

+0

Non sono sicuro che sia il migliore ma dà un risultato corretto :) –

+2

So che è vecchio, ma sono d'accordo con JXG (anch'io ho usato SVN negli ultimi 6 anni e CVS per anni prima di quello ...) è il miglior CC che può fare? Supponiamo di dover annullare una modifica e alcuni file 30-dispari in molte directory sono interessati. Perché non dovrebbe avere un tipo di comando "Annulla modifiche da questo tipo di controllo"? – Jon

3

Clearcase può fare molto meglio di creare una nuova versione in cui annullare la modifica! Aprire la cronologia delle versioni sul file, trovare la versione erroneamente archiviata e distruggerla (selezionare la versione da distruggere e trovare il comando appropriato nel menu Versioni). Questo è ciò che fa anche rmver, se si desidera utilizzare la riga di comando. Come ha detto VonC, questo distrugge irrimediabilmente il tuo errore. Non vedo un lato negativo a questo.

+4

@Kathy: non vedi uno svantaggio, ma questa è una soluzione molto * molto * cattiva. L'unico che non farai mai. Anche se potrebbe funzionare in questo caso, è meglio impedire agli utenti di ** di fare mai un furbo **. Mai. Perché funziona qui significa che un giorno lo useranno di nuovo in una situazione in cui si romperà ogni genere di cosa. Seriamente: non farlo. – VonC

+0

FWIW, nella mia situazione personale, non ho i permessi per cancellare i file in questo modo. – JXG

Problemi correlati