June 12th, 2008 @ 2:47pm | njames | Categories Development tools | No Comments »
Comme je travaille avec un ami sur un même bout de code pour un petit projet prospectif, j'ai déployé un subversion sur mon serveur.
Voici un mémo de quelques tests:
La machine utilisée tourne sous Ubuntu8.04.
Pour un usage en local:
- installer le paquet subversion.
- pour créer un repo:
$svnadmin create projectName
- pour le checkout:
$svn co file:///path/to/the/repository
- pour flagger un fichier comme nouveau dans le repo (et donc à ajouter sur le repo distant)
$svn add newFile
- pour commiter:
Si échec du dernier commit et intégration nécessaire, il faut récupérer la version plus récente présente sur le serveur (pour faire la fusion à la main):
$svn co fileToCommit -m "message"
SVN va alors créer 3 fichiers: file.mine (copie de la version modifiée en local), file.r1 (version locale avant modification), file.r3 (version du serveur, donc plus récente que file.r1). Quand l'intégration est effectuée (fusion de file.mine et r3) alors il faut flagger le conflit comme résolu (et recommiter le fichier ensuite):$svn update fileToUpdate
flags possibles: C : conflict (fichier conflictuel) A : added (fichier ajouté dans le projet) D : deleted (fichier supprimé du projet) G : fusion (fichier plus récent sur le repo et version locale modifiée depuis le dernier checkout mais la fusion ne pose pas de conflit) M : modified (modifications sur un fichier qui n'a pas été modifié localement, alors le fichier locale est écraser par sa version du repository).$svn resolved fileResolved
- pour créer une nouvelle branche à partir du trunk:
$svn cp http://.../trunk http://.../branches/mybranch
En réseau avec svnserve (et donc écoute sur un port particulier, le 3690):
Rien de particulier, il suffit soit de lancer le deamon à la main, soit de faire un script à placer dans /etc/rc1.d/K20svnserve et /etc/rc2.d/S20svnserve (ou placer le script dans /etc/init.d, et utiliser l'outil Debian rcconf).
#!/bin/sh
case "$1" in
start)
start-stop-daemon --start --chuid www-data:www-data --exec /usr/bin/svnserve -- -d -r /home/subversion/usvn/svn
;;
stop)
start-stop-daemon --stop --exec /usr/bin/svnserve
;;
restart)
$0 stop
$0 start
;;
esac
exit 0En réseau avec Apache sur le port 80:
- installer les paquets
subversion,subversion-tools,libapache2-svn - charger le module
$a2enmod dav_svn - rendre le repo accessible par apache:
Éditer
/etc/apache2/mods-available/dav_svn.conf<Location /svn> DAV svn Require valid-user SVNParentPath /home/subversion/repo/ AuthType Basic AuthName "Subversion repository" AuthUserFile /home/subversion/conf/htpasswd AuthzSVNAccessFile /home/subversion/conf/access </Location>
- gérer les utilisateurs avec
$htpasswd /home/subversion/conf/passwd nicolas - gérer les droits en éditant le fichier
/home/subversion/conf/authz[groups] developer = nicolas [projectName:/] @developer = rw * = r
En réseau avec USVN:
C'est la solution utilisée à la date de rédaction du billet. Plus léger et pratique qu'un Trac, mais certes bien moins puissant (ce n'est même pas comparable en fait, Trac étant un bug tracker), USVN ne propose pas de wiki, ni d'exploration du code (mais on peut naviguer dans l'arborescence du dépôt dans une interface Web).
USVN, UserfriendlySVN est un projet de l'Epitech distribué sous licence CECILL, qui permet la gestion de repository SVN par une application PHP (création, gestion des droits), en fait c'est très partique pour créer des dépôts SVN à distance et gérer les droits d'accès.
- installer les paquets
libapache2-mod-php5php5-sqlitesqlite3 - activer le module
$a2enmod rewrite - récupérer l'archive de USVN et la copier dans /var/www, la décompresser et modifier le propriétaire des fichiers
$chown -R www-data: usvn - vérifier le /usvn est accessible sur votre website, et utilisez l'application php pour l'installation.
Eclipse et SVN:
Avec Eclipse Ganymede, un projet Eclipse est né pour intégrer SVN dans eclipse, subversive, mais le plugin subclipse fonctionne aussi avec Ganymede.
- installer le plugin subclipse disponible sur Tigris. Par défaut, une dépendance (buckminster) est nécessaire à l'installation du plugin (et semble poser problème), mais l'installation du plugin peut s'effectuer en décochant l'option "Integrations (Optional)".
- un "new project" puis "checkout projects from SVN", et ça roule tout seul.
- installer le plugin subversive depuis les dépôts Eclipse
http://download.eclipse.org/technology/subversive/0.7/update-site/. - installer un SVN connector, par exemple celui de Polarion: http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site/ On y trouve une implémentation de Polarion, SVNKit, et une autre de Tigris, JavaHL. Cependant, il semble que si vous avez des projets anciennement gérer avec subclipse, le plugin subversive n'arrive pas à reprendre la main dessus...
Categories Development tools


