Subversion

De Linuxmemo.


Sommaire

Commandes memo

Première copie du site

svn co url

Mise a jour de la copie local:

svn update

Savoir ce qui a change:

svn log -r xxx -v fichier       ou bien      svn log -r xxx:xxxx -v fichier

Avoir le détail des changement diff:

svn diff -r xxx:xxx fichier

Afficher en fichier:

svn cat  -r xxx:xxx fichier

Savoir ce qui a change sans toucher a la copie local:

svn log -v -r PREV:COMMITTED ou svn log -v -r xxx:COMMITTED


Avoir de l'aide

Commandes

svn help
svn help diff
svn help up

Manuel de Subversion

http://svnbook.red-bean.com/nightly/en/svn-book.html

Info sur le checkout local

Obtenir le statut des fichiers du checkout local

svn status

Obtenir des infos sur le checkout local (y compris sa révision)

svn info

Retrouver le chemin du repository

svnpath

Consulter et rapatrier les modifications

Recevoir les modifications qui ont été committées dernièrement

svn up

Savoir qui a engendré chaque ligne d'un fichier

svn annotate
svn blame
svn praise

Voir le log des commits

svn log

Gestion des modifications locales

Voir la différence entre votre checkout et le repository

svn diff
svn diff

Configurer le comportement de svn diff

svn diff --diff-cmd /usr/bin/diff -x -ubB # patch unified ou les lignes blanches et caracteres vides sont ignorés

Retirer temporairement des modifications locales

svn diff > modifs.patch
patch -p0 -R < modifs.patch
[...faire des trucs sans les modifs, par exemple tester...]
patch -p0 < modifs.patch

Annuler les modifications qu'on a faites dans un fichier

svn revert

Committer

svn ci -m "message"
svn ci -m "message"

Committer avec un long message à entrer dans un éditeur

svn ci
svn ci

Modifier un message de commit

svn propedit --revprop svn:log --revision

Résoudre un conflit, après avoir résolu dans le contenu du fichier lui-même

# après un svn update qui affiche des 'C'
svn resolved
# le 'C' ne doit plus apparaître devant le fichier résolu dans svn status

Différences entre révisions

Voir la différence entre la version locale et une révision antérieure

svn diff -r

Voir la différence entre 2 révisions

svn diff -r :

Voir la différence entre 2 branches

svn diff

Revenir à une version antérieure (pour voir le code, pas pour committer en revertant)

svn update -r

Reverter à une version antérieure (pour committer et revenir à une ancienne version)

svn merge -r : .
# committer les changements (en précisant les numéros de versions)

Créer des branches ou tags

Créer une branche ou un tag en copiant le trunk du repository (committé directement)

svn cp $(svnpath)/trunk $(svnpath)/branches/
svn cp $(svnpath)/trunk $(svnpath)/tags/
svn cp $(svnpath)/trunk $(svnpath)/path/to/where/you/want

Créer une branche ou un tag à partir du répertoire local (sans committer directement)

svn cp . /path/to/where/you/want
# committer

Plus d'infos

svn help cp

Merge entre branches

Merger des changements d'une branche dans une autre

svn merge -r :\

# committer en notant les numéros de révision dans le message de commit
# pour pouvoir remerger à partir de plus tard
# NOTE: les tags doivent être donnés avec les url complètes du repository

Merger les changements entre 2 tags dans une branche

svn merge
# NOTE: les tags doivent être donnés avec les url complètes du repository

Merger une branche dans le tronc

  • Tout d'abord s'assurer que la branche et le tronc sont à jour, merger le tronc dans la branche.
  • Lancer la commande suivante depuis le répertoire principal du tronc:
svn merge svn+ssh://.../project/trunk svn+ssh://.../project/branches/BRANCHNAME .

Création d'un repository

  • Si tous les modules vont dans /home/runtime/SVN/, on peut créer un nouveau module 'foobar' avec
svnadmin create /home/runtime/SVN/foobar
  • Pour travailler dessus, il faut ensuite le checkouter pour de vrai
svn checkout svn+ssh://dalton/home/runtime/SVN/foobar
Outils personnels