Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517
  1. <!doctype html>
  2. <html lang=fr>
  3. <head>
  4. <!-- Always define the charset before the title -->
  5. <meta charset=utf-8>
  6. <title>★ Installer un dépôt Subversion sous Ubuntu — Biologeek — David Larlet</title>
  7. <!-- Define a viewport to mobile devices to use - telling the browser to assume that the page is as wide as the device (width=device-width) and setting the initial page zoom level to be 1 (initial-scale=1.0) -->
  8. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  9. <!-- Fake favicon, to avoid extra request to the server -->
  10. <link rel="icon" href="data:;base64,iVBORw0KGgo=">
  11. <link type="application/atom+xml" rel="alternate" title="Feed" href="/david/log/" />
  12. <link rel="manifest" href="/manifest.json">
  13. <link rel="stylesheet" href="/static/david/css/larlet-david-_J6Rv.css" data-instant-track />
  14. <noscript>
  15. <style type="text/css">
  16. /* Otherwise fonts are loaded by JS for faster initial rendering. See scripts at the bottom. */
  17. body {
  18. font-family: 'EquityTextB', serif;
  19. }
  20. h1, h2, h3, h4, h5, h6, time, nav a, nav a:link, nav a:visited {
  21. font-family: 'EquityCapsB', sans-serif;
  22. font-variant: normal;
  23. }
  24. </style>
  25. </noscript>
  26. <!-- Canonical URL for SEO purposes -->
  27. <link rel="canonical" href="https://larlet.fr/david/biologeek/archives/20060707-installer-un-depot-subversion-sous-ubuntu">
  28. </head>
  29. <body>
  30. <div>
  31. <header>
  32. <nav>
  33. <p>
  34. <small>
  35. Je suis <a href="/david/" title="Profil public">David Larlet</a>, <a href="/david/pro/" title="Activité professionnelle">artisan</a> du web qui vous <a href="/david/pro/accompagnement/" title="Activité d’accompagnement">accompagne</a><span class="more-infos"> dans l’acquisition de savoirs pour concevoir des <a href="/david/pro/produits-essentiels/" title="Qu’est-ce qu’un produit essentiel ?">produits essentiels</a></span>. <span class="more-more-infos">Discutons ensemble d’une <a href="/david/pro/devis/" title="En savoir plus">non-demande de devis</a>.</span> Je partage ici mes <a href="/david/blog/" title="Expériences bienveillantes">réflexions</a> et <a href="/david/correspondances/2017/" title="Lettres hebdomadaires">correspondances</a>.
  36. </small>
  37. </p>
  38. </nav>
  39. </header>
  40. <section>
  41. <h1 property="schema:name">★ Installer un dépôt Subversion sous Ubuntu</h1>
  42. <article typeof="schema:BlogPosting">
  43. <div property="schema:articleBody">
  44. <img src="/static/david/biologeek/images/logos/livre_subversion.png" alt="vignette" style="float:left; margin: 0.5em 1em;" property="schema:thumbnailUrl" />
  45. <p>Ce billet était parti pour être une <a href="https://larlet.fr/david/biologeek/archives/20060219-critiques-de-livres-aux-editions-eyrolles/">critique du livre</a> <a href="http://www.editions-eyrolles.com/Livre/9782212119190/subversion">Subversion, Pratique du développement collaboratif avec SVN</a> mais je pense qu'il est finalement plus intéressant de prendre un exemple concrêt comme il est suggéré dans le titre du livre, l'apprentissage de Subversion passe surtout par la pratique. Ayant quelques <a href="https://larlet.fr/david/biologeek/archives/20051203-convertisseur-de-syntaxes-wiki-dotclear-a-dokuwiki/">petits</a> <a href="https://larlet.fr/david/biologeek/archives/20051017-parser-un-fichier-pdb-en-python-facilement-et-efficacement/">scripts</a> à mon actif, c'était le moment où jamais de m'y mettre&nbsp;!</p>
  46. <h2>Introduction</h2>
  47. <p>Si vous ne savez pas ce qu'est <a href="http://subversion.tigris.org/">Subversion</a>, ce billet présente peu d'intérêt pour vous mais c'est toujours intéressant de savoir que ça existe au cas où vous pourriez en avoir besoin. Subversion est un réécriture de <abbr title="Concurrent Versions System">CVS</abbr> dont le principe est la gestion des versions concurrentes (la réécriture a permis <a href="http://fr.wikipedia.org/wiki/Subversion_%28logiciel%29#Les_apports_de_Subversion">de nombreuses améliorations</a>). Cela permet l'édition d'un même fichier par plusieurs personnes en même temps et la gestion de la traçabilité des modifications (qui a fait quoi et quand en gros). Un serveur possède donc une version commune et chaque développeur travaille sur sa propre version locale qu'il syncronise avec le serveur le plus souvent possible pour éviter les conflits avec les autres développeurs en précisant à chaque fois la nature de la modification effectuée. C'est bien sûr beaucoup plus puissant mais l'idée de base est là.</p>
  48. <h2>Critique du livre</h2>
  49. <p>Rapidemment quand même, ce livre est tout ce qu'il y a de plus fonctionnel, il permet de se familiariser avec les commandes usuelles à travers de nombreux exemples. J'ai choisi ce livre car je voulais connaître les bonnes pratiques au niveau de l'organisation du code dans un dépôt. C'est toujours intéressant avant de se lancer dans de gros projets et on trouve difficilement de la documentation là-dessus (alors que toutes les commandes le sont, elles sont même <a href="http://www.editions-eyrolles.com/Chapitres/9782212119190/Annexe_A_Mason.pdf?xd=59fff71b12c33d94add2ae7e699d70e3">directement en téléchargement sur le site d'Eyrolles</a> ce qui est pratique si vous cherchez une commande sans avoir le livre sous les yeux).</p>
  50. <p>L'ouvrage est court mais traite toutes les questions que je me posais, de la création/gestion d'un projet à l'administration du serveur, en passant par l'utilité des branches de livraison et l'intégration d'un code tiers. Le seul léger manque est l'interfaçage avec Trac dont l'auteur ne fait même pas mention, ce serait d'ailleurs un ajout intéressant pour une prochaine édition. Heureusement il existe un <a href="http://projects.edgewall.com/trac/wiki/TracOnUbuntu">tutoriel en anglais</a> très bien fait sur le <a href="http://www.edgewall.com/trac/">site officiel</a> si vous souhaitez aller plus loin (un tutoriel a même été rédigé en français <a href="http://www.destination-linux.org/article52.html">sur Destination Linux</a>).</p>
  51. <h2>Qu'est ce qui est «&nbsp;subversionable »&nbsp;?</h2>
  52. <p>A peu près tout, même les binaires, mais encore faut-il que ça présente un intérêt. On stocke en général tout ce qui ne peut être généré dans le cas d'un projet de développement (par exemple vos fichiers compilés si vous possédez les sources c'est clairement inutile... sauf si votre projet est énorme bien sûr), mais certains y placent leurs sauvegardes, leur documentation, voire la totalité de leur /home, tout est possible, à vous de voir si c'est intéressant pour vous&nbsp;!</p>
  53. <p>Personnellement, et dans le cadre de cet exemple, je n'y intègrerais que mes scripts python et plus particulièrement mon <a href="https://larlet.fr/david/biologeek/archives/20051017-parser-un-fichier-pdb-en-python-facilement-et-efficacement/">parser de fichiers PDB</a>. Il peut être intéressant d'y placer vos fichiers de configuration système si vous avez passé du temps à les personnaliser (par exemple vos .* dans votre home :-)).</p>
  54. <h2>Création du dépôt</h2>
  55. <p>Mon script actuel se situe dans&nbsp;:</p>
  56. <pre>$ ll projects/PDBParser/</pre>
  57. <blockquote><p>total 628
  58. -rw-r--r-- 1 david david 101008 2006-04-20 12:00 1CDLA.pdb<br />
  59. -rw-r--r-- 1 david david 450198 2005-10-12 00:25 1SDK.pdb<br />
  60. -rw-r--r-- 1 david david 17992 2004-12-31 01:25 COPYING<br />
  61. -rw------- 1 david david 9168 2006-04-20 13:14 PDBParser.py<br />
  62. -rw------- 1 david david 3056 2006-04-20 13:20 README<br />
  63. -rw-r--r-- 1 david david 10253 2006-04-20 13:20 README.html</p></blockquote>
  64. <p>On va donc considérer que c'est ma copie locale de travail. Les fichiers *.pdb sont des données, COPYING contient la licence et README.html est généré à partir de README avec rst2html.</p>
  65. <p>Pour l'exemple, je vais placer mon dépôt ou repository Subversion en local aussi à l'adresse suivante (assurez vous que ce dossier existe et que vous ayez les droits pour le faire)&nbsp;:</p>
  66. <pre>$ mkdir /home/david/work/svn/repository
  67. $ svnadmin create /home/david/work/svn/repository/</pre>
  68. <p>Et effectuer l'import initial de mon code&nbsp;:</p>
  69. <pre>$ svn import -m "Import initial du script" projects/PDBParser/ file:///home/david/work/svn/repository/PDBParser/trunk</pre>
  70. <blockquote><p>Ajout projects/PDBParser/README.html<br />
  71. Ajout projects/PDBParser/1SDK.pdb<br />
  72. Ajout projects/PDBParser/1CDLA.pdb<br />
  73. Ajout projects/PDBParser/COPYING<br />
  74. Ajout projects/PDBParser/PDBParser.py<br />
  75. Ajout projects/PDBParser/README <br /></p>
  76. <p>
  77. Révision 1 propagée.</p></blockquote>
  78. <p>Petite vérification du statut de ma copie locale&nbsp;:</p>
  79. <pre>$ svn status projects/PDBParser</pre>
  80. <blockquote><p>? projects/PDBParser/README.html<br />
  81. ? projects/PDBParser/1SDK.pdb<br />
  82. ? projects/PDBParser/1CDLA.pdb<br />
  83. ? projects/PDBParser/COPYING<br />
  84. ? projects/PDBParser/PDBParser.py<br />
  85. ? projects/PDBParser/README<br />
  86. ! projects/PDBParser</p></blockquote>
  87. <p>Aïe, en fait il faut d'abord que ce dossier soit considéré comme une copie locale donc supprimons son contenu et récupérons ce que nous venons de placer sur le dépôt&nbsp;:</p>
  88. <pre>$ rm projects/PDBParser/*
  89. $ svn checkout file:///home/david/work/svn/repository/PDBParser/trunk projects/PDBParser</pre>
  90. <blockquote><p>A projects/PDBParser/README.html<br />
  91. A projects/PDBParser/1SDK.pdb<br />
  92. A projects/PDBParser/1CDLA.pdb<br />
  93. A projects/PDBParser/COPYING<br />
  94. A projects/PDBParser/PDBParser.py<br />
  95. A projects/PDBParser/README<br />
  96. Révision 1 extraite.</p></blockquote>
  97. <p>Ok, ça a marché, j'ai maintenant bien une copie locale de ce qui se trouve dans mon dépôt. Je peux commencer à travailler.</p>
  98. <p>Ah non, j'ai dit que le README.html était généré via README donc inutile de le stocker dans le dépôt&nbsp;:</p>
  99. <pre>$ svn propedit svn:ignore projects/PDBParser/</pre>
  100. <p>Préciser <strong>*.html</strong> dans le fichier qui s'ouvre et le message suivant confirme sa prise en compte&nbsp;:</p>
  101. <blockquote><p>Nouvelle valeur définie pour la propriété 'svn:ignore' sur 'projects/PDBParser'</p></blockquote>
  102. <p>On enchaîne avec sa suppression&nbsp;:</p>
  103. <pre>$ svn remove -m "Suppression de README.html car il est généré automatiquement" projects/PDBParser/README.html</pre>
  104. <blockquote><p>svn: Opération locale sans propagation (commit), pas de message</p></blockquote>
  105. <pre>$ svn commit -m "Mise à jour de la suppression de README.html" projects/PDBParser/</pre>
  106. <blockquote><p>Envoi projects/PDBParser<br />
  107. <br />
  108. Révision 2 propagée.</p></blockquote>
  109. <h2>Mise à jour et release</h2>
  110. <p>Maintenant que l'on a une copie locale fonctionnelle, passons à la modification du code. Prennez de bonnes habitudes en commençant par&nbsp;:</p>
  111. <pre>$ svn update projects/PDBParser</pre>
  112. <p>histoire d'être sûr d'avoir la dernière version du dépôt (dans notre cas c'est inutile mais si vous travaillez à plusieurs c'est primordial !).</p>
  113. <p>Ok, je vais maintenant ajouter à la documentation une ligne indiquant la façon dont celle-ci est générée. Vous pouvez vérifier ce qui a été modifié via&nbsp;:</p>
  114. <pre>$ svn diff projects/PDBParser</pre>
  115. <p>Le retour dépend de vos modifications, c'est en général assez verbeux, si vous souhaitez juste connaître les fichiers ayant été modifiés&nbsp;:</p>
  116. <pre>$ svn status projects/PDBParser</pre>
  117. <blockquote><p>M projects/PDBParser/README.html<br />
  118. M projects/PDBParser/README</p></blockquote>
  119. <p>Le fichier README.html a aussi été modifié mais il ne devrait pas être mis à jour dans le dépôt puisqu'il est normalement ignoré. Allons-y pour le <strong>commit</strong> du code ajouté&nbsp;:</p>
  120. <pre>$ svn commit -m "Ajout de la méthode de génération de la doc" projects/PDBParser/</pre>
  121. <blockquote><p>Envoi projects/PDBParser/README<br />
  122. Envoi projects/PDBParser/README.html<br />
  123. Transmission des données ..<br />
  124. Révision 3 propagée.</p></blockquote>
  125. <p>Manifestement la propriété ignore a été ignorée... étrange, bon soit passons à la suite, je suis sûr qu'un gentil gourou se manifestera en commentaires ;-).</p>
  126. <p>Vous pouvez à tout moment vérifier ce qu'il s'est passé sur votre projet grâce à&nbsp;:</p>
  127. <pre>$ svn log projects/PDBParser</pre>
  128. <p>Ok, j'ai une nouvelle version et j'ai décidé de faire une release de mon script. Il va pour cela falloir créer une branche de livraison et comme j'en suis à la version 3 on va l'appeler <strong>branche-livraison-3.1</strong> et la placer dans <strong>repository/branches</strong> (on commence par créer les répertoires en question)&nbsp;:</p>
  129. <pre>$ svn mkdir -m "Création des branches" file:///home/david/work/svn/repository/PDBParser/branches
  130. $ svn mkdir -m "Création de la branche de livraison 3.1" file:///home/david/work/svn/repository/PDBParser/branches/branche-livraison-3.1
  131. $ svn copy -m "Branche de livraison 3.1 créée après correction du README" file:///home/david/work/svn/repository/PDBParser/trunk file:///home/david/work/svn/repository/PDBParser/branches/branche-livraison-3.1</pre>
  132. <blockquote><p>Différence entre les branches et les livraisons&nbsp;?</p>
  133. <p>
  134. C'est assez simple, une branche est créée pour pouvoir être modifiée en cas de bug dans la version de la branche. En revanche, un tag de livraison est placé lorsque l'on veut connaître l'état du code à un instant t donné. Ainsi la branche 3.1 va être dans un premier temps taguée 3.1 puis s'il y a correction d'un bug mineur, pouvoir ensuite être taguée par exemple 3.1.1 et ainsi de suite.</p></blockquote>
  135. <p>Une fois la branche crée, il suffit de la taguer pour obtenir une livraison. On crée pour cela le répertoire de <strong>repository/tags</strong>, puis la marque de livraison que l'on appelera <strong>livraison-3.1</strong>&nbsp;:</p>
  136. <pre>$ svn mkdir -m "Création des tags" file:///home/david/work/svn/repository/PDBParser/tags
  137. $ svn copy -m "Livraison 3.1 créée après correction du README" file:///home/david/work/svn/repository/PDBParser/branches/branche-livraison-3.1 file:///home/david/work/svn/repository/PDBParser/tags/livraison-3.1</pre>
  138. <p>Il suffit ensuite de récupérer cette copie où l'on veut (créer le dossier avant) pour créer l'archive&nbsp;:</p>
  139. <pre>$ svn checkout file:///home/david/work/svn/repository/PDBParser/tags/livraison-3.1/trunk current/PDBParser-3.1</pre>
  140. <p>Et voila, plus qu'à compresser tout ça (sans les répertoires cachés ça fait plus pro).</p>
  141. <p>Bon après je pourrais écrire des pages et des pages sur comment corriger un bug dans une branche particulière, switcher entre vos différentes versions, etc... mais tout a déjà été résumé dans un excellent bouquin :-). Le prochain <a href="https://larlet.fr/david/biologeek/archives/20060219-critiques-de-livres-aux-editions-eyrolles/">livre commenté</a> sera très certainement Zope, troisième édition mais c'est un pavé de 800 pages donc ça prend du temps (surtout qu'il est plutôt dense !). D'ici là de nouveaux <a href="https://larlet.fr/david/biologeek/archives/20060617-traduction-francaise-de-la-documentation-de-django-le-framework-web-python/">tutoriaux pour le framework web Django</a> devraient arriver.</p>
  142. <h2>Export et sauvegardes</h2>
  143. <p>Je viens de me rendre compte qu'il manquait une chose essentielle&nbsp;: l'export du dépôt pour effectuer une sauvegarde&nbsp;! Avec Subversion, les propagations sont atomiques, les modifications sont soit complètement propagées, soit complètement annulées pour assurer la cohérence du système au même titre qu'une base de données. Mais attention justement, il ne faut pas faire une simple sauvegarde du dossier contenant le dépôt mais un <strong>dump</strong> du dépôt pour sauvegarder des données cohérentes même en cas de mise à jour par un autre utilisateur au même instant.</p>
  144. <p>Une sauvegarde complète s'effectue donc simplement&nbsp;:</p>
  145. <pre>$ svnadmin dump work/svn/repository/ &gt; svn_repos.20060707</pre>
  146. <blockquote><p>* Révision 0 déchargée.<br />
  147. * Révision 1 déchargée.<br />
  148. * Révision 2 déchargée.<br />
  149. * Révision 3 déchargée.<br />
  150. * Révision 4 déchargée.<br />
  151. * Révision 5 déchargée.<br />
  152. * Révision 6 déchargée.<br />
  153. * Révision 7 déchargée.<br />
  154. * Révision 8 déchargée.</p></blockquote>
  155. <p>Il est préférable pour des sauvegardes quotidiennes si vous avez un dépôt conséquent de faire des sauvegardes incrémentales (option <strong>--incremental</strong> de <strong>svnadmin dump</strong>) pour ne pas tout sauver à chaque fois.</p>
  156. <p>En cas de problème, il suffit de créer un nouveau dépôt et de recharger vos données&nbsp;:</p>
  157. <pre>$ svnadmin create /home/david/work/svn/repository2/
  158. $ svnadmin load /home/david/work/svn/repository2/repository2 &lt; svn_repos.20060707</pre>
  159. <p>Et toutes les transactions sont effectuées dans votre nouveau dépôt. N'oubliez jamais qu'on regrette de ne pas faire de sauvegarde que lorsqu'on perd ses données... un petit script automatique prend une heure à trouver/adapter/mettre en place mais peut sauver des heures et des heures de développement, et ça n'arrive malheureusement pas qu'aux autres&nbsp;! Au même titre que le célèbre "No test, no commit", je serais tenté d'écrire "No backup, no admin".</p>
  160. </div>
  161. </article>
  162. <footer>
  163. <h6 property="schema:datePublished">— 07/07/2006</h6>
  164. </footer>
  165. </section>
  166. <section>
  167. <div>
  168. <h3>Articles peut-être en rapport</h3>
  169. <ul>
  170. <li><a href="/david/biologeek/archives/20080723-ipheedsorg-une-version-iphone-pour-votre-blog/" title="Accès à ★ iPheeds.org, une version iPhone pour votre blog">★ iPheeds.org, une version iPhone pour votre blog</a></li>
  171. <li><a href="/david/biologeek/archives/20080211-astuces-et-bonnes-pratiques-django/" title="Accès à ★ Astuces et bonnes pratiques Django">★ Astuces et bonnes pratiques Django</a></li>
  172. <li><a href="/david/biologeek/archives/20070522-des-css-de-qualite/" title="Accès à ★ Des CSS de qualité">★ Des CSS de qualité</a></li>
  173. </ul>
  174. </div>
  175. </section>
  176. <section>
  177. <div id="comments">
  178. <h3>Commentaires</h3>
  179. <div class="comment" typeof="schema:UserComments">
  180. <p class="comment-meta">
  181. <span class="comment-author" property="schema:creator">S.F.</span> le <span class="comment-date" property="schema:commentTime">06/07/2006</span> :
  182. </p>
  183. <div class="comment-content" property="schema:commentText">
  184. <p>Ça peut paraître assez cruel, mais ... quel intérêt pour un usage personnel ? git, mercurial ou même bazaar-ng, des scm décentralisés, me semblent plus adaptés.</p>
  185. </div>
  186. </div>
  187. <div class="comment" typeof="schema:UserComments">
  188. <p class="comment-meta">
  189. <span class="comment-author" property="schema:creator">gigigan</span> le <span class="comment-date" property="schema:commentTime">06/07/2006</span> :
  190. </p>
  191. <div class="comment-content" property="schema:commentText">
  192. <p>je suis utilisateur de CVS pour phplister et subversion m'intéresse,<br />
  193. je suis impatient de lire la suite de l'article.</p>
  194. </div>
  195. </div>
  196. <div class="comment" typeof="schema:UserComments">
  197. <p class="comment-meta">
  198. <span class="comment-author" property="schema:creator">vdemeester</span> le <span class="comment-date" property="schema:commentTime">06/07/2006</span> :
  199. </p>
  200. <div class="comment-content" property="schema:commentText">
  201. <p>Ah mon dieux, david a les même lectures que moi !!!<br />
  202. Je confirme, livre petit en taille mais très complet en contenu :D</p>
  203. </div>
  204. </div>
  205. <div class="comment" typeof="schema:UserComments">
  206. <p class="comment-meta">
  207. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">07/07/2006</span> :
  208. </p>
  209. <div class="comment-content" property="schema:commentText">
  210. <p>@S.F. : je ne connaissais pas ces solutions mais quel intérêt par rapport à Subversion ? (j'ai rapidement consulté leurs sites sans trouver de raison vraiment transcendante). L'intérêt que je trouve à Subversion c'est que je pourrait tôt ou tard mettre un accès http ou ssh à mon dépôt si je souhaite rendre des projets publics. Voire même interfacer tout ça avec Trac si je veux un gestion des tiquets. Et puis ça me permet de me familiariser avec svn, ce qui me semble plus utile pour la suite.</p>
  211. </div>
  212. </div>
  213. <div class="comment" typeof="schema:UserComments">
  214. <p class="comment-meta">
  215. <span class="comment-author" property="schema:creator">PiTiLeZarD</span> le <span class="comment-date" property="schema:commentTime">07/07/2006</span> :
  216. </p>
  217. <div class="comment-content" property="schema:commentText">
  218. <p>L'intérêt d'un versionning system, c'est surtout le backup incrémental ! Quand tu code ou quand tu fais des docs ... A chaque mise à jour tu as la possibilité de revenir en arrière !<br />
  219. <br />
  220. Tu proposes alors à mon avis, ce qu'il manque c'est la création d'un repository a partir de rien et en deamon avec utilisateur qui va bien ;) J'ai fais un truc du genre au boulot, il faudrait que je le couche sur l'écran (on peut plus dire sur papier maintenant ...)<br />
  221. <br />
  222. En tout cas c'est intéressant ;)<br />
  223. </p>
  224. </div>
  225. </div>
  226. <div class="comment" typeof="schema:UserComments">
  227. <p class="comment-meta">
  228. <span class="comment-author" property="schema:creator">Nicolas Steinmetz</span> le <span class="comment-date" property="schema:commentTime">07/07/2006</span> :
  229. </p>
  230. <div class="comment-content" property="schema:commentText">
  231. <p>Merci pour avoir signalé l'existence de mon tutoriel sur subversion :-)</p>
  232. </div>
  233. </div>
  234. <div class="comment" typeof="schema:UserComments">
  235. <p class="comment-meta">
  236. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">07/07/2006</span> :
  237. </p>
  238. <div class="comment-content" property="schema:commentText">
  239. <p>@PiTiLeZarD : s/que je le couche sur l'écran/que je le blogue restons sérieux, on est dans le web2.0 ou bien ? :p<br />
  240. <br />
  241. @Nicolas : aucun soucis, c'est la suite naturelle de ce tutoriel.</p>
  242. </div>
  243. </div>
  244. <div class="comment" typeof="schema:UserComments">
  245. <p class="comment-meta">
  246. <span class="comment-author" property="schema:creator">Nicolas Steinmetz</span> le <span class="comment-date" property="schema:commentTime">07/07/2006</span> :
  247. </p>
  248. <div class="comment-content" property="schema:commentText">
  249. <p>Effectivement, ton billet est plus complet car mes projets de dev ne m'ont pas encore amené à avoir besoin de branches et tags... :-/<br />
  250. <br />
  251. Un jour, j'y arriverais ;-)</p>
  252. </div>
  253. </div>
  254. <div class="comment" typeof="schema:UserComments">
  255. <p class="comment-meta">
  256. <span class="comment-author" property="schema:creator">S.F.</span> le <span class="comment-date" property="schema:commentTime">08/07/2006</span> :
  257. </p>
  258. <div class="comment-content" property="schema:commentText">
  259. <p>L'intérêt de ces systèmes est qu'il est décentralisé et donc ne dépend pas d'un serveur. Ça veut dire que tu n'as pas de serveur à installer, que tu peux bosser sans connexion internet (vachement pratique pour coder dans le train, git diff et git commit sont 100% offline), et tu peux toujours les publier sur le net, comme le font entre autre cairo et dbus, et comme je vais le faire avec git pour mathusalem. Je ne sais pas s'il y a un équivalent à trac pour ces systèmes cependant (je ne m'y suis pas intéressé). Plusieurs contributeurs peuvent avoir leur propre dépôt local, et ensuite merger leurs modifications en récupérant le contenu des dépôts publics des autres contributeurs, en s'envoyant des patches, ou même sur un serveur central (c'est possible, en tout cas avec git)<br />
  260. <br />
  261. Ensuite, mercurial et bazaar sont écrits en python ;-)</p>
  262. </div>
  263. </div>
  264. <div class="comment" typeof="schema:UserComments">
  265. <p class="comment-meta">
  266. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">08/07/2006</span> :
  267. </p>
  268. <div class="comment-content" property="schema:commentText">
  269. <p>@Nicolas : non avant de le compléter je pensais que le mien était une introduction au tiens qui traite de Trac, bon maintenant on va dire qu'ils sont complémentaires :)<br />
  270. <br />
  271. @S.F. : intéressant, pas dans la cas précis où c'est juste pour une personne (donc peu de risque d'être offline de sa propre machine) mais pour certains projets et surtout certains développeurs ça peut être bien. Parce que si j'ai bien compris le principal intérêt c'est de pouvoir coder offline ?</p>
  272. </div>
  273. </div>
  274. <div class="comment" typeof="schema:UserComments">
  275. <p class="comment-meta">
  276. <span class="comment-author" property="schema:creator">Bruno Michel</span> le <span class="comment-date" property="schema:commentTime">08/07/2006</span> :
  277. </p>
  278. <div class="comment-content" property="schema:commentText">
  279. <p>@David : tu pars du principe qu'une personne n'a qu'une seule machine, mais ce n'est pas le cas de tout le monde. J'ai, par exemple, un ordinateur fixe et un ordinateur portable. Je n'ai pas toujours accès à mon fixe depuis mon ordinateur portable. Et inversement, mon ordinateur portable n'est que rarement allumé quand je suis sur mon ordinateur fixe. Par contre, avec un seule machine, utiliser svn ou un scm décentralisé revient au même...<br />
  280. <br />
  281. Sinon, pour Trac, il est possible de l'interfacer avec d'autres scm. Voir par là pour plus d'infos : <a href="http://projects.edgewall.com/trac/wiki/VersioningSystemBackend" title="http://projects.edgewall.com/trac/wiki/VersioningSystemBackend" rel="nofollow">projects.edgewall.com/tra...</a><br />
  282. </p>
  283. </div>
  284. </div>
  285. <div class="comment" typeof="schema:UserComments">
  286. <p class="comment-meta">
  287. <span class="comment-author" property="schema:creator">didine</span> le <span class="comment-date" property="schema:commentTime">13/07/2006</span> :
  288. </p>
  289. <div class="comment-content" property="schema:commentText">
  290. <p>Je voudrais installer SVN (sur Dapper biensûr) pour gérer le développement d'une application.<br />
  291. Comment pourrais-je faire (si SVN le permet) pour gérer les fichiers de DEV et ceux de PROD ?<br />
  292. Par exemple un serveur de développement (mes développeurs pourront updater et commiter leurs versions locales sur ce serveur) avec écriture seule sur le serveur de production depuis lequel mes clients (serveurs sur lesquels mon application tourne) pourront updater leurs versions (lecture seule).<br />
  293. <br />
  294. Merci :)</p>
  295. </div>
  296. </div>
  297. <div class="comment" typeof="schema:UserComments">
  298. <p class="comment-meta">
  299. <span class="comment-author" property="schema:creator">NiCoS</span> le <span class="comment-date" property="schema:commentTime">20/07/2006</span> :
  300. </p>
  301. <div class="comment-content" property="schema:commentText">
  302. <p>&quot;Comment pourrais-je faire (si SVN le permet) pour gérer les fichiers de DEV et ceux de PROD ?&quot;<br />
  303. <br />
  304. Via les branches/tags ?<br />
  305. <br />
  306. La version de dev = version courante du dépôt SVN<br />
  307. Version de prod = une branche du dépôt SVN<br />
  308. <br />
  309. Pour les machines de prod, elles font un checkout ou un export à partir de la branche qui les intéresse...<br />
  310. <br />
  311. </p>
  312. </div>
  313. </div>
  314. <div class="comment" typeof="schema:UserComments">
  315. <p class="comment-meta">
  316. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">20/07/2006</span> :
  317. </p>
  318. <div class="comment-content" property="schema:commentText">
  319. <p>Oups, j'avais oublié ce commentaire, merci NiCoS pour cette réponse pertinente.<br />
  320. <br />
  321. @Bruno Michel:<br />
  322. &gt; J'ai, par exemple, un ordinateur fixe et un ordinateur portable.<br />
  323. <br />
  324. Oui, c'est mon cas aussi, je vais regarder de plus près les solutions proposées.</p>
  325. </div>
  326. </div>
  327. <div class="comment" typeof="schema:UserComments">
  328. <p class="comment-meta">
  329. <span class="comment-author" property="schema:creator">Loïc d&#39;Anterroches</span> le <span class="comment-date" property="schema:commentTime">09/08/2006</span> :
  330. </p>
  331. <div class="comment-content" property="schema:commentText">
  332. <p>L'exclusion d'un fichier avec le propedit ne fonctionne que si le fichier n'est pas déjà dans le dépôt. Comme le .html est déjà dedans, il sera toujours inclu. Il faut d'abord le supprimer et le recréer sans l'inclure pour qu'ensuite il ne soit pas pris en compte.</p>
  333. </div>
  334. </div>
  335. <div class="comment" typeof="schema:UserComments">
  336. <p class="comment-meta">
  337. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">09/08/2006</span> :
  338. </p>
  339. <div class="comment-content" property="schema:commentText">
  340. <p>Merci pour cette précision Loïc, au plaisir de te lire :-).</p>
  341. </div>
  342. </div>
  343. <div class="comment" typeof="schema:UserComments">
  344. <p class="comment-meta">
  345. <span class="comment-author" property="schema:creator">L@u</span> le <span class="comment-date" property="schema:commentTime">14/11/2006</span> :
  346. </p>
  347. <div class="comment-content" property="schema:commentText">
  348. <p>Salut,<br />
  349. <br />
  350. Personellement, j'avais fait une petite étude des produits scm opensource ... et il y en a pas mal.<br />
  351. Finalement, j'ai choisi SVN car à l'époque (6 mois), c'était le produit le plus abouti, le plus stable, le plus diffusé, et le mieux intégré (plugin dans Eclipse, etc ...).<br />
  352. <br />
  353. Cependant, c'est loin d'être mon favori et j'adorerai bazaar avoir une plus grosse diffusion et plus de plugin et d'outil pour une meilleure IHM.<br />
  354. <br />
  355. Dans l'attente, SVN est pas mal (perso je n'ai pas besoin de commit sans connexion au serveur), et j'arrive à faire ce que je veux assez facilement.<br />
  356. </p>
  357. </div>
  358. </div>
  359. <div class="comment" typeof="schema:UserComments">
  360. <p class="comment-meta">
  361. <span class="comment-author" property="schema:creator">habib</span> le <span class="comment-date" property="schema:commentTime">12/04/2007</span> :
  362. </p>
  363. <div class="comment-content" property="schema:commentText">
  364. <p>Bonjour,<br />
  365. <br />
  366. je suis étudiant en rédaction technique, et je voulais savoir si on peut contourner un peu l'usage de svn pour une utilisation ds la rédaction technique, c à d quand plusieurs rédacteurs travail sur la meme doc notament en FM (framemaker) ou .odt , est ce qu'il ya possibilité de controler les versions...<br />
  367. <br />
  368. merci d'avance</p>
  369. </div>
  370. </div>
  371. <div class="comment" typeof="schema:UserComments">
  372. <p class="comment-meta">
  373. <span class="comment-author" property="schema:creator">David, biologeek</span> le <span class="comment-date" property="schema:commentTime">12/04/2007</span> :
  374. </p>
  375. <div class="comment-content" property="schema:commentText">
  376. <p>Bonjour,<br />
  377. <br />
  378. Il me semble que les .odt sont des simples archives (.tar ou .tar.gz je sais plus) donc ça doit être possible en réarchivant/désarchivant à chaque commit (avec des hooks particuliers pour automatiser). Enfin ça reste pas évident à mon avis...<br />
  379. <br />
  380. Si vous pouvez travailler sur du texte brut pour ensuite le mettre en forme c'est beaucoup plus simple.</p>
  381. </div>
  382. </div>
  383. <div class="comment" typeof="schema:UserComments">
  384. <p class="comment-meta">
  385. <span class="comment-author" property="schema:creator">La Case de l&#39;Onc&#39; Tom</span> le <span class="comment-date" property="schema:commentTime">24/04/2007</span> :
  386. </p>
  387. <div class="comment-content" property="schema:commentText">
  388. <!-- TB -->
  389. <p><strong>Livres : Javascript, Subversion, CSS</strong></p>
  390. <p>
  391. Je vous l&#8217;annonce, depuis janvier 2007 je suis boulimique. Boulimique mais d&#8217;informations, de connaissances et de savoir. S&#8217;il y a bien un univers qui ne pardonne pas à ceux qui se contentent des acquis, c&#8217;est bien celui d&#82...</p>
  392. </div>
  393. </div>
  394. <div class="comment" typeof="schema:UserComments">
  395. <p class="comment-meta">
  396. <span class="comment-author" property="schema:creator">BastNic&#39;s Blog</span> le <span class="comment-date" property="schema:commentTime">14/06/2007</span> :
  397. </p>
  398. <div class="comment-content" property="schema:commentText">
  399. <!-- TB -->
  400. <p><strong>Utilisation de bazaar par l'exemple, mise en place d'un répertoire partagé de travail sur Code Igniter</strong></p>
  401. <p>Bazaar est un gestionnaire de version, un VCS en anglais : Version Control System. Si jamais vous ignorez ce qu'est un gestionnaire de version je ne peux que vous conseiller de vous renseigner sur ce qu'est un gestionnaire de version (la définition</p>
  402. </div>
  403. </div>
  404. <div class="comment" typeof="schema:UserComments">
  405. <p class="comment-meta">
  406. <span class="comment-author" property="schema:creator">Ciccio</span> le <span class="comment-date" property="schema:commentTime">09/02/2009</span> :
  407. </p>
  408. <div class="comment-content" property="schema:commentText">
  409. <p>Ici (<a href="http://www.sourceslist.netsons.org">http://www.sourceslist.netsons.org</a>), vous pouvez trouver un site entièrement consacré aux sources.list pour Ubuntu, Debian, Linux Mint, OpenSuse. Chaque sources.list contient plus de 180 dépôts. En outre il y a une version textual e une version debian qui est mis à jour automatiquement chaque fois que vous ajourez votre ditro. (sudo apt-get dist-upgrade)</p>
  410. </div>
  411. </div>
  412. <div class="comment" typeof="schema:UserComments">
  413. <p class="comment-meta">
  414. <span class="comment-author" property="schema:creator">Alex</span> le <span class="comment-date" property="schema:commentTime">11/04/2009</span> :
  415. </p>
  416. <div class="comment-content" property="schema:commentText">
  417. <p>L&#39;url è changé: <a href="http://www.sourceslist.eu">http://www.sourceslist.eu</a></p>
  418. </div>
  419. </div>
  420. </div>
  421. </section>
  422. <footer>
  423. <nav>
  424. <p>
  425. <small>
  426. Je réponds quasiment toujours aux <a href="m&#x61;ilto:d&#x61;vid%40l&#x61;rlet&#46;fr" title="Envoyer un email">emails</a> (<a href="/david/signature/" title="Ma signature actuelle avec possibilité de chiffrement">signés</a>) et vous pouvez me rencontrer à Montréal. <span class="more-infos">N’hésitez pas à <a href="/david/log/" title="Être tenu informé des mises à jour">vous abonner</a> pour être tenu informé des publications récentes.</span>
  427. </small>
  428. </p>
  429. </nav>
  430. </footer>
  431. </div>
  432. <script src="/static/david/js/larlet-david-3ee43f.js" data-no-instant></script>
  433. <script data-no-instant>InstantClick.init()</script>
  434. </body>
  435. </html>