2011-01-08 12 views
12

Ho una vista ClearCase con una cartella e due file. Controllo la cartella, rimuovo un file e ricontrollo la cartella. Sono rimasto con una cartella e un file. C'è un modo per riavere il mio file? Sto usando la suite di strumenti standard di Windows, che include cleartool.Annulla rimuovi file in ClearCase

+0

[Come ripristinare un elemento che è stato rmnamed] (http://www-01.ibm.com/support/docview.wss?uid=swg21149206) – KyleMit

risposta

21

Sì, è possibile recuperare il file. Questa è una caratteristica importante di ClearCase (e un risparmiatore di vita occasionalmente).

Supponiamo che la vostra directory sia /vobs/somevob/somedir. La versione della directory con due file al suo interno era /main/3; la versione con un file era quindi /main/4. Il file rilasciato è /vobs/somevob/somedir/crucial. Assumendo ct è un alias per cleartool, poi fai:

cd /vobs/somevob/somedir 
ct co -c 'Recover file crucial' . 
ct ln [email protected]@/main/3/crucial . 
ct ci -nc . 

La prima linea significa che non c'è bisogno di digitare il percorso della directory negli altri tre comandi; in caso contrario, è facoltativo. La seconda riga controlla la directory in modo che possa essere modificata. L'ultima riga controlla nella directory modificata. La terza linea è dove si verifica la magia ...

La linea ct ln [email protected]@/main/3/crucial . identifica il file crucial che è stato visto nella versione /main/3 della directory . e lo collega alla directory corrente (la versione verificata fuori della directory). La versione del file che vedi sarà quella scelta dal tuo cspec, ma il file corretto è nella vista (presumendo che tu in effetti raccolga /vobs/somevob/[email protected]@/main/5 con il tuo cspec).

(Si noti che non si è limitati a eseguire il collegamento una versione indietro, è possibile ripristinare un file dopo 10 anni e 20 versioni, se necessario. Anche se è possibile collegare un file a due directory in una volta, cioè altamente sconsigliato; utilizzare un collegamento simbolico al posto si potrebbe recuperare un file cancellato in una directory diversa dalla sua ultima posizione nota)

+1

Sei - letteralmente - un risparmiatore di vita, grazie! – Jono

+0

Ho appena usato questo e funziona stranamente. Grazie! – ahoka

8

per aggiungere alla risposta di Jonathan:

  • si può fare ogni passo che descrive in.. un modo grafico, tramite l'albero versione della directory superiore: unione dal versione che rimanda ancora il tuo file alla versione della versione corrente (che non fa più riferimento al tuo file).
    Unire "graficamente" (selezionare l'opzione "unione grafica")
    È quindi possibile selezionare il file che si desidera ripristinare.

  • si può anche rimuovere l'effetto del tuo ultimo check-in (ancora per la directory padre) attraverso una merge -delete:

Attenzione: Se è stato fatto più di una modifica alla directory in questa versione, anche queste modifiche potrebbero essere ripristinate. Utilizzare il comando cleartool lshistory per determinare quali altre modifiche sono state apportate a quella versione di directory.

  1. Determinare la versione in cui l'elemento era rmnamed.
  2. Utilizzare cleartool merge -delete per rimuovere le modifiche applicate in quella versione della directory.

    Ad esempio:

    cleartool merge -to . -delete -version \main\17 
    
  3. Se l'unica modifica apportata in questa versione è stata la rimozione dell'elemento desiderato, il cambiamento dovrebbe automaticamente essere effettuata (vedi circa cautela).

0

da aggiungere alle precedenti osservazioni, vorrei suggerire che invece di "rimuovere" gli elementi da ClearCase, semplicemente rmname. In questo modo non rimuovi i file ma li nascondi. È possibile utilizzare nuovamente il comando rmname per recuperare (mostrare) i file in futuro.

+1

Il comando 'ct rm' è un'abbreviazione di' ct rmname'. Se l'operazione che ha cancellato il file era stata 'ct rmelem', il ripristino non sarebbe stato possibile usando il meccanismo delineato. Non usare 'ct rmelem' se non con estrema forza. –