SubVersion/TP
Jump to navigation
Jump to search
Ce fichier de commande Windows illustre l'usage des principales commandes de SubVersion pour la gestion de révisions.
Ce fichier peut être adapté pour Linux.
Ce tutoriel considère:
- 1 administrateur
- 2 éditeurs collaborant (avec des conflits) sur une base de code locale gérée par Subversion.
Il faut ouvrir 3 command prompts
rem =========================================================================== rem Tutoriel SubVersion rem Ce fichier de commande Windows illustre l'usage des principales commandes de rem SubVersion pour la gestion de révisions. rem (c) Didier Donsez, 2007 rem =========================================================================== rem Telecharger SubVersion pour Windows depuis http://subversion.tigris.org rem Installer (Unzip %SVN_HOME% rem set SVN_HOME=c:\devtools\svn-win32-1.4.4 rem puis set PATH=%PATH%;%SVN_HOME%\bin rem Démarrer -> Exécuter -> Taper "cmd" rem en parallele des commandes en ligne, vous pouvez utiliser le client Windows TortoiseSVN disponible gratuitement sur http://www.tortoisesvn.org/ rem Aide des principales commandes svn help svnadmin help svnlook help svndumpfilter help svnserve help svn --version cd c:\ rem Creation du dépôt mkdir repository svnadmin create repository rem svnadmin create repository --fs-type fsfs dir repository rem Creation d'un projet hello a partir d'un archetype Maven (@see http://www.sonatype.com/book/archetypes.html#using) mvn archetype:create -DgroupId=demo.svn -DartifactId=hello rem Importation des fichier du projet hello dans le dépôt svn import hello file:///c:/repository/hello --message "initial import" svnlook youngest repository svnlook tree repository rem Création d'une copie de travail (checkout) mkdir workingcopy1 svn checkout file:///c:/repository/hello workingcopy1 rem Ajout et Suppression de fichiers echo This is a readme file > workingcopy1\LISEZMOI.txt svn status workingcopy1\LISEZMOI.txt svn add workingcopy1\LISEZMOI.txt svn status workingcopy1\LISEZMOI.txt svn commit workingcopy1\LISEZMOI.txt --message "add a readme file" svn delete workingcopy1\LISEZMOI.txt svn status workingcopy1\LISEZMOI.txt svn commit workingcopy1\LISEZMOI.txt --message "delete a readme file" rem Renommer un fichier dans la copie de travail echo This is a readme file > workingcopy1\LISEZMOI.txt svn commit workingcopy1 --message "add a readme file" svn rename workingcopy1\LISEZMOI.txt workingcopy1\README.txt svn status workingcopy1 svn commit workingcopy1 --message "add the readme file" rem Modification d'un fichier dans la copie de travail echo Contributors: >> workingcopy1\README.txt type workingcopy1\README.txt rem par exemple, ajoutez votre nom des contributeurs dans le commentaire de la classe svn status workingcopy1\README.txt --verbose Partager les modifications (commit) svn commit workingcopy1 --message "first modification" rem Inspection des logs svn log workingcopy1 svn update workingcopy1 svn log workingcopy1 rem Editions concurrences svn update workingcopy1\README.txt rem modifiez le nom de l'auteur echo didier >> workingcopy1\README.txt type workingcopy1\README.txt svn update workingcopy1\README.txt rem modifiez le nom de l'auteur echo donsez >> workingcopy2\README.txt svn status workingcopy1 svn status workingcopy2 svn commit workingcopy1 --message "second modification" svn commit workingcopy2 --message "second modification" rem Traitement du conflit entre plusieurs rédacteurs par un "merge" manuellement svn update workingcopy2 dir workingcopy2 svn status workingcopy2\README.txt --verbose type workingcopy2\README.txt rem edit workingcopy2\README.txt echo This is a readme file > workingcopy2\README.txt echo Contributor: didier donsez > workingcopy2\README.txt del workingcopy2\README.txt.mine del workingcopy2\README.txt.r* svn resolved workingcopy2\README.txt svn commit workingcopy2 --message "third modification" rem Revenir en arrière svn update workingcopy1 edit workingcopy1\src\test\java\demo\svn\AppTest.java svn status workingcopy1\src\test\java\demo\svn\AppTest.java svn diff workingcopy1\src\test\java\demo\svn\AppTest.java svn revert workingcopy1\src\test\java\demo\svn\AppTest.java rem Récupérer une ancienne révision svn checkout workingcopy1 file:///c:/repository/hello@1 rem Création d'une autre copie de travail à partir de la révision 1 mkdir workingcopy3 svn checkout file:///c:/repository/hello workingcopy3 --revision 1 rem Checkout de l'autre copie de travail à partir de la dernière révision (HEAD) svn checkout file:///c:/repository/hello workingcopy2 --revision HEAD svn status workingcopy1 rem Ajout de propriétés svn propset foo "bar" workingcopy1 svn propset tic "tac toe" workingcopy1 svn propedit foo workingcopy1 svn propedit svn:ignore workingcopy1 svn propdel tic workingcopy1 rem Edition d'un log svn log workingcopy1 -r 1 svn propset svn:log 'initial import by Didier' -r1 --revprop file:///c:/repository/hello echo initial import by Didier > log.r1.txt svnadmin setlog c:\repository -r1 log.r1.txt --bypass-hooks svn log workingcopy1 -r 1 del log.r1.txt rem Ajout de svn:ignore svn propedit svn:ignore workingcopy1 rem ajoutez target .project .classpath svn propget svn:ignore workingcopy1 svn commit workingcopy1 cd workingcopy1 mvn clean install rem Pose de verrou svn lock workingcopy1\pom.xml -m "Editing file for tomorrow's release." svn status workingcopy1 svn info workingcopy1\pom.xml svn info file:///c:/repository/hello/pom.xml rem Recherche et forcer les verrous svnadmin lslocks c:\repository svnadmin rmlocks c:\repository /hello/pom.xml svn info file:///c:/repository/hello/pom.xml rem Lock/Modify/Unlock (à la RCS) svn lock workingcopy1\pom.xml -m "Editing file for tomorrow's release." edit workingcopy1\pom.xml svn unlock workingcopy1\pom.xml svn commit workingcopy1 svn info file:///c:/repository/hello/pom.xml rem Ajout de mots clé substituables (Keyword substitution) echo $Id$ $HeadURL$ $Rev$ $Author$ $Date$ >> workingcopy1\README.txt type workingcopy1\README.txt rem Ajouter les appels aux mots clé $Id$ $HeadURL$ $Rev$ $Author$ $Date$ dans les commentaires svn propset svn:keywords "Id Rev HeadURL Date Author" workingcopy1\README.txt svn commit workingcopy1 svn update workingcopy1 type workingcopy1\README.txt rem Création du layout trunk/tags/branches svn mkdir workingcopy1\trunk svn mkdir workingcopy1\branches svn mkdir workingcopy1\tags svn move workingcopy1\src workingcopy1\trunk svn move workingcopy1\target workingcopy1\trunk svn move workingcopy1\pom.xml workingcopy1\trunk svn commit workingcopy1 rem Création d'un tag 1.0 à partir de la revision HEAD svn copy file:///c:/repository/hello/trunk file:///c:/repository/hello/tags/release-1.0 -m "Tagging the 1.0 release of the 'hello' project." svn update workingcopy1 rem Création d'une branche java5 à partir de la revision HEAD svn copy file:///c:/repository/hello/trunk file:///c:/repository/hello/branches/java5 -m "Branching the java5 implementation of the 'hello' project." svn update workingcopy1 rem Modifiez le pom.xml selon http://java.developpez.com/faq/maven/?page=utilisation#compilation1 svn commit workingcopy1 rem switch rem Inspection d'ancienne revision svn cat workingcopy1\pom.xml -r 1 svn blame workingcopy1\pom.xml -r 1 rem Création de patch svn diff workingcopy1 -r 1:2 > hello.r1-2.patch rem Application d'un path TODO sous Unix ou sous CygWin, la commande patch TODO sous Windows, les commandes ExamDiff, KDiff3, WinMerge, Araxis compare svn diff --diff-cmd /usr/bin/diff --extensions '-i' README.txt rem Création d'un dump svnadmin dump repository > repository.svndump rem Création d'un nouveau dépot partiel (utilisant FSFS) à partir du dump svndumpfilter include hello/trunk --drop-empty-revs --renumber-revs < repository.svndump > hello-trunk.svndump svnadmin create hellorepo --fs-type fsfs svnadmin load hellorepo < hello-trunk.svndump rem Operations de maintenance svnadmin crashtest repository svnadmin recover repository rem ======== rem svnserve rem lire http://tortoisesvn.net/docs/release/TortoiseSVN_fr/tsvn-serversetup-svnserve.html rem ======== rem Lancement svnserve comme un deamon edit repository\conf\svnserve.conf edit repository\conf\passwd edit repository\conf\authz svnserve --deamon --root repository ^C rem Lancement de svnserve comme un service NT (http://tortoisesvn.net/docs/nightly/TortoiseSVN_fr/tsvn-serversetup-svnserve.html) sc create svn binpath= "E:\devtools\svn-win32-1.4.4\bin\svnserve.exe --service --root G:\repository" displayname= "Subversion Server" depend= Tcpip start= auto sc query svn rem Création d'une autre copie de travail mkdir workingcopy3 svn checkout svn://localhost/hello workingcopy3 rem Arrêt et Suppression du service NT svn sc stop svn sc delete svn rem ======== rem svn via un tunnel SSH (svn+ssh) rem ======== rem Download and install Putty.zip set PATH=%PATH%;c:\putty set PLINK_PROTOCOL=ssh set SVN_SSH=plink.exe svn checkout svn+ssh://username@svn.forge.objectweb.org/svnroot/ecom rem ======================= rem Apache v2 + mod_dav-svn rem ======================= TODO rem Exporter un depot svn copy file:///c:/repository/hello/trunk trunk.export rem ======================= rem Statistiques rem ======================= rem Telechargez et installez StatSVN http://wiki.statsvn.org/ rem Générez le rapport d'activité du projet svn co svn://server/repo/trunk/modulename svn log -v --xml > logfile.log java -jar /path/to/statsvn.jar /path/to/module/logfile.log /path/to/module