Outils pour utilisateurs

Outils du site


environnement_prog_svn

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
environnement_prog_svn [2007/05/23 09:44] thierryenvironnement_prog_svn [2008/12/24 09:46] (Version actuelle) thierry
Ligne 3: Ligne 3:
 Un concurrent de CVS Un concurrent de CVS
  
 +Lien:
 +  http://artis.imag.fr/~Xavier.Decoret/resources/svn/index.html
 Liens: Liens:
  
-[[http://ericreboisson.developpez.com/tutoriels/install-subversion/|subversion pour windows et aide]] +[[http://ericreboisson.developpez.com/tutoriels/install-subversion/|subversion pour windows et aide]]\\ 
-[[http://svnbook.red-bean.com/nightly/en/svn.intro.quickstart.html|Quick Start(en)]] +[[http://svnbook.red-bean.com/nightly/en/svn.intro.quickstart.html|Quick Start(en)]]\\ 
-[[http://www.linux-gull.ch/gull/cours/archives/svn/svn-course.pdf|Cours svn (trés complet)]] +[[http://www.linux-gull.ch/gull/cours/archives/svn/svn-course.pdf|Cours svn (trés complet)]]\\ 
-[[http://svnbook.red-bean.com/en/1.1/ch05s03.html|Chapter 5. Repository Administration]]+[[http://svnbook.red-bean.com/en/1.1/ch05s03.html|Chapter 5. Repository Administration]]\\
  
    # apt-get update    # apt-get update
Ligne 45: Ligne 47:
   # adduser svn --system --disabled-login --no-create-home --group   # adduser svn --system --disabled-login --no-create-home --group
 On l'utilisera par la suite, car il sera le seul autorisé a manipuler directement les repository On l'utilisera par la suite, car il sera le seul autorisé a manipuler directement les repository
 +
  
 ==== Installer le daemon "svnserve" ==== ==== Installer le daemon "svnserve" ====
 +(C'est beaucoup plus cool avec ''inetd''... voir plus loin)\\
 +
 D'abord preparer un repertoire pour recevoir le PID (generer par le user ''svn''). D'abord preparer un repertoire pour recevoir le PID (generer par le user ''svn'').
   # mkdir /var/run/svn   # mkdir /var/run/svn
Ligne 105: Ligne 110:
 Faire en sorte que ça fonctionne au reboot. Faire en sorte que ça fonctionne au reboot.
   # update-rc.d svnserve-daemon defaults   # update-rc.d svnserve-daemon defaults
 +
 +
  
 ==== Creer un "repository" ==== ==== Creer un "repository" ====
 +=== create ===
 +
 +== methode 1 ==
 +  $ su
 +  # su -s /bin/bash -c "svnadmin create /svn/dev/myproject" svn
 +
 +== methode 2 ==
 +  $ su
   # svnadmin create /svn/dev/myproject   # svnadmin create /svn/dev/myproject
 Cela doit appartenir au user ''svn''. Cela doit appartenir au user ''svn''.
   # chown -R svn:svn /svn/dev/myproject   # chown -R svn:svn /svn/dev/myproject
  
 +=== password ===
  
-==== Creer un repertoire-projet (ou un repertoire pour des projets ?====+A ce stade, si le daemon tourne, la terre entière qui passe par le port TCP (3690) peut modifier le projet!\\ 
 +Mettre des restrictions: 
 +  # cd /svn/dev/myproject/conf 
 +  # vi passwd 
 +  ... 
 +  [users] 
 +  thierry mot_de_passe 
 +  ... 
 +Editer aussi ... 
 +  # vi svnserve.conf 
 +  ... 
 +  [general] 
 +  anon-access none 
 +  auth-access write 
 +  ... 
 +  password-db passwd 
 +Et voila un repository protégé... mais je crois que les mots de passe voyagent en clair (à vérifier
  
-Ici, le repertoire-projet est **test1**. (ces notions sont aussi flou qu'un répertoire...) 
  
-   $ svnadmin create /svn/dev/test1 
-   $ la /svn/dev/test1 
-   total 36 
-   drwxr-sr-x 7 thierry svn-dev 4096 2006-09-11 00:58 . 
-   drwxrwsr-x 3 svn-dev svn-dev 4096 2006-09-11 00:58 .. 
-   drwxr-sr-x 2 thierry svn-dev 4096 2006-09-11 00:58 conf 
-   drwxr-sr-x 2 thierry svn-dev 4096 2006-09-11 00:58 dav 
-   drwxr-sr-x 5 thierry svn-dev 4096 2006-09-11 00:58 db 
-   -r--r--r-- 1 thierry svn-dev    2 2006-09-11 00:58 format 
-   drwxr-sr-x 2 thierry svn-dev 4096 2006-09-11 00:58 hooks 
-   drwxr-sr-x 2 thierry svn-dev 4096 2006-09-11 00:58 locks 
-   -rw-r--r-- 1 thierry svn-dev  229 2006-09-11 00:58 README.txt 
  
-==== Importe un **project**existant dans le repertoire **test1**: ==== 
  
-D'abord, creer un repertoire provisoire, par exemple dans **~/tmp** et que nous nommerons **sertest** : 
  
-   $ mkdir sertest+ 
 +==== Importe un "project" existant... ==== 
 + 
 +(Ou simplement créer un "project" vide)\\ 
 +D'abord, créer un répertoire provisoire, par exemple dans ''**~/tmp/myproject**''
 + 
 +   $ cd ~/tmp 
 +   $ mkdir myproject 
 +   $ cd myproject
  
 Créeons dans ce répertoire, une arborescence comme suit: Créeons dans ce répertoire, une arborescence comme suit:
  
-   $ cd sertest 
    $ mkdir trunk    $ mkdir trunk
    $ mkdir branches    $ mkdir branches
Ligne 146: Ligne 170:
 Copier les fichiers du projet dans **trunk**: Copier les fichiers du projet dans **trunk**:
  
-   $ cp -~/quelque/part/sertest/* ./trunk/+   $ cp -Rp ~/quelque/part/* ./trunk/
  
-Enfin, on importe tout cela dans **subversion** :+Et enfin, on importe tout cela dans **subversion** :
  
    $ cd ~/tmp    $ cd ~/tmp
-   $ la sertest+   $ la myproject
    total 20    total 20
    drwxr-xr-x 5 thierry thierry 4096 2006-09-11 01:02 .    drwxr-xr-x 5 thierry thierry 4096 2006-09-11 01:02 .
Ligne 159: Ligne 183:
    drwxr-xr-x 4 thierry thierry 4096 2006-04-26 23:19 trunk    drwxr-xr-x 4 thierry thierry 4096 2006-04-26 23:19 trunk
  
-On est bien là ou il faut... le repertoire parent de mon projet... Importons donc:+On est bien là où il faut... le répertoire parent de mon projet... Importons donc:
  
-   $ svn import myproject file:///svn/dev/test1/myproject -m "initial import for test+  $ svn import myproject svn://localhost/dev/myproject -m "initial import" 
-   Ajout          myproject/trunk +  Domaine d'authentification : <svn://localhost:3690> ffffffff-DDDD-4444-8888-77777777 
-   ... snip ... +  Mot de passe pour 'thierry'
-   Ajout          myproject/trunk/my_debug.c +  Ajout          myproject/trunk 
-   Ajout          myproject/branches +  ... 
-   Ajout          myproject/tags+   Révision 1 propagée
 +Rappel: on passe par le daemon qui tourne en 'localhost', sinon, on aurait pu faire (si on avait les droits d'écrire dans ''/svn/dev/bourse'')
  
 +   $ svn import myproject file:///svn/dev/myproject -m "initial import for test"
 +   Ajout          myproject/trunk
 +   ...
    Révision 1 propagée.    Révision 1 propagée.
 +
 +==== Où sont les mots de passe... ====
 +Par la suite, les mots de passe ne seront plus demandé ! Ils sont stockés dans:
 +  ~/.subversion/auth/svn.simple
 +
  
 ==== Recuperer des fichiers tout neuf du repository: ==== ==== Recuperer des fichiers tout neuf du repository: ====
Ligne 174: Ligne 207:
 Ce mettre dans le répertoire **parent** du projet: Ce mettre dans le répertoire **parent** du projet:
  
-   $ svn checkout file:///svn/dev/test1/myproject/trunk sertest+Via le daemon: 
 +   $ svn checkout svn://localhost/dev/myproject/trunk myproject 
 +ou plus généralement: 
 +   svn checkout svn://Adresse_IP/dev/myproject/trunk myproject 
 + 
 +Sans le daemon: 
 +   $ svn checkout file:///svn/dev/myproject/trunk myproject
  
-Un repertoire **sertest** est créé avec l'injections de tous les fichiers associés (de **trunk**).+Un repertoire **myproject** est créé avec tous les fichiers associés (de **trunk**).
  
 Modifions des choses... Modifions des choses...
Ligne 186: Ligne 225:
    $ svn update    $ svn update
    $ svn commit -m "j'ai fait des p'tains de modifs!"    $ svn commit -m "j'ai fait des p'tains de modifs!"
-   Envoi          sertest.c+   Envoi          monprojet.c
    Transmission des données .    Transmission des données .
    Révision 3 propagée.    Révision 3 propagée.
Ligne 198: Ligne 237:
 Tiens, des infos: Tiens, des infos:
  
-   $ svn info file:///svn/dev/test1/myproject+   $ svn info file:///svn/dev/myproject
    Chemin : myproject    Chemin : myproject
-   URL : file:///svn/dev/test1/myproject+   URL : file:///svn/dev/myproject
  
    Racine du dépôt : file:///svn/dev/test1    Racine du dépôt : file:///svn/dev/test1
Ligne 209: Ligne 248:
    Révision de la dernière modification : 4    Révision de la dernière modification : 4
    Date de la dernière modification: 2006-09-11 01:39:56 +0200 (lun, 11 sep 2006)    Date de la dernière modification: 2006-09-11 01:39:56 +0200 (lun, 11 sep 2006)
 +
 +Ou bien aussi:
 +   $ svn info svn://10.20.1.111/dev/myproject
 +   ...
  
 Pour recuperer la revision 3 (par exemple), et dans le repertoire **r3**: Pour recuperer la revision 3 (par exemple), et dans le repertoire **r3**:
Ligne 255: Ligne 298:
  
    $ svn switch --relocate FROM_URL TO_URL    $ svn switch --relocate FROM_URL TO_URL
 +
  
 ===== Installer en serveur avec SSH ===== ===== Installer en serveur avec SSH =====
 +
 +==== droits ====
 +Il faut préalablement s'assurer que l'utilisateur aura les droits de lire et/ou modifier le repository. Pour repartir des exemples ci-dessus:
 +  # chmod -R g+ws /svn/dev/myproject
 +Et
 +  # adduser thierry svn
  
 ==== Cas simple ==== ==== Cas simple ====
Ligne 283: Ligne 333:
  
 Et c'est relativement long, et ca demande 3 fois le mot de passe... Et c'est relativement long, et ca demande 3 fois le mot de passe...
 +
 +
 +
 +
 +===== svnserve et inetd =====
 +C'est finalement mieux et plus simple qu'un daemon.\\
 +Editer le fichier ''/etc/inetd.conf'' et inserer:
 +  svn     stream  tcp     nowait  svn     /usr/bin/svnserve   svnserve -i -r /svn
 +Puis forcer le rechargement du fichier de conf en faisant:
 +  # ps aux | grep inetd
 +  root      3209  0.0  0.0   1748   576 ?        Ss   May21   0:00 /usr/sbin/inetd
 +Et enfin:
 +  # kill -HUP 3209
 +(ou ''invoke-rc.d openbsd-inetd reload'')
 +
 +:!: Si vous ne trouvez pas "inetd", c'est peut-être simplement parce que ce daemon ne s'est pas donné la peine de resté chargé (car la conf ne le necessitait pas); donc:
 +  # /etc/init.d/openbsd-inetd restart
 +  Restarting internet superserver: inetd
 +
 +Et voila.
  
 ===== Sauver et restaurer ===== ===== Sauver et restaurer =====
Ligne 299: Ligne 369:
  
    $ cat app-dump.svn | svnadmin load /svn/dev/new-app    $ cat app-dump.svn | svnadmin load /svn/dev/new-app
 +
 +
 +===== Deplacer =====
 +Aprés un crash, la bouillie du répertoire **''/svn''**  a été deporté sur un serveur distant...
 +
 +Mais voila que mes trunks, ne sont plus a jour et un **''svn checkout''** est exclus. Et puis de toutes les maniéres:
 +  $ svn update
 +  svn: Impossible d'ouvrir une session ra_local pour l'URL
 +  svn: Le dépôt 'file:///svn/dev/labo/sudo2/trunk' n'a pu être ouvert
 +Tu m'etonnes: le repository est par là maintenant:
 +  svn://debcave/dev/labo/sudo2/trunk
 +Alors je fais:\\
 +  (sous réserve:)
 +  $ svn cleanup
 +et enfin:
 +  $ svn switch --relocate file:///svn/dev/labo/sudo2/trunk svn://debcave/dev/labo/sudo2/trunk
 +Et voila !
  
environnement_prog_svn.1179913499.txt.gz · Dernière modification : 2007/05/23 09:44 de thierry