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