diff --git a/branchmerge.tex b/branchmerge.tex index 533f432360f696800b4b9df340091084fbb48804..964c3a911a59a288fccb2a77088f80b92823635c 100644 --- a/branchmerge.tex +++ b/branchmerge.tex @@ -1,6 +1,6 @@ %====================================================================== -\section{Fusion de branches} +\section{Réconciliation de branches} %====================================================================== @@ -27,17 +27,17 @@ \frame{\frametitle{Introduction} \begin{itemize} \item - À ce stage, il est nécessaire de fusionner les deux branches + À ce stage, il est nécessaire de réconcilier les deux branches \item - Il existe plusieurs commandes permettant d'obtenir la fusion + Il existe plusieurs commandes permettant d'obtenir le résultat souhaitée \begin{itemize} \item - la commande \ex{git merge}, réalisant effectivement une fusion - des branches concernées + la commande \ex{git merge}, réalisant une fusion des branches + concernées \item la commande \ex{git rebase}, permettant de réécrire l'historique - et d'obtenir un résultat différent, mais proche + et d'obtenir un résultat similaire, mais différent \end{itemize} \end{itemize} } @@ -51,8 +51,8 @@ \frame{\frametitle{Introduction} \begin{itemize} \item - C'est la commande la plus naturelle à utiliser pour effectuer une - fusion + La commande \ex{git merge} effectue une \emph{fusion}, l'opération + la plus naturelle à réaliser pour réconcilier les branches \item Sur le principe, quelques étapes sont nécessaires pour sa mise en \oe{}uvre @@ -100,11 +100,11 @@ disponibilité de plusieurs algorithmes choisis suivant la configuration de départ \item - Suivant ces configurations, une fusion peut occasionner + Suivant cette configuration, une fusion peut occasionner \begin{itemize} \item un simple déplacement du pointeur représentant une branche - (typiquement si la branche de base n'a pas été modifiée) + (typiquement si l'une des branches n'a pas été modifiée) \item la création d'un nouveau \emph{commit} (s'il y a eu des modifications sur les 2 branches) @@ -128,6 +128,8 @@ \item Un des usages fait de cette commande est de garder une nouvelle branche synchronisée avec la branche dont elle est issue + (permettant ainsi de cumuler les \emph{commits} réalisés dans les + deux branches) \end{itemize} } @@ -136,17 +138,13 @@ \frame{\frametitle{Une alternative à la fusion} \begin{itemize} \item - Pour assurer cette synchronisation - \begin{itemize} - \item - la commande \ex{rebase} est doit être appliquée régulièrement - pour que la nouvelle branche « profite » aussi des - \emph{commits} réalisés dans la branche de départ - \item - la fusion finale est généralement facilitée, la synchronisation - régulière permettant de régler les éventuels conflits au fur et - à mesure - \end{itemize} + Pour assurer cette synchronisation, la commande \ex{rebase} doit + être appliquée régulièrement pour que la nouvelle branche + «~profite~» aussi des \emph{commits} réalisés dans la branche de + départ + \item + La fusion finale est facilitée, la synchronisation régulière + permettant de régler les éventuels conflits au fur et à mesure \end{itemize} } @@ -158,8 +156,8 @@ La commande \ex{rebase} \begin{enumerate} \item - cherche l'ancêtre commun aux deux branches considérées~: ce sera - le premier \emph{commit} à réécrire + cherche l'ancêtre commun aux deux branches considérées~: c'est à + partir de cet ancêtre que les \emph{commits} seront réécrits \item réécrit chacun des commits de la nouvelle branche pour qu'ils ne soient plus relatifs à l'ancêtre commun mais au dernier commit @@ -204,7 +202,7 @@ \begin{itemize} \item après un \ex{merge}, c'est la branche de départ qui contient - l'intégralité des \emph{commits} réalisés (branche de base + + l'intégralité des \emph{commits} réalisés (branche de départ + nouvelle fonctionnalité) \item après un \ex{rebase}, c'est la nouvelle branche qui contient @@ -223,8 +221,9 @@ \begin{itemize} \item Il faut bien comprendre que le processus de réécriture de - \ex{rebase} fait que tous les \emph{commits} initiaux sont - réécrits, et qu'ils changent donc de SHA-1 en particulier + \ex{rebase} fait que tous les \emph{commits} initiaux de la + nouvelle branche sont réécrits, et qu'ils changent donc de SHA-1 + en particulier \item Les anciens \emph{commits} n'existent donc plus, ce qui pose problème si @@ -248,7 +247,7 @@ \item Ainsi, \ex{rebase} ne pose aucun problème dans les situations où, typiquement - \begin{itemize} + \begin{enumerate} \item une nouvelle branche est définie pour implanter une nouvelle fonctionnalité @@ -256,7 +255,7 @@ cette nouvelle branche reste locale à un utilisateur et n'est pas partagée tant que la nouvelle fonctionnalité n'est pas finalisée et n'est pas fusionnée avec un \ex{merge} - \end{itemize} + \end{enumerate} \end{itemize} } @@ -265,12 +264,20 @@ \frame{\frametitle{Conclusion} \begin{itemize} \item - Généralement, les branches sont utilisées localement par un - développeur pour implanter une nouvelle fonctionnalité, corriger - un bug, etc. + Généralement, les nouvelles branches sont utilisées localement par + un développeur pour implanter une nouvelle fonctionnalité, + corriger un bug, etc. \item - C'est d'ailleurs le comportement par défaut de Git concernant les - branches + D'ailleurs, le comportement par défaut de Git est maintenant de ne + synchroniser que la branche récupérée au moment du clonage (un + \ex{push} ne considère donc pas les nouvelles branches locales) + \end{itemize} +} + +%====================================================================== + +\frame{\frametitle{Conclusion} + \begin{itemize} \item Les \ex{rebase}, utilisés régulièrement, permettent de récupérer tous les \emph{commits} ajoutés à la branche de départ et de