123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- \section{Outils de gestion de code source (git)}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion}
- \begin{itemize}
- \item système de gestion de code source
- \item journalisation
- \item travail collaboratif
- \item serveur dédié au module projets L3 : \url{https://193.49.201.37/svn/<projet>}
- \end{itemize}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : principe}
- \begin{itemize}
- \item système centralisé
- \item dépôt sur un serveur
- \item modifications via des copies locales
- \end{itemize}
- \centering
- \includegraphics[width=7cm,frame]{images/SVN_Server_Client_Structure.png}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : quelques notions}
- \begin{itemize}
- \item \textbf{dépôt (repository) :} données et méta-données
- du projet, sur le serveur
- \item \textbf{révision (revision) :} numéro de modification du dépôt
- \item \textbf{copie de travail (working copy) :} copie locale du
- projet, sur laquelle un intervenant peut travailler
- \end{itemize}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : quelques opérations}
- \begin{itemize}
- \item \textbf{créer (create) :} créé un dépôt (fait par
- l'administrateur)
- \item \textbf{récupérer (checkout) :} récupère les données du
- projet dans une copie de travail
- \item \textbf{mettre à jour (update) :} met à jour la copie de travail en
- récupérant la dernière révision du dépôt
- \item \textbf{publier (commit) :} envoie, dans le dépôt, les modifications
- réalisées sur la copie de travail
- \item \textbf{ajouter (add) :} demande d’ajouter, dans le dépôt,
- un fichier/répertoire de la copie de travail
- \item \textbf{supprimer (delete) :} demande de supprimer un
- fichier/répertoire
- \item \textbf{résoudre (resolve) :} résout un conflit sur la copie
- de travail
- \end{itemize}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : résumé de l'utilisation d'un dépôt SVN}
- \begin{itemize}
- \item pour récupérer le dépôt : checkout
- \item pour mettre à jour le dépôt :
- \begin{itemize}
- \item modifier la copie locale, add, delete\dots
- \item update
- \item resolve (si besoin)
- \item commit
- \end{itemize}
- \end{itemize}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : bonnes pratiques}
- \begin{itemize}
- \item supprimer les fichiers en utilisant la commande svn delete
- \item ne pas mettre, sur le dépôt, des fichiers générés
- automatiquement
- \item avant de publier une modification, vérifier que le code reste
- valide
- \item éviter les conflits potentiels en organisant le travail de telle
- sorte que les intervenants aient à travailler sur des fichiers
- différents
- \end{itemize}
- \end{block}
- \end{frame}
- \begin{frame}[fragile]{\large \insertsection}
- \begin{block}{Subversion : configuration du client svn avec proxy}
- ~\\
- \begin{minted}[frame=single,label={\~~/.subversion/servers}]{bash}
- http-proxy-host=...
- http-proxy-port=...
- http-proxy-username=...
- http-proxy-password=...
- \end{minted}
- \end{block}
- \end{frame}
- %http-proxy-host=192.168.22.62
- %http-proxy-port=3128
- %http-proxy-username=tseptemb
- %http-proxy-password=septembre2013
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : checkout (avec eclipse+subversive)}
- créer un nouveau projet de type svn \\~\\
- \centering
- \includegraphics[width=7cm]{images/svn_co1.png}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : checkout (avec eclipse+subversive)}
- ~\\ ... \\
- \centering
- \includegraphics[width=7cm]{images/svn_co2.png}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : checkout (avec eclipse+subversive)}
- spécifier le dépot à récupérer \\~\\
- \centering
- \includegraphics[width=6cm]{images/svn_co3.png}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : checkout (avec eclipse+subversive)}
- ~\\ ... \\
- \centering
- \includegraphics[width=7cm]{images/svn_co4.png}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : checkout (avec eclipse+subversive)}
- demander de créer un projet eclipse correspondant \\~\\
- \centering
- \includegraphics[width=8cm]{images/svn_co5.png}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : checkout (avec eclipse+subversive)}
- ~\\ ... \\
- \centering
- \includegraphics[width=7cm]{images/svn_co6.png}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : checkout (avec eclipse+subversive)}
- résultat \\~\\
- \centering
- \includegraphics[width=10cm]{images/svn_co7.png}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : commit (avec eclipse+subversive)}
- \texttt{Team > Commit} \\~\\
- \centering
- \includegraphics[width=7cm]{images/svn_ci1.png}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : commit (avec eclipse+subversive)}
- résultat \\~\\
- \centering
- \includegraphics[width=10cm]{images/svn_ci2.png}
- \end{block}
- \end{frame}
- \begin{frame}[fragile]{\large \insertsection}
- \begin{block}{Subversion : scénario type d'un conflit}
- \begin{multicols}{2}
- \begin{enumerate}
- \scriptsize
- \item initialement tout le monde est à jour :\\
- \begin{tikzpicture}[thick,font=\scriptsize,align=center]
- \node [draw,fill=white, rounded corners=1mm] (D) at (0, 1) {dépôt r2};
- \node [draw,fill=white, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r2};
- \node [draw,fill=white, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2};
- \draw [>=latex, thick] (C1) to (D) {};
- \draw [>=latex, thick] (C2) to (D) {};
- \end{tikzpicture}%
- \item Ginette et Roger modifient un même fichier :\\
- \begin{tikzpicture}[thick,font=\scriptsize,align=center]
- \node [draw,fill=white, rounded corners=1mm] (D) at (0, 1) {dépôt r2};
- \node [draw,fill=red!30, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r2'};
- \node [draw,fill=red!30, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2'};
- \draw [>=latex, thick] (C1) to (D) {};
- \draw [>=latex, thick] (C2) to (D) {};
- \end{tikzpicture}%
- \item Ginette fait un update puis un commit :\\
- \begin{tikzpicture}[thick,font=\scriptsize,align=center]
- \node [draw,fill=red!30, rounded corners=1mm] (D) at (0, 1) {dépôt r3};
- \node [draw,fill=red!30, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r3};
- \node [draw,fill=white, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2'};
- \draw [<->,>=latex, thick] (C1) to (D) {};
- \draw [>=latex, thick] (C2) to (D) {};
- \end{tikzpicture}%
- \item Roger fait un update, il y a un conflit :\\
- \begin{tikzpicture}[thick,font=\scriptsize,align=center]
- \node [draw,fill=white, rounded corners=1mm] (D) at (0, 1) {dépôt r3};
- \node [draw,fill=white, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r3};
- \node [draw,fill=red!30, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r2*};
- \draw [>=latex, thick] (C1) to (D) {};
- \draw [<-,>=latex, thick] (C2) to (D) {};
- \end{tikzpicture}%
- \item Roger doit modifier le fichier puis resolve puis commit :\\
- \begin{tikzpicture}[thick,font=\scriptsize,align=center]
- \node [draw,fill=red!30, rounded corners=1mm] (D) at (0, 1) {dépôt r6};
- \node [draw,fill=white, rounded corners=1mm] (C1) at (-1.2, 0) {copie Ginette r3};
- \node [draw,fill=red!30, rounded corners=1mm] (C2) at (1.2, 0) {copie Roger r4};
- \draw [>=latex, thick] (C1) to (D) {};
- \draw [->,>=latex, thick] (C2) to (D) {};
- \end{tikzpicture}%
- \end{enumerate}
- \end{multicols}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : détection d'un conflit}
- \begin{itemize}
- \item après un update
- \item création de 4 fichiers :
- \begin{itemize}
- \item fichier avec les modifs locales ("\texttt{readme.txt.mine}")
- \item fichier avec les modifs du dépôt ("\texttt{readme.txt.r3}")
- \item fichier à la précédente révision ("\texttt{readme.txt.r2}")
- \item fichier de résolution ("\texttt{readme.txt}")
- \end{itemize}
- \end{itemize}
- \centering
- \includegraphics[width=10cm]{images/svn_conflit1.png}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : résolution d'un conflit}
- \begin{itemize}
- \item éditer le fichier (\texttt{Team > Resolve conflicts}) \\
- \includegraphics[width=10cm]{images/svn_conflit2.png}
- \end{itemize}
- \end{block}
- \end{frame}
- \begin{frame}{\large \insertsection}
- \begin{block}{Subversion : résolution d'un conflit}
- \begin{itemize}
- \item resolve (\texttt{Team > Mark as merged}) \\
- \includegraphics[width=10cm]{images/svn_conflit3.png}
- \item update, commit
- \end{itemize}
- \end{block}
- \end{frame}
|