GNU/Linux >> Tutoriels Linux >  >> Linux

Tutoriel Subversion :10 commandes SVN les plus utilisées avec des exemples

SVN signifie Subversion.

Subversion est un système de contrôle de version gratuit/open-source. Subversion gère les fichiers et les répertoires au fil du temps. Une arborescence de fichiers est placée dans un référentiel central. Le référentiel ressemble beaucoup à un serveur de fichiers ordinaire, sauf qu'il se souvient de chaque modification apportée à vos fichiers et répertoires. Cela vous permet de récupérer des versions plus anciennes de votre code ou d'examiner l'historique de la façon dont votre code a été modifié.

Cet article explique certaines commandes SVN de base avec des exemples.

Copie de travail SVN

SVN est un référentiel qui contient toutes nos données versionnées, également appelé serveur SVN. Programme client SVN qui gère les réflexions locales de parties de ces données versionnées appelées copie de travail. Le client SVN peut accéder à son référentiel sur les réseaux. Plusieurs utilisateurs peuvent accéder au référentiel en même temps.

1. SVN Checkout – Créer une copie de travail

La commande Checkout est utilisée pour télécharger les sources du référentiel SVN vers la copie de travail. Si vous souhaitez accéder aux fichiers à partir du serveur SVN, l'extraction est la première opération que vous devez effectuer.

La commande SVN crée la copie de travail, à partir de laquelle vous pouvez modifier, supprimer ou ajouter du contenu. Vous pouvez extraire un fichier, un répertoire, un tronc ou un projet entier. Pour passer à la caisse, vous devez connaître l'URL des composants que vous souhaitez passer à la caisse.

Syntax:

$ svn checkout/co URL PATH
  • URL est l'URL des composants à régler
  • Si PATH est omis, le nom de base de l'URL sera utilisé comme destination. Si plusieurs URL sont données, chacune sera extraite dans un sous-répertoire de PATH, le nom du sous-répertoire étant le nom de base de l'URL.

L'exemple suivant extrait le répertoire vers le répertoire cible donné.

$ 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

Lorsque vous effectuez une vérification, il crée un répertoire caché nommé .svn, qui contiendra les détails du référentiel.

2. SVN Commit - Enregistrer les modifications dans le référentiel

Chaque fois que vous apportez des modifications à la copie de travail, cela ne sera pas reflété dans le serveur SVN. Pour rendre les modifications permanentes, vous devez effectuer un commit SVN.

Syntax:

$ svn commit -m "log messages"

Expliquez pourquoi vous modifiez le fichier dans l'option -m.

Par exemple, dans ma copie de travail, le fichier nommé "svn-commands" a le contenu suivant.

$ 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

J'ai apporté une modification à ce fichier (par exemple, rendre ce fichier vide).

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

Validez maintenant le fichier pour rendre les modifications permanentes sur le serveur.

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

Après cela, chaque fois que vous mettez à jour votre copie de travail ou que vous passez à la caisse, les modifications apparaîtront sur le serveur.

3. Liste SVN – Répertorie les entrées du répertoire

svn list est utile lorsque vous souhaitez afficher le contenu du référentiel SVN, sans télécharger une copie de travail.

Syntax:

$ svn list

L'exemple suivant répertorie tous les fichiers disponibles dans l'URL donnée dans le référentiel sans télécharger une copie de travail. Lorsque vous exécutez la commande svn list avec l'option –verbose, les informations suivantes s'affichent.

  • Numéro de révision du dernier commit
  • Auteur du dernier commit
  • Taille (en octets)
  • Date et heure du dernier 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 - Ajouter un nouveau fichier au référentiel SVN

Lorsque vous souhaitez ajouter un nouveau fichier (ou répertoire) au référentiel, vous devez utiliser la commande SVN add. Le référentiel aura un fichier nouvellement ajouté, uniquement lorsque vous effectuez une validation SVN. Ajoutons maintenant un nouveau fichier appelé "thegeekstuff" à notre référentiel.

  • Créer un fichier en copie de travail locale
  • $ ls -l /home/sasikala/cfg/thegeekstuff
    -rw-r--r--  1 sasikala root 8 Apr 16 11:33 thegeekstuff
  • Ajouter le fichier dans le référentiel SVN
  • svn add filename ajoutera les fichiers dans le référentiel SVN.

    $ svn add thegeekstuff
    A         thegeekstuff
  • Valider le fichier ajouté
  • Tant que vous n'aurez pas validé, le fichier ajouté ne sera pas disponible dans le référentiel.

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

