Svn-User

Introduction

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/

Serveur DISI pédagogique

SVN client en ligne de commande

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*

Exemple d'initialisation d'un 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

import initial

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.

visualisation cli

$ 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

répertoire de travail révisé

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.

Usages

travaux locaux sur le projet

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

commit

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

Plugin tortoiseSVN pour l'explorateur Windows

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

tortoiseSVN-menu.jpg

checkout login

Récupération du projet depuis le repository , connexion

 tortoiseSVN-checkout-login.jpg

checkout

tortoiseSVN-checkout.jpg

confirmation du checkout

tortoiseSVN-checkout-done.jpg

Resultat sur les fichiers locaux

tortoiseSVN-fichiers-rev-locaux.jpg

Ajout d'un fichier

tortoiseSVN-commit-add-file.jpg

confirmation

tortoiseSVN-confirm-add-file.jpg

visualisation https

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:

http://svnshare.tem-tsp.eu/viewvc/

Client webDav basique

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 .

connexion

svn-web-dav-login.jpg

visualisation

svn-web-dav-list1.jpg

détails d'un répertoire

svn-web-dav-list2.jpg

Client webDav enrobé

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 .

connexion via CAS !

Apres un authentification CAS on tombe sur la racine des repositories pour un service donné (ici s2ia)

svn-web-dav-svnview1.jpg

Affichage détaillé d'un répertoire

svn-web-dav-svnview2.jpg

Convertion CVS vers SVN

Recup du repo CVS brut

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

Conversion CVS en dump subversion

[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

recuperation du dump sur le vserver subversion

[svn@share /var/tmp]
$ scp procacci@anaconda:~/tmp/cvs2svn/trombintDev.cvs .

trombintDev.cvs                               100%   45MB   9.0MB/s   00:05

importation dans subversion

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

documentation/servnet/svnuser.txt · Dernière modification: 2017/02/03 20:52 par procacci@tem-tsp.eu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0