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
svn add filename ajoutera les fichiers dans le référentiel SVN.
$ svn add thegeekstuff A thegeekstuff
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.