Les apports de Subversion

Subversion a été écrit afin de combler certains manques de CVS.

Voici les principaux apports :

  • Les commits, ou publications des modifications sont atomiques. Un serveur Subversion utilise de façon sous-jacente une base de données capable de gérer les transactions atomiques (le plus souvent Berkeley DB)
  • Subversion permet le renommage et le déplacement de fichiers ou de répertoires sans en perdre l’historique
  • les métadonnées sont versionnées : on peut attacher des propriétés, comme les permissions, à un fichier, par exemple

Du point de vue du simple utilisateur, les principaux changements lors du passage à Subversion, sont :

  • Les numéros de révision sont désormais globaux (pour l’ensemble du dépôt) et non plus par fichier : chaque patch a un numéro de révision unique, quels que soient les fichiers touchés. Il devient simple de se souvenir d’une version particulière d’un projet, en ne retenant qu’un seul numéro
  • svn rename (ou svn move) permet de renommer (ou déplacer) un fichier
  • Les répertoires et méta-données sont versionnés

App

SVN – Release Method

  • Nouvelle Release (création de tag version_x_y) à partir du tronc
  • svn cp svn+ssh://user@machine/projet/trunk

    svn+ssh://user@machine/projet/tags/version_x_y

  • Nouvelle Release (création de tag version_x_y) à partir d’une branche
  • svn cp svn+ssh://user@machine/projet/branches/version_0_7-bugfixes-branch

    svn+ssh://user@machine/projet/tags/version_0_7_6

  • Nouvelle Branche (après sortie de la release)
  • svn copy svn+ssh://user@machine/projet/trunk

    svn+ssh://user@machine/projet/branches/version_x_y-bugfixes-branch

  • Création d’archives
  • svn export svn+ssh://user@machine/projet/trunk projet

    projet/install/exportprojet 0.9 svn export

    svn+ssh://user@machine/projet/branches/version_0_8-bugfixes-branch projet

    projet/install/exportprojet 0.8

Sources : lien

Subversion – Rollback local

Vous avez un checkout de votre repository en local sur votre machine, vous venez de faire une action du style svn remove <fichier>, et zut !

Question :

Comment revenir en arrière sachant que vous n’avez pas commité vos modifications ?

Réponse :

svn revert <fichier> # Pour un fichier
svn revert -R <repertoire> # Pour un repertoire

Question 2 :

Et si c’était commité ?

Réponse :

svn merge --commit -39 <repertoire>
# Annule la révision 39

Source

Subversion – Les commandes indispensables

svnadmin create créer un repository
svn checkout récupérer le contenu d’un repository
svn commit soumettre des modifications au repository
svn import importer un projet dans le repository
svn resolved indiquer que les conflits ont été résolus
svn revert annuler toute modification locale
svn update mettre à jour le répertoire local
svn cat lire le contenu d’un fichier du repository
svn diff regarder les différences entre des versions du repository
svn info obtenir des infos sur le réperoire local
svn list lister le contenu du repository
svn log voir les messages accompagnant chaque révision du repository
svn status afficher l’état des fichiers/dossiers du répertoire local
svn add ajouter un fichier/dossier dans l’arborescence de la base
svn copy copier des fichiers/dossiers dans l’arborescence du repository
svn delete supprimer des fichiers/dossiers de l’arborescence du repository
svn mkdir créer un dossier dans l’arborescence du repository
svn move déplacer des fichiers/dossiers dans l’arborescence du repository

App

Organiser son code avec un dépot Subversion

Définition du répertoire SVN Racine:

SVNREPOS=/usr/local/share/svn

Création des utilisateurs et leurs droits associés:

groupadd svnusers
useradd -m svnadm -g svnusers
usermod -L svnadm
echo umask 002 >> ~svnadm/.bashrc
mkdir -p $SVNREPOS
chown -R root.svnusers $SVNREPOS
chmod -R u+wrx,g+wrx,o-wxr $SVNREPOS

Création du wrapper:

mv /usr/bin/svnserve /usr/bin/svnserve.bin
cat << EOF > /usr/bin/svnserve
#!/bin/sh
# wrap in order to put root in by default
# Script implemented by Adrian Robert <arobert@cogsci.ucsd.edu>
exec /usr/bin/svnserve.bin -r $SVNREPOS "\$@"
EOF
chmod u+wrx,g+rx-w,o+xr-w /usr/bin/svnserve

On se connecte sous l’utilisateur svnadm afin de créer les repositories projets:

su - svnadm

Créer le dépot svn
svnadmin create dossier/sousDossier/depot

Si vous souhaitez importer à partir d’un dump svn existant:

svnadmin load "/usr/local/svn/projet1" < mon_dump.svn

Si vous souhaitez importer à partir d’un répertoire:

svn import /home/user/projet1/ file:///usr/local/share/svn/projet1 -m "import initial de projet sous Zend Framework"

Création du fichier de configuration du projet1:

cat << EOF /usr/local/svn/projet1/conf/svnserve.conf
[general]
anon-access = none
auth-access = write
EOF

Accéder en SSH au repository
svn list svn+ssh://<user-id>@<machine>/projet1

Sources:

App

Recent Tweets

Catégories