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}