SVN, Subversion, est un outil logiciel permettant de gérer de façon centralisée des dépôts de données. Il est souvent associé à des projets de développement individuels ou en groupe. Il permet une gestion fine des versions et propose plusieurs type d'acces → svn+ssh, file, http, https (DAV) . Cette documentation d'usage s'adresse aux utilisateurs de TSP et TEM souhaitant disposer d'un dépôt .
référence: http://subversion.apache.org/
accessible sur https://fileshare.tem-tsp.eu/
Pour cela nous utilisons le shell avec des commandes du type:
*svn add|delete|log|commit|checkout ... URL https *https://svnserver.domaine.fr/subdir/repository ou optionnelement en svn+ssh si disponible ... *svn+ssh//svn@svnserver.domaine.fr"/subdir/repository*
Afin d'initier un repository , on part d'une arborescence locale a déposer sur le serveur. On prend l'habitude dans le développement logiciel de créer dans un projet les sous répertoires *tags, branches*, et *trunk* (ceci n'a aucun caractère obligatoire !)
[procacci@anaconda ~/svn/src] $ ls -lR .: total 12 drwxr-xr-x 2 procacci mci 4096 3 mars 16:21 Branch drwxr-xr-x 2 procacci mci 4096 3 mars 16:21 Tag drwxr-xr-x 2 procacci mci 4096 3 mars 16:22 Trunk ./Branch: total 0 ./Tag: total 0 ./Trunk: total 4 -rw-r--r-- 1 procacci mci 31 3 mars 16:22 file1.txt
Pour deposer sur le repository (dépot) central notre projet, on fait appel à la commande import en precisant l'URL du repository:
[procacci@anaconda ~/svn/src] $ svn import . https://fileshare.tem-tsp.eu/2017-02-ranc/2017-02-ranc-46/ -m "import initial by jehan" --username staff Domaine d'authentification : <https://fileshare.tem-tsp.eu:443> TSP SVN Stud 2017: Login with user id Mot de passe pour 'staff' : ********** Ajout Branch Ajout Tag Ajout Trunk Ajout Trunk/file1-asr-2015.txt Ajout svn-commit.tmp Transaction de propagation... Révision 1 propagée.
$ svn list https://fileshare.tem-tsp.eu/2017-02-ranc/2017-02-ranc-46/ --username staff Domaine d'authentification : <https://fileshare.tem-tsp.eu:443> TSP SVN Stud 2017: Login with user id Mot de passe pour 'staff' : ********** Branch/ Tag/ Trunk/ svn-commit.tmp
Maintenant nous devons recuperer notre import afin de travailler sur une version révisée de notre projet, on crée donc une arborescence dediée
[procacci@anaconda ~/svn] $ mkdir 2017-02-ranc [procacci@anaconda ~/svn] $ cd 2017-02-ranc/ [procacci@anaconda ~/svn/2017-02-ranc] $ svn checkout https://fileshare.tem-tsp.eu/2017-02-ranc/2017-02-ranc-46/ --username staff Domaine d'authentification : <https://fileshare.tem-tsp.eu:443> TSP SVN Stud 2017: Login with user id Mot de passe pour 'staff' : ********** A 2017-02-ranc-46/Tag A 2017-02-ranc-46/svn-commit.tmp A 2017-02-ranc-46/Branch A 2017-02-ranc-46/Trunk A 2017-02-ranc-46/Trunk/file1-asr-2015.txt Révision 1 extraite.
On peux alors ajouter des fichiers en modifier, en detruire localement
$ vim file2-2017.txt [procacci@anaconda ~/svn/2017-02-ranc/2017-02-ranc-46/Trunk] $ svn status ? file2-2017.txt [procacci@anaconda ~/svn/2017-02-ranc/2017-02-ranc-46/Trunk] $ svn delete file1-asr-2015.txt D file1-asr-2015.txt
Enfin approuver *commit* les modifications en centrale.
[procacci@anaconda ~/svn/2017-02-ranc/2017-02-ranc-46/Trunk] $ svn commit -m "deleted file1 et modif file2" --username staff Domaine d'authentification : <https://fileshare.tem-tsp.eu:443> TSP SVN Stud 2017: Login with user id Mot de passe pour 'staff' : ********** Suppression file1-asr-2015.txt Transaction de propagation... Révision 2 propagée. [procacci@anaconda ~/svn/2017-02-ranc/2017-02-ranc-46/Trunk] $ svn status ? file2-2017.txt [procacci@anaconda ~/svn/2017-02-ranc/2017-02-ranc-46/Trunk] $ svn add file2-2017.txt A file2-2017.txt [procacci@anaconda ~/svn/2017-02-ranc/2017-02-ranc-46/Trunk] $ svn commit -m "deleted file1 et modif file2" --username staff Domaine d'authentification : <https://fileshare.tem-tsp.eu:443> TSP SVN Stud 2017: Login with user id Mot de passe pour 'staff' : ********** Ajout file2-2017.txt Transmission des données .done Transaction de propagation... Révision 3 propagée.
Pour plus de details , voir: http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.tour.cycle
pour la description detaillée et le download, cf http://tortoisesvn.tigris.org/ et http://tortoisesvn.net/downloads
TortoiseSVN est un “plugin” qui ajoute a l'explorateur windows des fonctionnalité de gestion de version SVN
un clique droit sur un répertoire, ou en déroulant le menu fichier fait apparaitre les fonctionnalité SVN
directement depuis un navigateur, sur un repository ouvert a tous (itsp/repo_test_all)
https://svnshare.tem-tsp.eu/itsp/repo_test_all/
visualisation ameliorée
http://svnshare.tem-tsp.eu/viewvc/repo_test_all/
adresse generale de tous les repositories auquel on a acces:
On peux aussi acceder en mode lecture via un navigateur Web . Dans ce cas il suffit de disposer d'un navigateur supportant le protocole DAV (quasi tous maintenant !?) , une authentification via votre compte ldap (login/password de messagerie) est alors demandée .
Ce client apporte quelques éléments d'enrobage au dessus de l'affichage basique évoqué ci-dessus. Nous l'avons volontairement associé a une authentification via notre SSO CAS afin mieux l'integréer dans notre infrastructure Web .
Apres un authentification CAS on tombe sur la racine des repositories pour un service donné (ici s2ia)
Reucperation depuis le vserver cvs , du repository et de *CVSROOT* (global) afin de recuperer les history etc …
[root@cvs /var/cvs] $scp -r trombintDev/ procacci@anaconda:~/tmp/cvs2svn/ [root@cvs /var/cvs] # scp -r CVSROOT/ procacci@anaconda:~/tmp/cvs2svn/ procacci@anaconda's password: cvswrappers 100% 753 0.7KB/s 00:00 val-tags 100% 59 0.1KB/s 00:00 .... .#checkoutlist 100% 493 0.5KB/s 00:00 cvswrappers,v 100% 957 0.9KB/s 00:00 .#config 100% 527 0.5KB/s 00:00 loginfo 100% 1141 1.1KB/s 00:00
[procacci@anaconda ~/tmp/cvs2svn] $cvs2svn -v --dumpfile=trombintDev.cvs --trunk=trombintDev/trunk --branches=trombintDev/branches --tags=trombintDev/tags --eol-from-mime-type --mime-types=./mime.types ./trombintDev/ ----- pass 1 (CollectRevsPass) ----- Examining all CVS ',v' files... trombintDev/trombi_pdf.inc.php,v trombintDev/modifyPassword.php,v PASS1 RESYNC: 'modifyPassword.php' (1.1): old time='Fri Oct 25 11:16:22 2002' delta=-1s trombintDev/indexLdapHost.php,v trombintDev/host-inc-ldap.php,v trombintDev/modify.php,v ... PASS1 RESYNC: 'extraction/openldap.ldif' (1.1): old time='Fri Oct 25 11:16:27 2002' delta=-1s Processed 276 files Done ----- pass 2 (CollateSymbolsPass) ----- Checking for blocked exclusions... Checking for forced tags with commits... Done Deleting ./cvs2svn-symbol-stats.pck ----- pass 3 (ResyncRevsPass) ----- Re-synchronizing CVS revision timestamps... PASS3 RESYNC: 'modifyPassword.php' (1.1): old time='Fri Oct 25 11:16:21 2002' delta=1s ... Deleting ./cvs2svn-resync.txt Deleting ./cvs2svn-cvs-items.pck ----- pass 4 (SortRevsPass) ----- Sorting CVS revisions... Done Deleting ./cvs2svn-revs-resync.txt ----- pass 5 (CreateDatabasesPass) ----- Finding last CVS revisions for all symbolic names... Done ----- pass 6 (AggregateRevsPass) ----- Mapping CVS revisions to Subversion commits... ------------------------------------------------------------ CVS Revision grouping: Start time: Fri Oct 25 11:16:21 2002 End time: Fri Oct 25 11:16:22 2002 (duration: 2 seconds) ... cvs2svn Statistics: ------------------ Total CVS Files: 276 Total CVS Revisions: 719 Total Unique Tags: 3 Total Unique Branches: 2 CVS Repos Size in KB: 43938 Total SVN Commits: 82 First Revision Date: Fri Oct 25 11:16:21 2002 Last Revision Date: Thu Sep 14 09:28:12 2006 ------------------ Timings: ------------------ pass 1: 4 seconds pass 2: 0 seconds pass 3: 0 seconds pass 4: 0 seconds pass 5: 0 seconds pass 6: 0 seconds pass 7: 0 seconds pass 8: 0 seconds pass 9: 11 seconds total: 16 seconds Deleting ./cvs2svn-statistics.pck
[svn@share /var/tmp] $ scp procacci@anaconda:~/tmp/cvs2svn/trombintDev.cvs . trombintDev.cvs 100% 45MB 9.0MB/s 00:05
usage de la commande *svnadmin load* .
[svn@share /var/tmp] $ svnadmin load /svn/s2ia/procacci/ < trombintDev.cvs <<< Started new transaction, based on original revision 1 * adding path : trombintDev ... done. * adding path : trombintDev/trunk ... done. * adding path : trombintDev/branches ... done. * adding path : trombintDev/tags ... done. ------- Committed new rev 4 (loaded from original rev 1) >>> <<< Started new transaction, based on original revision 2 * adding path : trombintDev/trunk/templates ... done. * adding path : trombintDev/trunk/templates/easyExportCSV.html ... done. * adding path : trombintDev/trunk/templates/authForm.html ... done. ... ------- Committed new rev 5 (loaded from original rev 2) >>> <<< Started new transaction, based on original revision 3 * adding path : trombintDev/branches/jehan ...COPIED... done. ... ------- Committed new rev 32 (loaded from original rev 29) >>> <<< Started new transaction, based on original revision 30 * editing path : trombintDev/trunk/trombi_config.inc.php ... done. * editing path : trombintDev/trunk/templates/queryForm.html ... done. ... ------- Committed new rev 55 (loaded from original rev 52) >>> <<< Started new transaction, based on original revision 53 * adding path : trombintDev/tags/trombint-2-0-0 ...COPIED... done. * deleting path : trombintDev/tags/trombint-2-0-0/LICENSE ... done. * adding path : trombintDev/tags/trombint-2-0-0/LICENSE ...COPIED... done. ... ------- Committed new rev 67 (loaded from original rev 64) >>> <<< Started new transaction, based on original revision 65 * editing path : trombintDev/branches/trombint-2-0-0-patches/Changelog.html ... done. ... * adding path : trombintDev/trunk/template_badge/pdf_tmp/badge-PROCACCIA_Jehan.pdf ... done. ------- Committed new rev 85 (loaded from original rev 82) >>>
Création initiale: – Main.JehanProcaccia - 24 Oct 2006