explications_theoriques.tex 3.87 KB
Newer Older
Rémy Huet's avatar
Rémy Huet committed
1 2
\begin{frame}
	\frametitle{Principe de la gestion non linéaire}
3 4 5 6 7 8 9 10 11 12 13 14 15 16

	Jusqu'ici, on n'a fait que de la gestion linéaire.
	Tous les commits étaient sur {\bf une unique branche} (master)

	En pratique, tous les commits ne sont pas nécessairement sur la même branche de l'arbre.

	\begin{figure}[h]
		\centering
		\input{src/tikz/arbre.tex}
	\end{figure}

	{\it Le sens des flèches n’est pas chronologique !
	Chaque commit pointe vers son père.}

Rémy Huet's avatar
Rémy Huet committed
17 18
\end{frame}

19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
\begin{frame}[fragile]{Gestion non linéaire}
	\begin{block}{}
		\centering
		\enquote{Mais pourquoi est-ce qu'on fait ça ?}
	\end{block}

	\bigskip
	\Pause

	Une divergence s'effectue à partir d'un certain point : tout le travail précédent l'instant de divergence est commun à toutes les branches postérieures à la création de la divergence.

	\medskip

	On peut donner quelques raisons \enquote{générales} sur l'utilité des divergences :
	\begin{itemize}
		\item isoler les travaux indépendants en cours
		\item traiter les problèmes d'intégration séparément
		\item enregistrer des versions spécifiques
	\end{itemize}

	En pratique, l'utilisation des divergences dépend beaucoup du type de projet, de la répartition des travaux entre les contributeurs et des méthodes de travail adoptées.
\end{frame}

Rémy Huet's avatar
Rémy Huet committed
42 43
\begin{frame}
	\frametitle{Création d'une divergence}
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
	\framesubtitle{Analyse}

	\begin{figure}[h]
		\centering
		\input{src/tikz/arbre.tex}
	\end{figure}

	\begin{itemize}
		\item C2 et C3 ont tous les deux C1 comme père
		\item C2 et C3 introduisent des modifications différentes après C1
		\item ici, C2 et C3 sont sur \textbf{deux branches différentes de C1}
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Création d'une divergence}
	\framesubtitle{Analyse}

	\begin{figure}[h]
		\centering
		\input{src/tikz/arbre.tex}
	\end{figure}

	\begin{itemize}
		\item C4 et C5 ont tous les deux C3 comme père
		\item C4 et C5 introduisent des modifications différentes après C3
		\item C4 est sur une branche \textbf{différente de C3}
		\item C5 est sur \textbf{la même branche que C3}
	\end{itemize}
Rémy Huet's avatar
Rémy Huet committed
73 74 75 76
\end{frame}

\begin{frame}
	\frametitle{Création d'une divergence}
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
	\framesubtitle{Mise en contexte}

	\begin{block}{}
	Alice, Bob et Charlie travaillent sur un rapport ensemble et décident d'utiliser Git pour gérer l'avancée de leur travail.
	\end{block}

	\begin{figure}[h]
		\centering
		\input{src/tikz/arbre.tex}
	\end{figure}

	\begin{itemize}
		\item Alice met en place la structure globale du rapport avec C0 et C1
		\Pause
		\item Bob se charge de la partie 1, il crée une nouvelle branche dédiée à sa partie et ajoute C2
	\end{itemize}
Rémy Huet's avatar
Rémy Huet committed
93 94 95 96
\end{frame}

\begin{frame}
	\frametitle{Création d'une divergence}
97 98 99 100 101 102 103 104 105 106 107 108
	\framesubtitle{Mise en contexte}

	\begin{figure}[h]
		\centering
		\input{src/tikz/arbre.tex}
	\end{figure}

	\begin{itemize}
		\item Charlie s'occupe de la partie 2.1 : il ajoute la structure de la partie 2 avec C3 sur une nouvelle branche, et avance sa partie avec C5
		\Pause
		\item Alice rédige la partie 2.2 : elle crée une nouvelle branche à partir de C3 pour récupérer la structure de la partie 2, puis ajoute C4 et C6
	\end{itemize}
Rémy Huet's avatar
Rémy Huet committed
109 110 111 112
\end{frame}

\begin{frame}
	\frametitle{Fusion !}
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131

	\begin{figure}[h]
		\centering
		\input{src/tikz/arbre.tex}
	\end{figure}

	\begin{block}{}
		\centering
		\enquote{Attends un peu, et C7 il fait quoi ? Et pourquoi il a deux pères ?}
	\end{block}

	\Pause

	\begin{itemize}
		\item C7 est un commit un peu spécial : c'est un \textbf{commit de fusion};
		\item Objectif : intégrer les modifications de la branche bleue dans la branche verte (Alice fusionne ses modifications dans la branche de Charlie);
		\item Il a bien \textbf{deux} pères (c'est la seule situation où ça arrive);
		\item \textbf{Attention !} Si C5 et C6 portent des modifications qui se recouvrent, la fusion va créer des \textbf{conflits} qu'il faudra régler avant de créer C7.
	\end{itemize}
Rémy Huet's avatar
Rémy Huet committed
132
\end{frame}