SVN : gestion de version

Création d’un dépot SVN local

  • créer le dépôt :

      $ svnadmin create ~/SvnRepos
    
  • éditer ~/SvnRepos/conf/svnserve.conf et décommenter les lignes :

anon-access = read
auth-access = write
password-db = passwd
  • éditer ~/SvnRepos/conf/passwd et ajouter les utilisateurs ;

  • lancer le serveur :

      $ svnserve --daemon --root ~/SvnRepos
    
  • créer un projet :

      $ svn mkdir svn://localhost/MonProjet
    
  • faire un premier checkout :

      $ svn co svn://localhost/MonProjet
    
  • et utiliser normalement…

Création d’un nouveau projet :

Créer un répertoire :

$ mkdir Projet

et y mettre au moins un ou deux fichiers :

$ touch Projet/MEMO

puis :

$ svn import Projet file:///var/svn/Projet -m "my now project"

On peut vérifier avec :

$ svnlook tree /var/svn | more

que ça a bien fait ce qu’on veut (avant de s'éverver sur la suite parce que ça ne fonctionne pas :-p )

Attention, après, Projet n’est pas devenu une copie de travail. Il faut faire :

$ rm -rf Projet
$ svn checkout file:///var/svn/Projet
A    Projet/MEMO
Révision 195 extraite.

Faire du ménage

J’ai créé des faux projets dans mon SVN, mais on dirait qu’on ne peut pas facilement les enlever (c’est fait exprès !). on peut déjà faire les svn rm des fichiers. Pour faire mieux, il faut faire comme quand on déplace svn :

  • svn dump + filtrage (svndumpfilter ?) + svn load.

Bon finalement, on dirait qu’on peut faire :

$ svn rm  file:///var/svn/BadDir

et que ça marche… (ça ne les efface probablement pas de l’historique, mais c’est ok)

Résolution de conflits

Il arrive parfois que pour une raison plus ou moins connue, on obtienne des messages du style :

Résumé des conflits :
  Arborescences en conflit : 2
svn: Échec de la propagation (commit), détails :
svn: Arrêt de la propagation : 'Includes' demeure en conflit

Si on veux passer outre (si on est sur de ce qu’on fait !), on peut utiliser :

$ svn resolved Includes

qui donne :

Conflit sur 'Includes' résolu

Voir aussi :