Altri comandi utili

While not as frequently used as the commands previously discussed in this chapter, you will occasionally need these commands.

Anche se non frequentemente, come i comandi visti finora in questo capitolo, occasionalmete si può aver bisogno di questi comandi.

svn cleanup

When Subversion modifies your working copy (or any information within .svn), it tries to do so as safely as possible. Before changing the working copy, Subversion writes its intentions to a log file. Next it executes the commands in the log file to apply the requested change, holding a lock on the relevant part of the working copy while it works — to prevent othe Subversion clients from accessing the working copy in mid-change. Finally, Subversion removes the log file. Architecturally, this is similar to a journaled filesystem. If a Subversion operation is interrupted (if the process is killed, or if the machine crashes, for example), the log files remain on disk. By re-executing the log files, Subversion can complete the previously started operation, and your working copy can get itself back into a consistent state.

Quando Subversion modifica la propria copia di lavoro (o qualsiasi informazione all'intreno di .svn), cerca di farlo nel modo più sicuro possibile. Prima di modificare la copia di lavoro, Subversion scrive le sue intenzioni in un file di log. Dopo esegue i comandi nel file di log per applicare le modifiche richieste, mettendo un blocco sulla parte importante della copia di lavoro mentre è in funzione — per impedire ad altri client Subversion l'accesso alla copia di lavoro durante la modifica. Infine, Subversion rimuove il file log. Architetturalmente, è simile ad un filesystem con journaling. Se un'operazione di Subversion viene interrotta (per esmpio, se il processo viene terminato, o se la macchina va incrash), i files di log restano sul disco. Rieseguendo i file di log Subversion può completare le operazioni iniziate prima, e la copia di lavoro può tornare in un stato consistente.

And this is exactly what svn cleanup does: it searches your working copy and runs any leftover logs, removing working copy locks in the process. If Subversion ever tells you that some part of your working copy is locked, then this is the command that you should run. Also, svn status will display an L next to locked items:

E questo è esattamente quello che fa il comando svn cleanup: cerca la copia di lavoro e esegue tutti i log rimasti in sospeso, rimuovendo i blocchi alla copia di lavoro nel processo. Se Subversion comunica che alcune parti della copia di lavoro sono «bloccate», allora questo è il comando da eseguire. Inoltre, il comando svn status visualizzerà una L vicino agli oggetti bloccati:

$ svn status
  L    somedir
M      somedir/foo.c

$ svn cleanup
$ svn status
M      somedir/foo.c

Don't confuse these working copy locks with the ordinary locks that Subversion users create when using the lock-modify-unlock model of concurrent version control; see Three meanings of «lock» for clarification.

Non si confondano questi blocchi alla copia di lavoro con i blocchi ordinari che gli utenti di Subversion creano quando usano il modello di controllo di versione concorrente «blocco-modifica-sblocco»; si veda Three meanings of «lock» per chiarimenti.

svn import

The svn import command is a quick way to copy an unversioned tree of files into a repository, creating intermediate directories as necessary.

Il comando svn import è un modo veloce per copiare un albero di file non sotto il controllo di versione in un repository, creando se necessario directory intermedie.

$ svnadmin create /usr/local/svn/newrepos
$ svn import mytree file:///usr/local/svn/newrepos/some/project \
             -m "Initial import"
Adding         mytree/foo.c
Adding         mytree/bar.c
Adding         mytree/subdir
Adding         mytree/subdir/quux.h

Committed revision 1.

The previous example copied the contents of directory mytree under the directory some/project in the repository:

Il precedente esempio ha copiato il contenuto della directory mytree sotto la directory some/project nel repository:

$ svn list file:///usr/local/svn/newrepos/some/project
bar.c
foo.c
subdir/

Note that after the import is finished, the original tree is not converted into a working copy. To start working, you still need to svn checkout a fresh working copy of the tree.

Si noti che una volta finita l'importazione, l'albero originale non è convertito in una copia di lavoro. Per cominciare a lavorare, bisogna usare il comandosvn checkout per avere una copia di lavoro dell'albero.