From fb67807310940782e64afdc41fe284d982c7b7a4 Mon Sep 17 00:00:00 2001
From: Philippe Dosch <Philippe.Dosch@loria.fr>
Date: Tue, 18 Mar 2025 18:39:55 +0100
Subject: [PATCH] Restructuration de la partie collaborative

---
 collabowork.tex  | 120 +++++++++++++++++++++++++++++++++++++----------
 gitmain.tex      |   1 +
 maincommands.tex |  80 +++----------------------------
 ssh.tex          |   6 +--
 4 files changed, 105 insertions(+), 102 deletions(-)

diff --git a/collabowork.tex b/collabowork.tex
index f50abf1..4b30317 100644
--- a/collabowork.tex
+++ b/collabowork.tex
@@ -1,6 +1,6 @@
 %======================================================================
 
-\subsection{Introduction}
+\subsection{Introduction, commandes additionnelles}
 
 %======================================================================
 
@@ -19,14 +19,14 @@
     Une possibilité : utiliser une forge (Github, gitlab,
     Bitbucket...)
   \item
-    Deux commandes pour le raccordement\\
-    (à réaliser par le contributeur principal)
+    Pour le primo-contributeur, deux commandes à utiliser pour le
+    raccordement
     \begin{itemize}
     \item
-      syntaxe de raccordement\\
+      syntaxe de déclaration de dépôt distant\\
       \ex{git remote add \emph{nom} \emph{URL}}
     \item 
-      exemple de raccordement\\
+      exemple de déclaration de dépôt distant\\
       \ex{git remote add origin git@github.com:dosch/test.git}
     \item
       première synchronisation\\
@@ -47,17 +47,34 @@
 
 %======================================================================
 
