GNU/Linux >> Linux Esercitazione >  >> Linux

Tutorial Subversion:10 comandi SVN più utilizzati con esempi

SVN sta per Subversion.

Subversion è un sistema di controllo della versione gratuito/open source. Subversion gestisce file e directory nel tempo. Un albero di file viene inserito in un repository centrale. Il repository è molto simile a un normale file server, tranne per il fatto che ricorda ogni modifica apportata ai tuoi file e directory. Ciò ti consente di recuperare versioni precedenti del codice o di esaminare la cronologia di come è stato modificato il codice.

Questo articolo spiega alcuni comandi SVN di base con esempi.

Copia di lavoro SVN

SVN è un repository che contiene tutti i nostri dati con versione, chiamato anche server SVN. Programma client SVN che gestisce le riflessioni locali di porzioni di dati con versione che vengono chiamati come copia di lavoro. Il client SVN può accedere al proprio repository attraverso le reti. Più utenti possono accedere al repository contemporaneamente.

1. SVN Checkout:crea una copia di lavoro

Il comando Checkout viene utilizzato per scaricare i sorgenti dal repository SVN alla copia di lavoro. Se desideri accedere ai file dal server SVN, il checkout è la prima operazione da eseguire.

SVN checkout crea la copia di lavoro, da cui puoi modificare, eliminare o aggiungere contenuti. Puoi estrarre un file, una directory, un tronco o un intero progetto. Per effettuare il pagamento dovresti conoscere l'URL dei componenti che desideri effettuare.

Syntax:

$ svn checkout/co URL PATH
  • URL è l'URL dei componenti per il pagamento
  • Se PATH viene omesso, il nome di base dell'URL verrà utilizzato come destinazione. Se vengono forniti più URL, ciascuno verrà estratto in una sottodirectory di PATH, con il nome della sottodirectory come nome di base dell'URL.

L'esempio seguente estrae la directory nella directory di destinazione specificata.

$ svn co https://www.thegeekstuff.com/project/branches/release/migration/data/cfg /home/sasikala/cfg/
A    /home/sasikala/cfg/ftp_user.cfg
A    /home/sasikala/cfg/inventory.cfg
A    /home/sasikala/cfg/email_user.cfg
A    /home/sasikala/cfg/svn-commands
Checked out revision 811.

$ ls /home/sasikala/cfg
.  ..  .svn  email_user.cfg  ftp_user.cfg  inventory.cfg  svn-commands

Quando esegui un checkout, crea una directory nascosta denominata .svn, che conterrà i dettagli del repository.

2. SVN Commit:salva le modifiche nel repository

Ogni volta che apporti modifiche alla copia di lavoro, non si rifletterà nel server SVN. Per rendere permanenti le modifiche, devi eseguire il commit SVN.

Syntax:

$ svn commit -m "log messages"

Spiega perché stai modificando il file nell'opzione -m.

Ad esempio, nella mia copia di lavoro, il file denominato "svn-commands" ha il seguente contenuto.

$ cat /home/sasikala/cfg/svn-commands
checkout
commit
add
delete
update
status

$ ls -l /home/sasikala/cfg/svn-commands
-rw-r--r--  1 root root 41 Apr 16 11:15 svn-commands

Ho apportato una modifica a questo file (ad esempio, rendendo questo file vuoto).

$ ls -l svn-commands
-rw-r--r--  1 root root 0 Apr 16 11:20 svn-commands

Ora salva il file per rendere permanenti le modifiche nel server.

$ svn commit -m "Making the file empty" svn-commands
Sending        svn-commands
Transmitting file data .
Committed revision 813.

Dopodiché, ogni volta che aggiorni la tua copia di lavoro o il checkout, le modifiche appariranno nel server.

3. Elenco SVN:elenca le voci della directory

svn list è utile quando si desidera visualizzare il contenuto del repository SVN, senza scaricare una copia di lavoro.

Syntax:

$ svn list

L'esempio seguente elenca tutti i file disponibili nell'URL specificato nel repository senza scaricare una copia di lavoro. Quando esegui il comando svn list con l'opzione –verbose, vengono visualizzate le seguenti informazioni.

  • Numero di revisione dell'ultimo commit
  • Autore dell'ultimo commit
  • Dimensione (in byte)
  • Data e ora dell'ultimo commit
$ svn list --verbose https://www.thegeekstuff.com/project/branches/release/migration/data/bin
 16 sasikala	28361 	Apr 16 21:11 README.txt
 21 sasikala 	0 	Apr 18 12:22 INSTALL
 22 sasikala		Apr 18 10:17 src/

4. SVN Add – Aggiungi un nuovo file al repository SVN

Quando si desidera aggiungere un nuovo file (o directory) al repository è necessario utilizzare il comando SVN add. Il repository avrà il file appena aggiunto, solo quando esegui il commit SVN. Ora aggiungiamo un nuovo file chiamato "thegeekstuff" al nostro repository.

  • Crea un file nella copia di lavoro locale
  • $ ls -l /home/sasikala/cfg/thegeekstuff
    -rw-r--r--  1 sasikala root 8 Apr 16 11:33 thegeekstuff
  • Aggiungi il file al repository SVN
  • svn add filename aggiungerà i file al repository SVN.

    $ svn add thegeekstuff
    A         thegeekstuff
  • Conferma il file aggiunto
  • Finché non esegui il commit, il file aggiunto non sarà disponibile nel repository.

    $ svn commit -m "Adding a file thegeekstuff" thegeekstuff
    Adding         thegeekstuff
    Transmitting file data .
    Committed revision 814.