5. SVN Delete - Suppression d'un fichier du référentiel

La commande SVN delete supprime un élément de la copie de travail (ou référentiel). Le fichier sera supprimé du référentiel lorsque vous effectuerez une validation SVN.

Syntax:
$ svn delete URL

Supprimons maintenant le fichier récemment créé appelé "thegeekstuff".

$ svn delete thegeekstuff
D         thegeekstuff

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

Vous pouvez maintenant faire svn list et vérifier si le fichier a été supprimé du référentiel.

6. SVN Diff - Afficher la différence

SVN diff affiche les différences entre votre copie de travail et la copie dans le référentiel SVN. Vous pouvez trouver la différence entre deux révisions et deux chemins etc.,

Syntax:
$ svn diff filename

$ svn -r R1:R2 diff filename

L'exemple ci-dessus compare le nom de fichier@R1 et le nom de fichier@R2.

Maintenant, le contenu du fichier thegeekstuff ressemble à ceci,

$ cat /home/sasikala/cfg/thegeekstuff
testing

J'ai modifié le contenu du fichier geekstuff de testing à tester, qui est illustré ci-dessous à l'aide de la commande svn diff.

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

7. Statut SVN - Statut de la copie de travail

Utilisez la commande svn status pour obtenir l'état du fichier dans la copie de travail. Il affiche si la copie de travail est modifiée, ou si elle a été ajoutée/supprimée, ou si le fichier n'est pas sous contrôle de révision, etc.

Syntax:

$ svn status PATH

L'exemple suivant montre l'état de ma copie de travail locale,

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

« M » indique que l'élément a été modifié. La commande "svn help status" expliquera les différents spécificateurs affichés dans la commande d'état SVN.

8. Journal SVN - Afficher le message du journal

Comme nous en avons discuté au début de cet article, SVN se souvient de chaque modification apportée à vos fichiers et répertoires. Pour connaître tous les commits effectués dans un fichier ou un répertoire, utilisez la commande SVN log.

Syntax:

$ svn log PATH

Ce qui suit affiche tous les commits effectués sur le fichier geekstuff

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

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

Comme nous n'avons fait qu'un seul commit dans le fichier thegeekstuff, il n'affiche qu'un seul message de journal avec les détails.

9. SVN Move – Renommer un fichier ou un répertoire

Cette commande déplace un fichier d'un répertoire à un autre ou renomme un fichier. Le fichier sera immédiatement déplacé sur votre bac à sable local (ainsi que sur le référentiel après validation).

Syntax:
$ svn move src dest

La commande suivante renomme le fichier "thegeekstuff" en "tgs" d'un seul coup.

$ svn move thegeekstuff tgs
A         tgs
D         thegeekstuff

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

Désormais, le fichier est renommé uniquement dans la copie de travail, pas dans le référentiel. Pour rendre les modifications permanentes, vous devez les valider.

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

10. Mise à jour SVN - Mettez à jour la copie de travail.

La commande svn update apporte les modifications du référentiel dans votre copie de travail. Si aucune révision n'est spécifiée, cela met à jour votre copie de travail avec la révision HEAD. Sinon, il synchronise la copie de travail avec la révision donnée en argument.

Toujours avant de commencer à travailler dans votre copie de travail, mettez à jour votre copie de travail. Ainsi, toutes les modifications disponibles dans le référentiel seront disponibles dans votre copie de travail. c'est-à-dire les dernières modifications.

Syntax:

$ svn update PATH

Dans le cas où un autre utilisateur a ajouté / supprimé un fichier dans l'URL, https://www.thegeekstuff.com/project/branches/release/migration/data/cfg, votre copie de travail n'aura pas ces fichiers par défaut, jusqu'à ce que vous mettiez à jour votre travail copier.

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

Dans la sortie de la commande svn update ci-dessus, A indique que ce fichier est "Ajouté" à la copie de travail.


Linux
  1. 10+ commandes Linux VI avec des exemples

  2. Tutoriel sur les commandes d'expansion et de non-expansion avec des exemples

  3. [Linux] :15 commandes YUM les plus fréquemment utilisées avec des exemples

  4. Tutoriel vim avec des exemples de commandes

  5. lsof :Exemples les plus couramment utilisés

Commandes Nmap avec exemples

Commandes RPM sous Linux avec exemples

Commandes SSH sous Linux avec exemples d'utilisation

Tutoriel Youtube-dl avec des exemples pour les débutants

Le didacticiel de commande fc avec des exemples pour les débutants

Tutoriel sur la commande de recherche Linux (avec exemples)