-\frame{\frametitle{Principes du \emph{workflow}}
+\frame{\frametitle{Principes du \emph{workflow} de collaboration}
   \begin{itemize}
   \item
-    pull = fetch + merge pour info (pour aller plus loin ?)
+    Repose sur 2 commandes principale
+    \begin{itemize}
+    \item
+      \ex{git push} : envoi de ses commits au dépôt distant
+    \item
+      \ex{git pull} : récupération des commits des autres
+      collaborateurs\\
+      En interne, utilise 2 commandes \ex{git}
+      \begin{itemize}
+      \item
+        \ex{git fetch} : pour la récupération brute des commits
+      \item
+        \ex{git merge} : pour la fusion des contributions
+      \end{itemize}
+      Ces aspects seront développés dans un futur cours sur les
+      branches
+    \end{itemize}
   \item
-    Récupération des autres contributions avant d'apporter les siennes
+    Attention : il faut d'abord récupérer les contributions des autres
+    membres avant d'apporter les siennes
     \begin{itemize}
     \item
-      on choisit le moment (c'est manuel)
+      on tombe sur une erreur si le \emph{workflow} n'est pas respecté
     \item
-      message d'erreur si le \emph{workflow} n'est pas respecté
+      mais on reste maître du moment des synchronisations
     \end{itemize}
   \end{itemize}
 }
@@ -84,6 +101,74 @@
 
 %======================================================================
 
+\frame{\frametitle{\ex{git pull}}
+  \framesubtitle{\gitsync}
+  \begin{itemize}
+  \item
+    Récupère les changements du dépôt distant et les fusionne dans le
+    dépôt local et le répertoire de travail
+  \item
+    Peut d'ailleurs être utilisé pour récupérer des changements de
+    n'importe quel dépôt distant...
+  \item
+    À utiliser avant de propager les changements du dépôt local vers
+    le dépôt distant (\ex{git push}) s'il y eu des changements sur le
+    dépôt distant
+  \item
+    L'option \ex{-{}-rebase} permet d'effectuer une fusion sans
+    provoquer l'ajout d'un nouveau commit formalisant cette fusion
+  \end{itemize}
+}
+
+%======================================================================
+
+% À propos de 'git pull' : par défaut, cette commande effectue un fetch,
+% suivi d'un merge. L'effet de bord le plus notable est que le pull
+% conduit à un nouveau commit si le dépôt local contient des
+% modifications non poussées (et non poussables si le pull est
+% nécessaire).
+
+% Une manière d'éviter ce nouveau commit est de passer par un 
+% 'git pull --rebase' à la place du simple 'git pull'. Dans ce cas, un
+% fetch sera aussi effectué, et un rebase « intelligent » par la
+% suite. À noter, comme rebase effectue une modification de l'historique
+% (ce qui n'est jamais bon dès qu'on dépasse le stade local), ce genre
+% de manipulations ne doit pas être effectué dans certaines
+% configurations. Il semble que les architectures à base d'un unique
+% dépôt central ne soit pas concernée, mais ce n'est pas le cas des
+% architectures où plusieurs dépôt distants sont utilisés. Dans ce cas,
+% cette variante à base de 'rebase' est à proscrire.
+
+% Des détails en particulier sur :
+% http://stackoverflow.com/questions/6284887/whats-the-difference-between-git-fetch-then-git-rebase-and-git-pull-reb/11531502#11531502
+
+%======================================================================
+
+\frame{\frametitle{\ex{git push}}
+  \framesubtitle{\gitsync}
+  \begin{itemize}
+  \item
+    Propage les changements du dépôt local vers le distant
+  \item
+    Précision : plusieurs stratégies de mises à jour existent (voir le
+    transparent sur la configuration utilisateur), dont
+    \begin{itemize}
+    \item
+      \ex{simple} : seule la branche courante est concernée\\
+      (par défaut, conseillé en général)
+    \item
+      \ex{matching} : toutes les branches locales sont concernées
+      % si elles existent sur le serveur
+    \end{itemize}
+  \end{itemize}
+  
+  \begin{codebox}
+    \mygit{git push}{gitpush.txt}
+  \end{codebox}
+}
+
+%======================================================================
+
 \subsection{Exemples de travail collaboratif}
 
 %======================================================================
@@ -193,18 +278,3 @@
   \mygitprompt{bob}{git push}{gitpushconf.txt}
 }
 
-%======================================================================
-
-\subsection{Configuration}
-
-%======================================================================
-
-\frame{\frametitle{SSH ?}
-  \framesubtitle{Du côté de chez Bob...}
-  \mygitpromptplus{bob}{git add README}\\
-  \mygitprompt{bob}{git commit -m "Conflict fixed"}{gitconffix.txt}
-  \mygitprompt{bob}{git push}{gitpushconf.txt}
-}
-
-%======================================================================
-
diff --git a/gitmain.tex b/gitmain.tex
index 9c949c7..6a5b84f 100644
--- a/gitmain.tex
+++ b/gitmain.tex
@@ -64,6 +64,7 @@
 \include{config}
 \section{Travail collaboratif avec Git}
 \include{collabowork}
+\include{ssh}
 \include{moregit}
 
 % 2 points importants d'évolutions : introduire les hunks et git
diff --git a/maincommands.tex b/maincommands.tex
index 5c892bb..b376683 100644
--- a/maincommands.tex
+++ b/maincommands.tex
@@ -522,74 +522,6 @@
 
 %======================================================================
 
-\frame{\frametitle{\ex{git pull}}
-  \framesubtitle{\gitsync}
-  \begin{itemize}
-  \item
-    Récupère les changements du dépôt distant et les fusionne dans le
-    dépôt local et le répertoire de travail
-  \item
-    Peut d'ailleurs être utilisé pour récupérer des changements de
-    n'importe quel dépôt distant...
-  \item
-    À utiliser avant de propager les changements du dépôt local vers
-    le dépôt distant (\ex{git push}) s'il y eu des changements sur le
-    dépôt distant
-  \item
-    L'option \ex{-{}-rebase} permet d'effectuer une fusion sans
-    provoquer l'ajout d'un nouveau commit formalisant cette fusion
-  \end{itemize}
-}
-
-%======================================================================
-
-% À propos de 'git pull' : par défaut, cette commande effectue un fetch,
-% suivi d'un merge. L'effet de bord le plus notable est que le pull
-% conduit à un nouveau commit si le dépôt local contient des
-% modifications non poussées (et non poussables si le pull est
-% nécessaire).
-
-% Une manière d'éviter ce nouveau commit est de passer par un 
-% 'git pull --rebase' à la place du simple 'git pull'. Dans ce cas, un
-% fetch sera aussi effectué, et un rebase « intelligent » par la
-% suite. À noter, comme rebase effectue une modification de l'historique
-% (ce qui n'est jamais bon dès qu'on dépasse le stade local), ce genre
-% de manipulations ne doit pas être effectué dans certaines
-% configurations. Il semble que les architectures à base d'un unique
-% dépôt central ne soit pas concernée, mais ce n'est pas le cas des
-% architectures où plusieurs dépôt distants sont utilisés. Dans ce cas,
-% cette variante à base de 'rebase' est à proscrire.
-
-% Des détails en particulier sur :
-% http://stackoverflow.com/questions/6284887/whats-the-difference-between-git-fetch-then-git-rebase-and-git-pull-reb/11531502#11531502
-
-%======================================================================
-
-\frame{\frametitle{\ex{git push}}
-  \framesubtitle{\gitsync}
-  \begin{itemize}
-  \item
-    Propage les changements du dépôt local vers le distant
-  \item
-    Précision : plusieurs stratégies de mises à jour existent (voir le
-    transparent sur la configuration utilisateur), dont
-    \begin{itemize}
-    \item
-      \ex{simple} : seule la branche courante est concernée\\
-      (par défaut, conseillé en général)
-    \item
-      \ex{matching} : toutes les branches locales sont concernées
-      % si elles existent sur le serveur
-    \end{itemize}
-  \end{itemize}
-  
-  \begin{codebox}
-    \mygit{git push}{gitpush.txt}
-  \end{codebox}
-}
-
-%======================================================================
-
 \frame{\frametitle{Récapitulatif des commandes fréquentes}
   \begin{itemize}
   \item
@@ -628,12 +560,12 @@
     \ex{git mv} : déplace des fichiers
   \item
     \ex{git rm} : supprime des fichiers
-  \item
-    \ex{git pull} : répercute les changements du dépôt distant vers le
-    dépôt local
-  \item
-    \ex{git push} : répercute les changements du dépôt local vers le
-    dépôt distant
+  % \item
+  %   \ex{git pull} : répercute les changements du dépôt distant vers le
+  %   dépôt local
+  % \item
+  %   \ex{git push} : répercute les changements du dépôt local vers le
+  %   dépôt distant
   \end{itemize}
 }
 
diff --git a/ssh.tex b/ssh.tex
index 2f0882b..4d7f6e4 100644
--- a/ssh.tex
+++ b/ssh.tex
@@ -1,8 +1,8 @@
-%======================================================================
+% %======================================================================
 
-\section{Aspects techniques}
+% \section{Aspects techniques}
 
-%======================================================================
+% %======================================================================
 
 \subsection{Authentification SSH}
 
-- 
GitLab