section_outils_svn.tex 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. \section{Outils de gestion de code source (svn)}
  2. \begin{frame}{\large \insertsection}
  3. \begin{block}{Subversion}
  4. \begin{itemize}
  5. \item système de gestion de code source
  6. \item journalisation
  7. \item travail collaboratif
  8. \item serveur dédié au module projets L3 : \url{https://193.49.201.37/svn/<projet>}
  9. \end{itemize}
  10. \end{block}
  11. \end{frame}
  12. \begin{frame}{\large \insertsection}
  13. \begin{block}{Subversion : principe}
  14. \begin{itemize}
  15. \item système centralisé
  16. \item dépôt sur un serveur
  17. \item modifications via des copies locales
  18. \end{itemize}
  19. \centering
  20. \includegraphics[width=7cm,frame]{images/SVN_Server_Client_Structure.png}
  21. \end{block}
  22. \end{frame}
  23. \begin{frame}{\large \insertsection}
  24. \begin{block}{Subversion : quelques notions}
  25. \begin{itemize}
  26. \item \textbf{dépôt (repository) :} données et méta-données
  27. du projet, sur le serveur
  28. \item \textbf{révision (revision) :} numéro de modification du dépôt
  29. \item \textbf{copie de travail (working copy) :} copie locale du
  30. projet, sur laquelle un intervenant peut travailler
  31. \end{itemize}
  32. \end{block}
  33. \end{frame}
  34. \begin{frame}{\large \insertsection}
  35. \begin{block}{Subversion : quelques opérations}
  36. \begin{itemize}
  37. \item \textbf{créer (create) :} créé un dépôt (fait par
  38. l'administrateur)
  39. \item \textbf{récupérer (checkout) :} récupère les données du
  40. projet dans une copie de travail
  41. \item \textbf{mettre à jour (update) :} met à jour la copie de travail en
  42. récupérant la dernière révision du dépôt
  43. \item \textbf{publier (commit) :} envoie, dans le dépôt, les modifications
  44. réalisées sur la copie de travail
  45. \item \textbf{ajouter (add) :} demande d’ajouter, dans le dépôt,
  46. un fichier/répertoire de la copie de travail
  47. \item \textbf{supprimer (delete) :} demande de supprimer un
  48. fichier/répertoire
  49. \item \textbf{résoudre (resolve) :} résout un conflit sur la copie
  50. de travail
  51. \end{itemize}
  52. \end{block}
  53. \end{frame}
  54. \begin{frame}{\large \insertsection}
  55. \begin{block}{Subversion : résumé de l'utilisation d'un dépôt SVN}
  56. \begin{itemize}
  57. \item pour récupérer le dépôt : checkout
  58. \item pour mettre à jour le dépôt :
  59. \begin{itemize}
  60. \item modifier la copie locale, add, delete\dots
  61. \item update
  62. \item resolve (si besoin)
  63. \item commit
  64. \end{itemize}
  65. \end{itemize}
  66. \end{block}
  67. \end{frame}
  68. \begin{frame}{\large \insertsection}
  69. \begin{block}{Subversion : bonnes pratiques}
  70. \begin{itemize}
  71. \item supprimer les fichiers en utilisant la commande svn delete
  72. \item ne pas mettre, sur le dépôt, des fichiers générés
  73. automatiquement
  74. \item avant de publier une modification, vérifier que le code reste
  75. valide
  76. \item éviter les conflits potentiels en organisant le travail de telle
  77. sorte que les intervenants aient à travailler sur des fichiers
  78. différents
  79. \end{itemize}
  80. \end{block}
  81. \end{frame}
  82. \begin{frame}[fragile]{\large \insertsection}
  83. \begin{block}{Subversion : configuration du client svn avec proxy}
  84. ~\\
  85. \begin{minted}[frame=single,label={\~~/.subversion/servers}]{bash}
  86. http-proxy-host=...
  87. http-proxy-port=...
  88. http-proxy-username=...
  89. http-proxy-password=...
  90. \end{minted}
  91. \end{block}
  92. \end{frame}
  93. %http-proxy-host=192.168.22.62
  94. %http-proxy-port=3128
  95. %http-proxy-username=tseptemb
  96. %http-proxy-password=septembre2013
  97. \begin{frame}{\large \insertsection}
  98. \begin{block}{Subversion : checkout (avec eclipse+subversive)}
  99. créer un nouveau projet de type svn \\~\\
  100. \centering
  101. \includegraphics[width=7cm]{images/svn_co1.png}
  102. \end{block}
  103. \end{frame}
  104. \begin{frame}{\large \insertsection}
  105. \begin{block}{Subversion : checkout (avec eclipse+subversive)}
  106. ~\\ ... \\
  107. \centering
  108. \includegraphics[width=7cm]{images/svn_co2.png}
  109. \end{block}
  110. \end{frame}
  111. \begin{frame}{\large \insertsection}
  112. \begin{block}{Subversion : checkout (avec eclipse+subversive)}
  113. spécifier le dépot à récupérer \\~\\
  114. \centering
  115. \includegraphics[width=6cm]{images/svn_co3.png}
  116. \end{block}
  117. \end{frame}
  118. \begin{frame}{\large \insertsection}
  119. \begin{block}{Subversion : checkout (avec eclipse+subversive)}
  120. ~\\ ... \\
  121. \centering
  122. \includegraphics[width=7cm]{images/svn_co4.png}
  123. \end{block}
  124. \end{frame}
  125. \begin{frame}{\large \insertsection}
  126. \begin{block}{Subversion : checkout (avec eclipse+subversive)}
  127. demander de créer un projet eclipse correspondant \\~\\
  128. \centering
  129. \includegraphics[width=8cm]{images/svn_co5.png}
  130. \end{block}
  131. \end{frame}
  132. \begin{frame}{\large \insertsection}
  133. \begin{block}{Subversion : checkout (avec eclipse+subversive)}
  134. ~\\ ... \\
  135. \centering
  136. \includegraphics[width=7cm]{images/svn_co6.png}
  137. \end{block}
  138. \end{frame}
  139. \begin{frame}{\large \insertsection}
  140. \begin{block}{Subversion : checkout (avec eclipse+subversive)}
  141. résultat \\~\\
  142. \centering
  143. \includegraphics[width=10cm]{images/svn_co7.png}
  144. \end{block}
  145. \end{frame}
  146. \begin{frame}{\large \insertsection}
  147. \begin{block}{Subversion : commit (avec eclipse+subversive)}
  148. \texttt{Team > Commit} \\~\\
  149. \centering
  150. \includegraphics[width=7cm]{images/svn_ci1.png}
  151. \end{block}
  152. \end{frame}
  153. \begin{frame}{\large \insertsection}
  154. \begin{block}{Subversion : commit (avec eclipse+subversive)}
  155. résultat \\~\\
  156. \centering
  157. \includegraphics[width=10cm]{images/svn_ci2.png}
  158. \end{block}
  159. \end{frame}
  160. \begin{frame}[fragile]{\large \insertsection}
  161. \begin{block}{Subversion : scénario type d'un conflit}
  162. \begin{multicols}{2}
  163. \begin{enumerate}
  164. \scriptsize
  165. \item initialement tout le monde est à jour :\\
  166. \begin{tikzpicture}[thick,font=\scriptsize,align=center]
  167. \node [draw,fill=white, rounded corners=1mm] (D) at (0, 1) {dépôt r2};
  168. \node [draw,fill=white, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r2};
  169. \node [draw,fill=white, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2};
  170. \draw [>=latex, thick] (C1) to (D) {};
  171. \draw [>=latex, thick] (C2) to (D) {};
  172. \end{tikzpicture}%
  173. \item Ginette et Roger modifient un même fichier :\\
  174. \begin{tikzpicture}[thick,font=\scriptsize,align=center]
  175. \node [draw,fill=white, rounded corners=1mm] (D) at (0, 1) {dépôt r2};
  176. \node [draw,fill=red!30, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r2'};
  177. \node [draw,fill=red!30, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2''};
  178. \draw [>=latex, thick] (C1) to (D) {};
  179. \draw [>=latex, thick] (C2) to (D) {};
  180. \end{tikzpicture}%
  181. \item Ginette fait un update puis un commit :\\
  182. \begin{tikzpicture}[thick,font=\scriptsize,align=center]
  183. \node [draw,fill=red!30, rounded corners=1mm] (D) at (0, 1) {dépôt r3};
  184. \node [draw,fill=red!30, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r3};
  185. \node [draw,fill=white, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2''};
  186. \draw [<->,>=latex, thick] (C1) to (D) {};
  187. \draw [>=latex, thick] (C2) to (D) {};
  188. \end{tikzpicture}%
  189. \item Roger fait un update, il y a un conflit :\\
  190. \begin{tikzpicture}[thick,font=\scriptsize,align=center]
  191. \node [draw,fill=white, rounded corners=1mm] (D) at (0, 1) {dépôt r3};
  192. \node [draw,fill=white, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r3};
  193. \node [draw,fill=red!30, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2*};
  194. \draw [>=latex, thick] (C1) to (D) {};
  195. \draw [<-,>=latex, thick] (C2) to (D) {};
  196. \end{tikzpicture}%
  197. \item Roger doit modifier le fichier puis resolve puis commit :\\
  198. \begin{tikzpicture}[thick,font=\scriptsize,align=center]
  199. \node [draw,fill=red!30, rounded corners=1mm] (D) at (0, 1) {dépôt r4};
  200. \node [draw,fill=white, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r3};
  201. \node [draw,fill=red!30, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r4};
  202. \draw [>=latex, thick] (C1) to (D) {};
  203. \draw [->,>=latex, thick] (C2) to (D) {};
  204. \end{tikzpicture}%
  205. \end{enumerate}
  206. \end{multicols}
  207. \end{block}
  208. \end{frame}
  209. \begin{frame}{\large \insertsection}
  210. \begin{block}{Subversion : détection d'un conflit}
  211. \begin{itemize}
  212. \item après un update
  213. \item création de 4 fichiers :
  214. \begin{itemize}
  215. \item fichier avec les modifs locales ("\texttt{readme.txt.mine}")
  216. \item fichier avec les modifs du dépôt ("\texttt{readme.txt.r3}")
  217. \item fichier à la précédente révision ("\texttt{readme.txt.r2}")
  218. \item fichier de résolution ("\texttt{readme.txt}")
  219. \end{itemize}
  220. \end{itemize}
  221. \centering
  222. \includegraphics[width=10cm]{images/svn_conflit1.png}
  223. \end{block}
  224. \end{frame}
  225. \begin{frame}{\large \insertsection}
  226. \begin{block}{Subversion : résolution d'un conflit}
  227. \begin{itemize}
  228. \item éditer le fichier (\texttt{Team > Resolve conflicts}) \\
  229. \includegraphics[width=10cm]{images/svn_conflit2.png}
  230. \end{itemize}
  231. \end{block}
  232. \end{frame}
  233. \begin{frame}{\large \insertsection}
  234. \begin{block}{Subversion : résolution d'un conflit}
  235. \begin{itemize}
  236. \item resolve (\texttt{Team > Mark as merged}) \\
  237. \includegraphics[width=10cm]{images/svn_conflit3.png}
  238. \item update, commit
  239. \end{itemize}
  240. \end{block}
  241. \end{frame}