5. Elimina SVN – Rimozione di un file dal repository

Il comando SVN delete elimina un elemento dalla copia di lavoro (o dal repository). Il file verrà eliminato dal repository quando esegui un commit SVN.

Syntax:
$ svn delete URL

Ora rimuoviamo il file creato di recente chiamato "thegeekstuff".

$ svn delete thegeekstuff
D         thegeekstuff

$ svn commit -m "Removing thegeekstuff file" thegeekstuff
Deleting       thegeekstuff
Committed revision 814.

Ora puoi fare svn list e controllare se il file è stato eliminato dal repository.

6. SVN Diff – Visualizza la differenza

SVN diff mostra le differenze tra la tua copia di lavoro e la copia nel repository SVN. Puoi trovare la differenza tra due revisioni e due percorsi ecc.

Syntax:
$ svn diff filename

$ svn -r R1:R2 diff filename

L'esempio precedente confronta il nomefile@R1 e il nomefile@R2.

Ora il contenuto del file thegeekstuff appare così,

$ cat /home/sasikala/cfg/thegeekstuff
testing

Ho modificato il contenuto del file geekstuff da testing a tester, che è mostrato di seguito usando il comando svn diff.

$ svn diff thegeekstuff
Index: thegeekstuff
===================================================================
--- thegeekstuff   (revision 815)
+++ thegeekstuff   (working copy)
@@ -1 +1 @@
-testing
+tester

7. Stato SVN – Stato della copia di lavoro

Utilizzare il comando svn status per ottenere lo stato del file nella copia di lavoro. Mostra se la copia di lavoro è stata modificata, è stata aggiunta/cancellata, o il file non è sotto controllo di revisione, ecc.

Syntax:

$ svn status PATH

L'esempio seguente mostra lo stato della mia copia di lavoro locale,

$ svn status /home/sasikala/cfg
M    	/home/sasikala/cfg/ftp_user.cfg
M      	/home/sasikala/cfg/geekstuff

'M' indica che l'articolo è stato modificato. Il comando "svn help status" spiegherà vari specificatori mostrati nel comando SVN status.

8. Registro SVN:visualizza il messaggio di registro

Come discusso all'inizio di questo articolo, SVN ricorda ogni modifica apportata ai file e alle directory. Per conoscere tutti i commit effettuati in un file o in una directory, usa il comando SVN log.

Syntax:

$ svn log PATH

Di seguito vengono visualizzati tutti i commit effettuati sul file geekstuff

$ svn log thegeekstuff
------------------------------------------------------------------------
r815 | sasikala | 2011-04-16 05:14:18 -0700 (Sat, 16 Apr 2011) | 1 line

Adding a file thegeekstuff
------------------------------------------------------------------------

Dal momento che abbiamo eseguito un solo commit nel file thegeekstuff, mostra solo un messaggio di registro con i dettagli.

9. SVN Move – Rinomina file o directory

Questo comando sposta un file da una directory all'altra o rinomina un file. Il file verrà spostato immediatamente nella sandbox locale (così come nel repository dopo il commit).

Syntax:
$ svn move src dest

Il comando seguente rinomina il file "thegeekstuff" in "tgs" in un solo tratto.

$ svn move thegeekstuff tgs
A         tgs
D         thegeekstuff

$ ls
.#  ..  .svn  email_user.cfg  ftp_user.cfg  inventory.cfg  tgs

Ora il file viene rinominato solo nella copia di lavoro, non nel repository. Per rendere permanenti le modifiche, devi salvarle.

$ svn commit -m "Renaming thegeekstuff to tgs" tgs
Adding         tgs
Transmitting file data .
Committed revision 816.

10. Aggiornamento SVN:aggiorna la copia di lavoro.

Il comando svn update porta le modifiche dal repository alla tua copia di lavoro. Se non viene specificata alcuna revisione, la tua copia di lavoro viene aggiornata con la revisione HEAD. In caso contrario, sincronizza la copia di lavoro con la revisione fornita nell'argomento.

Sempre prima di iniziare a lavorare sulla tua copia di lavoro, aggiorna la tua copia di lavoro. In modo che tutte le modifiche disponibili nel repository siano disponibili nella tua copia di lavoro. ovvero le ultime modifiche.

Syntax:

$ svn update PATH

Nel caso in cui qualche altro utente abbia aggiunto/eliminato file nell'URL, https://www.thegeekstuff.com/project/branches/release/migration/data/cfg, la tua copia di lavoro non avrà quei file per impostazione predefinita, finché non aggiorni il tuo lavoro copia.

$ svn update
A  new/usercfg
A  new/webcfg
Updated to revision 819.

Nell'output del comando svn update sopra, A rappresenta che questo file è "Aggiunto" alla copia di lavoro.


Linux
  1. Oltre 10 comandi VI Linux con esempi

  2. Esercitazione sui comandi di espansione e annullamento con esempi

  3. [Linux]:15 comandi YUM più utilizzati con esempi

  4. Tutorial vim con esempi di comandi

  5. Il tutorial Ultimate Bash Array con 15 esempi

Comandi Nmap con esempi

Comandi RPM in Linux con esempi

Comandi SSH in Linux con esempi di utilizzo

Tutorial Youtube-dl con esempi per principianti

Il tutorial del comando fc con esempi per principianti

Tutorial comando trova Linux (con esempi)