diff --git a/collabowork.tex b/collabowork.tex index f50abf12746904e2e3bf514a5e20b822a5786faf..4b30317ef3f23d1ffa5121b01cbe510e1377d927 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 9c949c7a095a8d4abe39a3544e75f1729e460936..6a5b84f19e86252173b9f487f7a60ace10eb37e8 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 5c892bb9e6702de1c86b7a9cd0a21f468be08234..b376683b82f77b04b63f2a4e71dba901e506fe06 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 2f0882b183698a7828774a9cbfecc6aaecf84ae8..4d7f6e4994f05c97b641e27534a4486c797e4e27 100644 --- a/ssh.tex +++ b/ssh.tex @@ -1,8 +1,8 @@ -%====================================================================== +% %====================================================================== -\section{Aspects techniques} +% \section{Aspects techniques} -%====================================================================== +% %====================================================================== \subsection{Authentification SSH}