Aide-mémoire pour SVN

pour installer subversion sur MacOsX :

  1. télécharger et installer le package subversion à l'adresse http://www.open.collab.net/downloads/community/

  2. dans le ~/.profile, penser à ajouter une ligne :

    export PATH=/opt/subversion/bin:$PATH

récupération d'un projet : du dépôt (repository) sur le serveur SVN vers la copie de travail locale (working copy)

cd ~/MonDepot

svn co "https://svn.enstimac.fr/MonProjet"

co ou checkout est la commande pour récupérer les données du repository SVN et les vérifier.

exporter un projet

Si l'on veut récupérer le contenu d'un projet, mais pas en faire le suivi, il faut l'exporter localement :

svn export "https://svn.enstimac.fr/MonProjet"

exporter le dépôt de travail local

svn export ~/MonDepot ~/MaDestination

SVN va créer le répertoire ~/MaDestination et y exporter le contenu du dépôt local.

mise à jour : mise en cohérence de la version locale avec la version du repository SVN

Avant de modifier un fichier versionné, il faut vérifier qu'il n'a pas été modifié par un tiers.

svn update "~/MonDepot"

envoi des modifications locales vers le repository svn

svn ci "~/MonDepot" -m "[MonProjet] Mon commentaire pour préciser les modifications apportées à MonProjet"

ci ou commit est la commande pour envoyer les données modifiées de la copie de travail locale vers le repository SVN.

exclusion de certains fichiers

Il peut être intéressant d'ignorer certains fichiers, afin de ne pas les prendre en compte dans le suivi de version. Pour cela, il faut définir une propriété svn:ignore.

Par exemple, la commande suivante indique que tous les fichiers ayant "log" pour extension seront ignorés :

svn propset svn:ignore *.log .

ajout de fichiers ou de dossiers

svn add [DesFichiersDesDossiers] -N

l'option -N peut être indiquée pour interdire l'ajout récursif.

ajout de tous les fichiers ou dossiers non-versionnés

svn st | grep "^\?" | awk "{print \$2}" | xargs svn add

suppression de fichiers ou de dossiers

svn rm [DesFichiersDesDossiers] --force

rm, remove, del ou delete permettent de supprimer des fichiers

l'option --force permet de forcer la suppression (même si SVN est mécontent parce que l'on veut supprimer un fichier ou un dossier que l'on vient d'ajouter (par add) )

suppression de fichiers ou de dossiers du serveur SVN

svn rm "https://svn.enstimac.fr/MonProjet/Chemin/Dossier/ouFichierASupprimer" --force

copie d'un fichier ou d'un dossier

svn cp FichierOuDossier Emplacement

déplacement d'un fichier ou d'un dossier

Cela revient à faire une copie et une suppression. Cela permet aussi de renommer un fichier.

svn mv ~/Chemin/Fichier1 ~/Chemin/Fichier2

information sur les modifications

svn st -uv

la commande st ou statut permet de connaître la différence entre la copie de travail locale et la version sur le dépôt SVN.

Pour chaque fichier, SVN indiquera le numéro du dernier commit, le nombre de modifications apportées au fichier, la dernière personne à l'origine de la modification, le chemin du fichier.

  1. Et, au début de cette ligne, l'état de ce fichier :

    • ' ' : aucune modification ;

    • A : ajouté ;

    • D : supprimé ;

    • C : en conflit ;

    • I : ignoré ;

    • M : modifié ;

    • R : remplacé ;

    • ? : non-versionné ;

    • ! : manquant.

  2. Juste à côté, l'état de la version sur le serveur SVN :

    • ' ' : aucune nouvelle version sur le serveur (le fichier local est à jour) ;

    • * : une version plus récente est disponible sur le serveur.

voir les différences entre la version actuelle et le dernier update

svn diff

options possibles :

  • -N pour non récursif ;

  • --force pour forcer la commande ;

  • --sumarize pour n'obtenir qu'un résumé ;

  • --no-diff-deleted pour ignorer les fichiers supprimés.

machine arrière

svn revert /Chemin/Dossier/ -R

la commande revert permet de revenir à l'état précédant (parfois utile en cas de conflit)

l'option -R pour un traitement récursif.

svnX

svnX ( http://code.google.com/p/svnx/) est un client graphique, gratuit.

SCPlugin

SCPlugin ( http://scplugin.tigris.org/) est un plugin pour le Finder.