1 / 21

Subversion, un outil de gestion de version

Florent Guilleux. Subversion, un outil de gestion de version. Le développement de logiciel est une tâche complexe. Mode de développement ouvert : contributeurs extérieurs relations à distance (mail, IRC, etc.) Gestion des diffusions (releases, correctifs de sécurité, etc.)

Download Presentation

Subversion, un outil de gestion de version

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Florent Guilleux Subversion, un outil de gestion de version

  2. Le développement de logiciel est une tâche complexe Mode de développement ouvert : contributeurs extérieurs relations à distance (mail, IRC, etc.) Gestion des diffusions (releases, correctifs de sécurité, etc.) Dépendances multiples (bibliothèques) …

  3. Le versionning apporte de nombreux gains Retours en arrière et corrections toujours possibles Historique de toutes les opérations Indispensable pour le travail en équipe Travaux en parallèle sur plusieurs branches Pour du code mais aussi un site web, de la doc…

  4. … qui justifient l’effort de prise en main trunk patch version commit modules diff tag merge branches update BASE repository HEAD conflict check out

  5. Un référentiel central et une copie de travail Référentiel trunk/ 1 3 2 svn checkout svn commit svn commit Copie de travail d’Alice alice$work > svn co http://subversion.example.com/myProject/trunk myProject alice$work > svn commit myProject alice$work > svn commit myProject/file1.pl

  6. Que faut-il enregistrer dans un référentiel ? tout ce qui peut est susceptible de changer au cours du temps le code + ce qui sert au déploiement de l’appli (scripts d’installation par exemple) la documentation du produit sauf ce qui peut être généré automatiquement (JavaDoc par exemple)

  7. Quand faut-il faire des commit ? Souvent Après avoir testé et validé ses modifications En groupant dans un commit les modifications qui correspondent à une même fonctionnalité

  8. Récupérer n’importe quelle révision : svn checkout • Par un numéro de révision alice$work > svn co –r 2 http://subversion.example.com/myProject myProject A myProject/trunk/file1.pl A myProject/trunk/file2.pl Checkout revision 2. • Par une date alice$work > svn co –r {2006-01-15} http://subversion.example.com/myProject A myProject/trunk/file1.pl A myProject/trunk/file2.pl Checkout revision 1. • Mettre à jour une copie locale : svn update alice$work > svn update myProject U myProject/file1.pl U myProject/file2.pl Updated to revision 3.

  9. Connaître l’origine de sa copie locale : svn info alice$work > svn info myProject Path: myProject URL: http://subversion.example.com/myProject/trunk Repository UUID: d6959e13-b0o4-0673-7u654-a2v3e0b6c323 Revision: 2 Node Kind: directory Schedule: normal Last Changed Author: alice Last Changed Rev: 2 Last Changed Date: 2006-02-14 12:07:15 […]

  10. Les autres opérations sur le référentiel svn add, copy, delete, move Référentiel trunk/ 3 4 svn checkout svn add svn commit Copie de travail d’Alice alice$work > svn commit file3.pl alice$work > svn add file3.pl alice$work > svn delete file2.pl

  11. Connaître l’état de sa copie locale : svn status svn checkout Copie de travail d’Alice 1 1 2 3 4 5 Référentiel alice$work > svn status myProject M myProject/file1.pl D + myProject/file2.pl A + myProject/file4.pl ? myProject/file5.pl ! myProject/file3.pl 3 trunk/ svn delete 4 svn add

  12. Les messages de journal (logs) A chaque commit est associé un message de journal alice$work > svn commit –m ‘chgt de $regexp’ myProject/file1.pl • Le message doit indiquer pourquoi cette modification a été appliquée -m ‘Désormais on whitelist le format des paramètres CGI’

  13. Connaître l’historique des modifications : svn log alice$work > svn log myProject/file1.pl ------------------------------------------------------ r3 | Alice | 2006-03-09 16:43:22 (Thu, 9 Mar 2006) Ajout de la gestion des sessions ------------------------------------------------------ r2 | Alice | 2006-02-01 09:34:12 (Wed, 01 Feb 2006) Désormais on whitelist le format des paramètres CGI ------------------------------------------------------ r1 | Alice | 2006-01-10 09:34:12 (Tue, 10 Jan 2006) Import initial alice$work > svn log –r 2 –v myProject/file1.pl ------------------------------------------------------ r2 | Alice | 2006-02-01 09:34:12 (Wed, 01 Feb 2006) Changed paths: M myProject/file1.pl M myProject/file2.pl Désormais on whitelist le format des paramètres CGI ------------------------------------------------------

  14. Connaître les modifications : svn diff Adresses Jean jean@example.com David david@example.com Email Jean jean@example.com Contacts.txt Contacts.txt (copie de travail) 1 svn diff Contacts.txt Index: Contacts.txt ================ --- Contacts.txt (revision 1) +++ Contacts.txt (working copy) @@ -1,2 +1,3 @@ - Email + Adresses Jean jean@example.com + David david@example.com alice$myProject > svn diff –r X:Y file1.pl

  15. Annuler des modifications dans la copie de travail svn revert Référentiel trunk/ 1 2 svn checkout svn commit Copie de travail d’Alice alice$work > svn revert myProject/File1.pl Reverted ‘File1.pl’

  16. Des conflits peuvent survenir 2 Copie de travail de Bob svn commit svn checkout Référentiel trunk/ 1 svn checkout svn commit Copie de travail d’Alice

  17. Résolution des conflits Copie de travail de Bob svn update svn commit svn checkout Référentiel trunk/ 1 2 svn commit svn checkout Copie de travail d’Alice bob$myProject > svn commit File1.pl Sending File1.pl svn: commit failed (details follow): svn: Out of date: ‘/myProject/File1.pl’ in transaction ‘4’ bob$myProject > svn update File1.pl G File1.pl Updated to revision 2

  18. Si les modifications concernent des lignes différentes État « merGed » : G Bob Zéro Un Deux Trois QUATRE Zéro Un Deux Trois Quatre svn commit svn update Zéro Un Deux Trois QUATRE Un Deux Trois Quatre Un Deux Trois QUATRE Alice

  19. Si les modifications concernent les mêmes lignes État « Conflict » : C Un <<<< .mine Two ==== Dos >>>> .r2 Deux Trois QUATRE Un Two Trois Quatre svn update Un Deux Trois Quatre Un Dos Trois QUATRE File1.pl • File1.pl.mine • File1.pl.r2 • File1.pl.r1

  20. Si les modifications concernent les mêmes lignes Un <<<< .mine Two ==== Dos >>>> .r2 Trois QUATRE Un Two Trois QUATRE Un Two Trois QUATRE svn resolved résolution manuelle svn commit Un Two Trois QUATRE État « Conflict » : C

  21. Cycle de travail typique 5. Enregistrer ses modifications svn commit 2. Apporter des modifications svn add / copy / delete / move 4. Fusionner les modifications svn merge / resolved 3. Visualiser les modifications svn status / diff / revert 1. Mettre à jour sa copie de travail svn update

More Related