Formation git

This commit is contained in:
Benjamin Bohard 2015-07-15 20:52:22 +02:00
parent dbd84ec3a0
commit 232473472a
65 changed files with 2317 additions and 116 deletions

View File

@ -1,4 +1,5 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{}
fichier content/outils/scm/git/commandes.tex à éditer
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,14 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
% contenu (pas trop long) de la diapositive \framesubtitle{add}
\begin{description}
\item[\commande{git add}] Ajouter le contenu d'un fichier à l'index.
\end{description}
\skbinput[from=fig]{apps/git_commande_add}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{-u}] ajout des modifications des fichiers déjà connus de git
\item[\commande{-i}] ajout interactif
\end{description}
\end{exampleblock}
\end{frame} \end{frame}

View File

@ -1,4 +1,7 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
% contenu (pas trop long) de la diapositive \framesubtitle{blame}
\begin{description}
\item[\commande{git blame}] Afficher l'auteur et la référence de la dernière modification pour chaque ligne d'un fichier
\end{description}
\end{frame} \end{frame}

View File

@ -1,4 +1,14 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
% contenu (pas trop long) de la diapositive \framesubtitle{branch}
\begin{description}
\item[git branch] Gérer les branches
\end{description}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--list}] Lister les branches (\commande{-a} les branches locales et distantes, \commande{-r} les branches distantes uniquement)
\item[\commande{-d}] Supprimer une branche
\end{description}
\end{exampleblock}
\end{frame} \end{frame}

View File

@ -1,4 +1,14 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
% contenu (pas trop long) de la diapositive \framesubtitle{checkout}
\begin{description}
\item[\commande{git checkout}] Synchroniser le répertoire de travail avec une version
\end{description}
\skbinput[from=fig]{apps/git_commande_checkout}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{-b}] Créer une nouvelle branche et déplacer HEAD dessus
\item[\commande{--ours --theirs}] Conserver des modifications explicitement
\end{description}
\end{exampleblock}
\end{frame} \end{frame}

View File

@ -1,4 +1,13 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
% contenu (pas trop long) de la diapositive \framesubtitle{cherry-pick}
\begin{description}
\item[\commande{git cherry-pick}] Appliquer les changements introduits dans un commit donné
\end{description}
\skbinput[from=fig]{apps/git_commande_cherry-pick}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--abort}] Interrompre le processus
\end{description}
\end{exampleblock}
\end{frame} \end{frame}

View File

@ -1,4 +1,7 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
% contenu (pas trop long) de la diapositive \framesubtitle{cherry}
\begin{description}
\item[\commande{git cherry}] Trouver les commit qui ne sont pas encore appliqués dans le dépôt distant
\end{description}
\end{frame} \end{frame}

View File

@ -1,4 +1,14 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
\framesubtitle{clean}
\begin{description}
\item[\commande{git clean}] Supprime les fichiers non suivis du répertoire de travail
\end{description}
\skbinput[from=fig]{apps/git_commande_clean}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{-xdf}] Combinaison pour supprimer du répertoire de travail les dossiers et fichiers non suivis
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,8 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
\framesubtitle{clone}
\begin{description}
\item[\commande{git clone <url du dépôt>}] Récupérer un dépôt git depuis une source distante
\end{description}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,15 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
\framesubtitle{commit}
\begin{description}
\item[\commande{git commit}] Créer un commit à partir du contenu de l'index
\end{description}
\skbinput[from=fig]{apps/git_commande_commit}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{-a}] Court-circuiter l'index en intégrant au commit les modifications des fichiers suivis dans le répertoire de travail
\item[\commande{--amend}] Modifier le dernier commit
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,8 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
\framesubtitle{diff}
\begin{description}
\item[\commande{git diff}] Afficher la différence entre deux états (entre le répertoire de travail ou l'index et la branche ou entre
\end{description}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,13 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
% contenu (pas trop long) de la diapositive \framesubtitle{checkout}
\begin{description}
\item[git fetch] Mettre à jour la copie locale d'un dépôt distant
\end{description}
\skbinput[from=fig]{apps/git_commande_fetch}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[-all] Mettre à jour les copies locales de tous les dépôts distants configurés
\end{description}
\end{exampleblock}
\end{frame} \end{frame}

View File

@ -1,4 +1,8 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
\framesubtitle{init}
\begin{description}
\item[\commande{git init}] Convertir le dossier courant en dépôt git
\end{description}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,8 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
\framesubtitle{log}
\begin{description}
\item[\commande{git log}] Afficher une liste de commits
\end{description}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,14 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
\framesubtitle{merge}
\begin{description}
\item[\commande{git merge}] Intégrer les commits d'une branche à une autre
\end{description}
\skbinput[from=fig]{apps/git_commande_merge}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--abort}] Pour faire machine arrière lors d'un merge manuel
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,14 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
\framesubtitle{pull}
\begin{description}
\item[\commande{git pull}] Synchroniser une branche locale avec la branche distante
\end{description}
\skbinput[from=fig]{apps/git_commande_pull}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--rebase}] Choisir la stratégie rebase pour incorporer les changements (équivalent à la succession des commandes \commande{fetch} et \commande{rebase}
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,15 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
\framesubtitle{push}
\begin{description}
\item[\commande{git push}] Synchroniser une branche distante avec une branche locale
\end{description}
\skbinput[from=fig]{apps/git_commande_push}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--tags}] Pousser les tags locaux sur le dépôt distant
\item[\commande{--all}] Pousser toutes les branches
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,14 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
\framesubtitle{rebase}
\begin{description}
\item[\commande{git rebase}] Rejouer les modifications après mise à jour de la branche
\end{description}
\skbinput[from=fig]{apps/git_commande_rebase}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{-i}] Réordonner les modifications manuellement
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,14 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
\framesubtitle{reset}
\begin{description}
\item[\commande{git reset}] Revenir à une version antérieure
\end{description}
\skbinput[from=fig]{apps/git_commande_reset}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--hard}] Écraser le contenu du répertoire de travail et de l'index
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,14 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
\framesubtitle{revert}
\begin{description}
\item[\commande{git revert}] Créer le commit annulant un autre commit
\end{description}
\skbinput[from=fig]{apps/git_commande_revert}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{--abort}] Interrompre le traitement
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,8 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
\framesubtitle{show}
\begin{description}
\item[\commande{git show}] Afficher la description d'un commit
\end{description}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,8 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
\framesubtitle{status}
\begin{description}
\item[\commande{git status}] Afficher le statut du répertoire de travail, et de l'index relativement à la branche
\end{description}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,15 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Commandes git}
\framesubtitle{tag}
\begin{description}
\item[\commande{git tag}] Gérer les étiquettes attachées à un commit
\end{description}
\begin{exampleblock}{Options à retenir}
\begin{description}
\item[\commande{-l}] Lister les étiquettes (éventuellement correpondant à un motif)
\item[\commande{-a}] Annoter l'étiquette
\item[\commande{-s}] Signer l'étiquette
\end{description}
\end{exampleblock}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -0,0 +1,33 @@
\begin{frame}
\frametitle{Ergonomie}
\framesubtitle{alias}
Les alias sont des raccourcis gérés pas git.
\commande{git config alias.<nom de l'alias> "<commande>"}
\begin{exampleblock}{Nature des commandes}
Les commandes peuvent aussi bien être des options et sous-commandes de git que des commandes externes accessibles au shell.
\end{exampleblock}
\end{frame}
\begin{frame}[fragile]
\frametitle {Ergonomie}
\framesubtitle{Exemples d'alias}
\begin{minted}[fontsize=\tiny]{ini}
[alias]
co = checkout
st = status
fe = fetch
lo = log --oneline
re = reset --hard HEAD~1
br = branch
mnf = merge --no-ff
sw = checkout @{-1}
lu = log ..@{upstream}
luo = log --oneline ..@{upstream}
ul=log @{upstream}..HEAD
ulo=log --oneline @{upstream}..HEAD
cslt = !git describe --long --first-parent | awk -F'/' '{print $NF}' | awk -F'-' '{print $(NF-1)}'
clf = !git lo --no-merges $(git lo -1 --pretty=format:"%h" debian/changelog)..
\end{minted}
\end{frame}

View File

@ -1,4 +1,10 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Ergonomie}
\framesubtitle{Interface}
\begin{itemize}
\item \commande{git config --global core.editor "vim"}
\item \commande{git config --global core.pager "less"}
\item \commande{git config --global color.ui auto}
\end{itemize}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -0,0 +1,47 @@
\begin{frame}
\frametitle{Ergonomie}
\framesubtitle{Hooks}
Les hooks sont des actions déclenchées par des évènements concernant le dépôt git.
\begin{exampleblock}{}
Les hooks sont des scripts exécutables (pas de langage imposé) posés dans le dossier .git/hooks.
\end{exampleblock}
\end{frame}
\begin{frame}
\frametitle{Ergonomie}
\framesubtitle{Hooks pour le client}
\begin{columns}
\begin{column}{0.5\textwidth}
\begin{itemize}
\item pre-commit
\item prepare-commit-msg
\item commit-msg
\item post-commit
\item applypatch-msg
\item preapply-patch
\item postapply-patch
\end{itemize}
\end{column}
\begin{column}{0.5\textwidth}
\begin{itemize}
\item pre-rebase
\item post-rewrite
\item post-checkout
\item post-merge
\item pre-push
\end{itemize}
\end{column}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Ergonomie}
\framesubtitle{Hooks pour le serveur}
\begin{itemize}
\item pre-receive
\item update
\item post-receive
\end{itemize}
\end{frame}

View File

@ -0,0 +1,16 @@
\begin{frame}[fragile]
\frametitle{Ergonomie}
\framesubtitle{bash}
\begin{minted}{bash}
source ~/.git-prompt.sh
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWSTASHSTATE=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_SHOWUPSTREAM="auto"
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
\end{minted}
\begin{exampleblock}{git-prompt}
git-prompt.sh est un script définissant la fonction \_\_git\_ps1 permettant d'afficher des informations pertinentes sur l'état du dépôt git dans l'invite de commande.
\end{exampleblock}
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -3,7 +3,7 @@
\framesubtitle{Identifier l'utilisateur} \framesubtitle{Identifier l'utilisateur}
git associe à chaque commit des informations sur la personne ayant commité et sur la personne ayant mergé le commit. git associe à chaque commit des informations sur la personne ayant commité et sur la personne ayant mergé le commit.
\begin{itemize} \begin{itemize}
\item git config --global user.name "<nom d'utilisateur>" \item \commande{git config --global user.name "<nom d'utilisateur>"}
\item git config --global user.email "<courriel>" \item \commande{git config --global user.email "<courriel>"}
\end{itemize} \end{itemize}
\end{frame} \end{frame}

View File

@ -1,8 +1,10 @@
\begin{frame} \begin{frame}
\frametitle{exercice} \frametitle{Exercices}
\framesubtitle{Configuration globale de git} \framesubtitle{Configuration globale de git}
Les paramètres de l'application git peuvent être globaux où propres à un dépôt. Les paramètres de l'application git peuvent être globaux ou propres à un dépôt.
L'ergonomie, l'identité, les alias sont souvent les mêmes pour tous les dépôts. L'ergonomie, l'identité, les alias sont souvent les mêmes pour tous les dépôts.
La première étape consiste généralement à renseigner ces paramètres. La première étape consiste généralement à renseigner ces paramètres.
Le premier exercice consiste donc à renseigner un minimum de ces variables globales.
\end{frame} \end{frame}

View File

@ -1,4 +1,38 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Mise en place}
% contenu (pas trop long) de la diapositive \framesubtitle{Identité de l'utilisateur}
\begin{itemize}
\item \commande{git config --global user.name "<nom de l'utilisateur>"}
\item \commande{git config --global user.email "<courriel de l'utilisateur>"}
\end{itemize}
\begin{exampleblock}{En cas d'oubli}
\commande{git} émet un avertissement lors du premier commit si ces variables ne sont pas renseignées.
Il est possible de corriger cet oubli facilement si les commits n'ont pas encore été partagés.
\end{exampleblock}
\end{frame}
\begin{frame}
\frametitle{Mise en place}
\framesubtitle{Ergonomie}
\begin{itemize}
\item \commande{git config --global color.ui auto}
\item \commande{git config --global core.editor "<éditeur de texte à utiliser>"}
\item \commande{git config --global core.pager "<pager>"}
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Mise en place}
\framesubtitle{Ergonomie (GNU/Linux)}
\begin{minted}{bash}
source ~/.git-prompt.sh
GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWSTASHSTATE=1
GIT_PS1_SHOWUNTRACKEDFILES=1
GIT_PS1_SHOWUPSTREAM="auto"
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
\end{minted}
\begin{exampleblock}{git-prompt}
git-prompt.sh est un script définissant la fonction \_\_git\_ps1 permettant d'afficher des informations pertinentes sur l'état du dépôt git dans l'invite de commande.
\end{exampleblock}
\end{frame} \end{frame}

View File

@ -1,4 +1,13 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Exercices}
% contenu (pas trop long) de la diapositive \framesubtitle{Initialiser un dépôt}
Un dépôt git peut être amorcé de différentes façons selon le contexte.
\begin{itemize}
\item le dépôt existe déjà en \emph{distant} :
\begin{itemize}
\item le dépôt distant est déjà au format git ;
\item le dépôt distant est géré par un autre scm ;
\end{itemize}
\item un répertoire local doit être converti en dépôt git ;
\end{itemize}
\end{frame} \end{frame}

View File

@ -1,4 +1,21 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Initialiser le dépôt}
\framesubtitle{Récupérer le dépôt git distant en ssh}
% contenu (pas trop long) de la diapositive
\end{frame}
\begin{frame}
\frametitle{Initialiser le dépôt}
\framesubtitle{Récupérer le dépôt git distant en https}
% contenu (pas trop long) de la diapositive
\end{frame}
\begin{frame}
\frametitle{Initialiser le dépôt}
\framesubtitle{Récupérer le dépôt CVS distant}
% contenu (pas trop long) de la diapositive
\end{frame}
\begin{frame}
\frametitle{Initialiser le dépôt}
\framesubtitle{Convertir le dossier local en dépôt git}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
\end{frame} \end{frame}

View File

@ -1,4 +1,9 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Exercice}
% contenu (pas trop long) de la diapositive \framesubtitle{Avoir des dépôts distants en référence}
Les dépôts distants sont un aspect important du fonctionnement d'un SCM décentralisé.
git permet d'associer plusieurs dépôts distants à un dépôt local et de renseigner à quelle branche de quel dépôt distant une branche locale doit se référer.
Le présent exercice aborde la mise en place de tels liens entre branches locales et branches distantes.
\end{frame} \end{frame}

View File

@ -1,4 +1,31 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Associer les dépôts distants}
% contenu (pas trop long) de la diapositive \framesubtitle{Ajouter un dépôt distant}
\commande{git remote add <nom> <protocole>://[<utilisateur>@]<adresse>[:port]/<chemin>}
Exemples :
\begin{itemize}
\item \commande{git remote add formation ssh://gogs@localhost/bbohard.git}
\item \commande{git remote add formation https://gogs@localhost/bbohard.git}
\end{itemize}
\begin{exampleblock}{Vérification}
Les dépôts distants configurés peuvent être listés avec :
\begin{itemize}
\item \commande{git remote} pour la version sobre ou
\item \commande{git remote -v} pour plus de détails.
\end{itemize}
\end{exampleblock}
\end{frame}
\begin{frame}
\frametitle{Associer les dépôts distants}
\framesubtitle{Observer une branche distante}
Pour une branche distante existante :
\begin{itemize}
\item \commande{git branch --set-upstream-to=<nom\_dépôt\_distant>/<branche\_distante>}
\end{itemize}
Pour une branche distante inexistante :
\begin{itemize}
\item \commande{git push --set-upstream <nom\_dépôt\_distant> <branche\_locale>}
\end{itemize}
\end{frame} \end{frame}

View File

@ -1,4 +1,7 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Exercice}
% contenu (pas trop long) de la diapositive \framesubtitle{Premier commit}
Le premier commit est toujours le plus facile. Pas de conflit à attendre, pas stress…
Cet exercice permet de décortiquer le fonctionnement des \emph{arbres} de git avec l'ajout d'un simple fichier dans un dossier.
\end{frame} \end{frame}

View File

@ -1,4 +1,133 @@
\begin{frame} \begin{frame}[fragile]
\frametitle{} \frametitle{Premier pas}
% contenu (pas trop long) de la diapositive \framesubtitle{Dépôt vide}
Au démarrage, est un dépôt vide :
\begin{minted}[fontsize=\tiny]{bash}
Sur la branche master
Validation initiale
rien à valider (créez/copiez des fichiers et utilisez "git add" pour les suivre)
\end{minted}
\end{frame}
\begin{frame}[fragile]
\frametitle{Premier pas}
\framesubtitle{Et pourtant…}
\begin{columns}
\begin{column}{0.5\textwidth}
L'initialisation consiste en la création du dossier .git :
\end{column}
\begin{column}{0.5\textwidth}
\begin{minted}[fontsize=\tiny]{bash}
.
└── .git
├── branches
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── info
│   └── exclude
├── objects
│   ├── info
│   └── pack
└── refs
├── heads
└── tags
\end{minted}
\end{column}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{Premier pas}
\framesubtitle{Création d'un dossier}
\commande{mkdir doc}
\end{frame}
\begin{frame}[fragile]
\frametitle{Premier pas}
\framesubtitle{Création d'un dossier}
\commande{git status}
\begin{minted}[fontsize=\tiny]{bash}
Sur la branche master
Validation initiale
rien à valider (créez/copiez des fichiers et utilisez "git add" pour les suivre)
\end{minted}
\begin{exampleblock}{}
git ne prend en considération que le contenu des fichiers.
\end{exampleblock}
\end{frame}
\begin{frame}
\frametitle{Premier pas}
\framesubtitle{Création d'un fichier}
\commande{touch doc/README}
\end{frame}
\begin{frame}[fragile]
\frametitle{Premier pas}
\framesubtitle{Création d'un fichier}
\commande{git status}
\begin{minted}[fontsize=\tiny]{bash}
Sur la branche master
Validation initiale
Fichiers non suivis:
(utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)
doc/
aucune modification ajoutée à la validation mais des fichiers non suivis sont présents
(utilisez "git add" pour les suivre)
\end{minted}
\end{frame}
\begin{frame}
\frametitle{Premier pas}
\framesubtitle{Création d'un fichier}
\commande{git add .}
\skbinput[from=fig]{apps/git_trees}
\end{frame}
\begin{frame}[fragile]
\frametitle{Premier pas}
\framesubtitle{Création d'un fichier}
\commande{git status}
\begin{minted}[fontsize=\tiny]{bash}
Sur la branche master
Validation initiale
Modifications qui seront validées :
(utilisez "git rm --cached <fichier>..." pour désindexer)
nouveau fichier : doc/README
\end{minted}
\end{frame}
\begin{frame}
\commande{git commit -m "Ajout du premier fichier."}
\end{frame}
\begin{frame}[fragile]
\commande{git status}
\begin{minted}[fontsize=\tiny]{bash}
Sur la branche master
rien à valider, la copie de travail est propre
\end{minted}
\end{frame} \end{frame}

View File

@ -1,4 +1,65 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{}
% contenu (pas trop long) de la diapositive % contenu (pas trop long) de la diapositive
% contenu (pas trop long) de la diapositive
\begin{tikzpicture}
% Commit DAG
\gitDAG[grow right sep = 2em]{
A -- B -- {
C,
D -- E,
}
};
% Tag reference
\gittag
[v0p1] % node name
{v0.1} % node text
{above=of A} % node placement
{A} % target
% Remote branch
\gitremotebranch
[origmaster] % node name
{origin/master} % node text
{above=of C} % node placement
{C} % target
% Branch
\gitbranch
{master} % node name and text
{above=of E} % node placement
{E} % target
% HEAD reference
\gitHEAD
{above=of master} % node placement
{master} % target
\end{tikzpicture}
\begin{tikzpicture}
\gitDAG[grow right sep = 2em]{
A -- B -- {
C -- D' -- E',
{[nodes=unreachable] D -- E },
}
};
% Tag reference
\gittag
[v0p1] % node name
{v0.1} % node text
{above=of A} % node placement
{A} % target
% Remote branch
\gitremotebranch
[origmaster] % node name
{origin/master} % node text
{above=of C} % node placement
{C} % target
% Branch
\gitbranch
{master} % node name and text
{above=of E'} % node placement
{E'} % target
% HEAD reference
\gitHEAD
{above=of master} % node placement
{master} % target
\SAandWT
\end{tikzpicture}
\end{frame} \end{frame}

View File

@ -2,6 +2,7 @@
\frametitle{Git en un mot} \frametitle{Git en un mot}
\begin{itemize} \begin{itemize}
\item projet créé en 2005 \item projet créé en 2005
\item sous licence GPLv2
\item gère le code source du noyau linux \item gère le code source du noyau linux
\item est multiplateforme \item est multiplateforme
\end{itemize} \end{itemize}

View File

@ -0,0 +1,8 @@
\begin{frame}
\frametitle{Références}
\begin{itemize}
\item \url{http://www.git-scm.com/docs}
\item Pro-git, S. Chacon et B. Straub, Apress, 2014
\item les pages de man : gitcore-tutorial, gitworkflows, gitcvs-migration
\end{itemize}
\end{frame}

View File

@ -1,4 +1,11 @@
\begin{frame} \begin{frame}
\frametitle{Ce que sont les données pour git} \frametitle{Ce que cache le dépôt git}
Un état du répertoire = un instantané de l'état des fichiers \begin{description}[répertoire de travail]
\item[.git]<1-> Les objets et la configuration locale du dépôt git
\item[répertoire de travail]<2-> Une arborescence de fichiers accessible à l'édition, le bac à sable
\item[index]<3-> Les changements candidats à l'archivage
\item[HEAD]<4-> Le dernier état archivé
\item[stash]<5-> Une zone tampon pour les modifications à mettre momentanément de côté
\end{description}
\skbinput[from=fig]{apps/git_trees}
\end{frame} \end{frame}

View File

@ -0,0 +1,5 @@
\begin{frame}
\frametitle{}
fichier content/outils/scm/git/web/basicssh.tex à éditer
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -1,4 +1,9 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Serveur de dépôts git}
% contenu (pas trop long) de la diapositive \framesubtitle{GitLab}
Application combinant un serveur de dépôts git avec une interface web conviviale.
\begin{itemize}
\item Ruby
\item
\end{itemize}
\end{frame} \end{frame}

View File

@ -0,0 +1,5 @@
\begin{frame}
\frametitle{}
fichier content/outils/scm/git/web/gitolite.tex à éditer
% contenu (pas trop long) de la diapositive
\end{frame}

View File

@ -1,4 +1,8 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Des branches pour étayer le tronc}
% contenu (pas trop long) de la diapositive \begin{itemize}
\item maintenir l'histoire du code lisible
\item faciliter les divergences
\item éphémères ou pérennes
\end{itemize}
\end{frame} \end{frame}

View File

@ -1,4 +1,15 @@
\begin{frame} \begin{frame}
\frametitle{} \frametitle{Processus de Vincent Driessen}
% contenu (pas trop long) de la diapositive \begin{columns}
\begin{column}{0.5\textwidth}
\begin{itemize}
\item Des branches \emph{master} et \emph{develop} pour le code fonctionnel
\item Des branches pour les développements en cours
\item Un circuit entre les branches bien fléché
\end{itemize}
\end{column}
\begin{column}{0.5\textwidth}
\skbfigure[center, figure, caption=Vincent Driessen CC-by-sa, height=0.5\textheight]{scm/git-model@2x.png}
\end{column}
\end{columns}
\end{frame} \end{frame}

View File

@ -0,0 +1,60 @@
\definecolor{stashcolor}{RGB}{248,249,156}
\definecolor{wdcolor}{RGB}{21,222,103}
\definecolor{indexcolor}{RGB}{19,206,204}
\definecolor{headcolor}{RGB}{29,162,232}
\definecolor{remote1color}{RGB}{222,208,212}
\definecolor{remote2color}{RGB}{217,151,175}
\definecolor{remote3color}{RGB}{220,98,143}
\definecolor{remote4color}{RGB}{229,20,96}
\begin{tikzpicture}[y=1pt, x=1pt, yscale=-1.000000, xscale=1.000000, inner sep=0pt, outer sep=0pt]
\path[color=black,draw=black,fill=stashcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(65,0) node[below=3pt] {Stash}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=wdcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(125,0) node[below=3pt] {WD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=indexcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(185,0) node[below=3pt] {Index}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=headcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(245,0) node[below=3pt] {HEAD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path
(325,50) node[anchor=base,fill=remote1color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote2color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote3color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote4color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {Remote};
\path[color=black,draw=black,fill=black]
(155,37.5) node[white] {add}
(130,37.5)
-- (125,32)
-- (180,32)
-- (185,37.5)
-- (180,43)
-- (125,43)
-- cycle;
\end{tikzpicture}

View File

@ -0,0 +1,60 @@
\definecolor{stashcolor}{RGB}{248,249,156}
\definecolor{wdcolor}{RGB}{21,222,103}
\definecolor{indexcolor}{RGB}{19,206,204}
\definecolor{headcolor}{RGB}{29,162,232}
\definecolor{remote1color}{RGB}{222,208,212}
\definecolor{remote2color}{RGB}{217,151,175}
\definecolor{remote3color}{RGB}{220,98,143}
\definecolor{remote4color}{RGB}{229,20,96}
\begin{tikzpicture}[y=1pt, x=1pt, yscale=-1.000000, xscale=1.000000, inner sep=0pt, outer sep=0pt]
\path[color=black,draw=black,fill=stashcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(65,0) node[below=3pt] {Stash}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=wdcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(125,0) node[below=3pt] {WD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=indexcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(185,0) node[below=3pt] {Index}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=headcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(245,0) node[below=3pt] {HEAD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path
(325,50) node[anchor=base,fill=remote1color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote2color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote3color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote4color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {Remote};
\path[color=black,draw=black,fill=black]
(185,37.5) node[white] {checkout}
(240,37.5) % creux
-- (245,32)
-- (130,32)
-- (125,37.5)
-- (130,43)
-- (245,43)
-- cycle;
\end{tikzpicture}

View File

@ -0,0 +1,60 @@
\definecolor{stashcolor}{RGB}{248,249,156}
\definecolor{wdcolor}{RGB}{21,222,103}
\definecolor{indexcolor}{RGB}{19,206,204}
\definecolor{headcolor}{RGB}{29,162,232}
\definecolor{remote1color}{RGB}{222,208,212}
\definecolor{remote2color}{RGB}{217,151,175}
\definecolor{remote3color}{RGB}{220,98,143}
\definecolor{remote4color}{RGB}{229,20,96}
\begin{tikzpicture}[y=1pt, x=1pt, yscale=-1.000000, xscale=1.000000, inner sep=0pt, outer sep=0pt]
\path[color=black,draw=black,fill=stashcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(65,0) node[below=3pt] {Stash}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=wdcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(125,0) node[below=3pt] {WD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=indexcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(185,0) node[below=3pt] {Index}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=headcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(245,0) node[below=3pt] {HEAD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path
(325,50) node[anchor=base,fill=remote1color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote2color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote3color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote4color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {Remote};
\path[color=black,draw=black,fill=black]
(185,37.5) node[white] {checkout}
(240,37.5) % creux
-- (245,32)
-- (130,32)
-- (125,37.5)
-- (130,43)
-- (245,43)
-- cycle;
\end{tikzpicture}

View File

@ -0,0 +1,60 @@
\definecolor{stashcolor}{RGB}{248,249,156}
\definecolor{wdcolor}{RGB}{21,222,103}
\definecolor{indexcolor}{RGB}{19,206,204}
\definecolor{headcolor}{RGB}{29,162,232}
\definecolor{remote1color}{RGB}{222,208,212}
\definecolor{remote2color}{RGB}{217,151,175}
\definecolor{remote3color}{RGB}{220,98,143}
\definecolor{remote4color}{RGB}{229,20,96}
\begin{tikzpicture}[y=1pt, x=1pt, yscale=-1.000000, xscale=1.000000, inner sep=0pt, outer sep=0pt]
\path[color=black,draw=black,fill=stashcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(65,0) node[below=3pt] {Stash}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=wdcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(125,0) node[below=3pt] {WD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=indexcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(185,0) node[below=3pt] {Index}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=headcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(245,0) node[below=3pt] {HEAD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path
(325,50) node[anchor=base,fill=remote1color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote2color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote3color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote4color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {Remote};
\path[color=black,draw=black,fill=black]
(185,37.5) node[white] {checkout}
(240,37.5) % creux
-- (245,32)
-- (130,32)
-- (125,37.5)
-- (130,43)
-- (245,43)
-- cycle;
\end{tikzpicture}

View File

@ -0,0 +1,60 @@
\definecolor{stashcolor}{RGB}{248,249,156}
\definecolor{wdcolor}{RGB}{21,222,103}
\definecolor{indexcolor}{RGB}{19,206,204}
\definecolor{headcolor}{RGB}{29,162,232}
\definecolor{remote1color}{RGB}{222,208,212}
\definecolor{remote2color}{RGB}{217,151,175}
\definecolor{remote3color}{RGB}{220,98,143}
\definecolor{remote4color}{RGB}{229,20,96}
\begin{tikzpicture}[y=1pt, x=1pt, yscale=-1.000000, xscale=1.000000, inner sep=0pt, outer sep=0pt]
\path[color=black,draw=black,fill=stashcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(65,0) node[below=3pt] {Stash}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=wdcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(125,0) node[below=3pt] {WD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=indexcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(185,0) node[below=3pt] {Index}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=headcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(245,0) node[below=3pt] {HEAD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path
(325,50) node[anchor=base,fill=remote1color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote2color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote3color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote4color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {Remote};
\path[color=black,draw=black,fill=black]
(185,37.5) node[white] {checkout}
(240,37.5) % creux
-- (245,32)
-- (130,32)
-- (125,37.5)
-- (130,43)
-- (245,43)
-- cycle;
\end{tikzpicture}

View File

@ -0,0 +1,60 @@
\definecolor{stashcolor}{RGB}{248,249,156}
\definecolor{wdcolor}{RGB}{21,222,103}
\definecolor{indexcolor}{RGB}{19,206,204}
\definecolor{headcolor}{RGB}{29,162,232}
\definecolor{remote1color}{RGB}{222,208,212}
\definecolor{remote2color}{RGB}{217,151,175}
\definecolor{remote3color}{RGB}{220,98,143}
\definecolor{remote4color}{RGB}{229,20,96}
\begin{tikzpicture}[y=1pt, x=1pt, yscale=-1.000000, xscale=1.000000, inner sep=0pt, outer sep=0pt]
\path[color=black,draw=black,fill=stashcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(65,0) node[below=3pt] {Stash}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=wdcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(125,0) node[below=3pt] {WD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=indexcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(185,0) node[below=3pt] {Index}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=headcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(245,0) node[below=3pt] {HEAD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path
(325,50) node[anchor=base,fill=remote1color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote2color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote3color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote4color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {Remote};
\path[color=black,draw=black,fill=black]
(185,37.5) node[white] {checkout}
(240,37.5) % creux
-- (245,32)
-- (130,32)
-- (125,37.5)
-- (130,43)
-- (245,43)
-- cycle;
\end{tikzpicture}

View File

@ -0,0 +1,60 @@
\definecolor{stashcolor}{RGB}{248,249,156}
\definecolor{wdcolor}{RGB}{21,222,103}
\definecolor{indexcolor}{RGB}{19,206,204}
\definecolor{headcolor}{RGB}{29,162,232}
\definecolor{remote1color}{RGB}{222,208,212}
\definecolor{remote2color}{RGB}{217,151,175}
\definecolor{remote3color}{RGB}{220,98,143}
\definecolor{remote4color}{RGB}{229,20,96}
\begin{tikzpicture}[y=1pt, x=1pt, yscale=-1.000000, xscale=1.000000, inner sep=0pt, outer sep=0pt]
\path[color=black,draw=black,fill=stashcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(65,0) node[below=3pt] {Stash}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=wdcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(125,0) node[below=3pt] {WD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=indexcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(185,0) node[below=3pt] {Index}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=headcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(245,0) node[below=3pt] {HEAD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path
(325,50) node[anchor=base,fill=remote1color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote2color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote3color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote4color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {Remote};
\path[color=black,draw=black,fill=black]
(185,37.5) node[white] {checkout}
(240,37.5) % creux
-- (245,32)
-- (130,32)
-- (125,37.5)
-- (130,43)
-- (245,43)
-- cycle;
\end{tikzpicture}

View File

@ -0,0 +1,60 @@
\definecolor{stashcolor}{RGB}{248,249,156}
\definecolor{wdcolor}{RGB}{21,222,103}
\definecolor{indexcolor}{RGB}{19,206,204}
\definecolor{headcolor}{RGB}{29,162,232}
\definecolor{remote1color}{RGB}{222,208,212}
\definecolor{remote2color}{RGB}{217,151,175}
\definecolor{remote3color}{RGB}{220,98,143}
\definecolor{remote4color}{RGB}{229,20,96}
\begin{tikzpicture}[y=1pt, x=1pt, yscale=-1.000000, xscale=1.000000, inner sep=0pt, outer sep=0pt]
\path[color=black,draw=black,fill=stashcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(65,0) node[below=3pt] {Stash}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=wdcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(125,0) node[below=3pt] {WD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=indexcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(185,0) node[below=3pt] {Index}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=headcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(245,0) node[below=3pt] {HEAD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path
(325,50) node[anchor=base,fill=remote1color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote2color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote3color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote4color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {Remote};
\path[color=black,draw=black,fill=black]
(185,37.5) node[white] {checkout}
(240,37.5) % creux
-- (245,32)
-- (130,32)
-- (125,37.5)
-- (130,43)
-- (245,43)
-- cycle;
\end{tikzpicture}

View File

@ -0,0 +1,60 @@
\definecolor{stashcolor}{RGB}{248,249,156}
\definecolor{wdcolor}{RGB}{21,222,103}
\definecolor{indexcolor}{RGB}{19,206,204}
\definecolor{headcolor}{RGB}{29,162,232}
\definecolor{remote1color}{RGB}{222,208,212}
\definecolor{remote2color}{RGB}{217,151,175}
\definecolor{remote3color}{RGB}{220,98,143}
\definecolor{remote4color}{RGB}{229,20,96}
\begin{tikzpicture}[y=1pt, x=1pt, yscale=-1.000000, xscale=1.000000, inner sep=0pt, outer sep=0pt]
\path[color=black,draw=black,fill=stashcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(65,0) node[below=3pt] {Stash}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=wdcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(125,0) node[below=3pt] {WD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=indexcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(185,0) node[below=3pt] {Index}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=headcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(245,0) node[below=3pt] {HEAD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path
(325,50) node[anchor=base,fill=remote1color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote2color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote3color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote4color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {Remote};
\path[color=black,draw=black,fill=black]
(185,37.5) node[white] {checkout}
(240,37.5) % creux
-- (245,32)
-- (130,32)
-- (125,37.5)
-- (130,43)
-- (245,43)
-- cycle;
\end{tikzpicture}

View File

@ -0,0 +1,60 @@
\definecolor{stashcolor}{RGB}{248,249,156}
\definecolor{wdcolor}{RGB}{21,222,103}
\definecolor{indexcolor}{RGB}{19,206,204}
\definecolor{headcolor}{RGB}{29,162,232}
\definecolor{remote1color}{RGB}{222,208,212}
\definecolor{remote2color}{RGB}{217,151,175}
\definecolor{remote3color}{RGB}{220,98,143}
\definecolor{remote4color}{RGB}{229,20,96}
\begin{tikzpicture}[y=1pt, x=1pt, yscale=-1.000000, xscale=1.000000, inner sep=0pt, outer sep=0pt]
\path[color=black,draw=black,fill=stashcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(65,0) node[below=3pt] {Stash}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=wdcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(125,0) node[below=3pt] {WD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=indexcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(185,0) node[below=3pt] {Index}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=headcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(245,0) node[below=3pt] {HEAD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path
(325,50) node[anchor=base,fill=remote1color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote2color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote3color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote4color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {Remote};
\path[color=black,draw=black,fill=black]
(185,37.5) node[white] {checkout}
(240,37.5) % creux
-- (245,32)
-- (130,32)
-- (125,37.5)
-- (130,43)
-- (245,43)
-- cycle;
\end{tikzpicture}

View File

@ -0,0 +1,60 @@
\definecolor{stashcolor}{RGB}{248,249,156}
\definecolor{wdcolor}{RGB}{21,222,103}
\definecolor{indexcolor}{RGB}{19,206,204}
\definecolor{headcolor}{RGB}{29,162,232}
\definecolor{remote1color}{RGB}{222,208,212}
\definecolor{remote2color}{RGB}{217,151,175}
\definecolor{remote3color}{RGB}{220,98,143}
\definecolor{remote4color}{RGB}{229,20,96}
\begin{tikzpicture}[y=1pt, x=1pt, yscale=-1.000000, xscale=1.000000, inner sep=0pt, outer sep=0pt]
\path[color=black,draw=black,fill=stashcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(65,0) node[below=3pt] {Stash}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=wdcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(125,0) node[below=3pt] {WD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=indexcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(185,0) node[below=3pt] {Index}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=headcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(245,0) node[below=3pt] {HEAD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path
(325,50) node[anchor=base,fill=remote1color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote2color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote3color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote4color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {Remote};
\path[color=black,draw=black,fill=black]
(185,37.5) node[white] {checkout}
(240,37.5) % creux
-- (245,32)
-- (130,32)
-- (125,37.5)
-- (130,43)
-- (245,43)
-- cycle;
\end{tikzpicture}

View File

@ -0,0 +1,60 @@
\definecolor{stashcolor}{RGB}{248,249,156}
\definecolor{wdcolor}{RGB}{21,222,103}
\definecolor{indexcolor}{RGB}{19,206,204}
\definecolor{headcolor}{RGB}{29,162,232}
\definecolor{remote1color}{RGB}{222,208,212}
\definecolor{remote2color}{RGB}{217,151,175}
\definecolor{remote3color}{RGB}{220,98,143}
\definecolor{remote4color}{RGB}{229,20,96}
\begin{tikzpicture}[y=1pt, x=1pt, yscale=-1.000000, xscale=1.000000, inner sep=0pt, outer sep=0pt]
\path[color=black,draw=black,fill=stashcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(65,0) node[below=3pt] {Stash}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=wdcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(125,0) node[below=3pt] {WD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=indexcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(185,0) node[below=3pt] {Index}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path[color=black,draw=black,fill=headcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(245,0) node[below=3pt] {HEAD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path
(325,50) node[anchor=base,fill=remote1color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote2color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote3color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote4color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {Remote};
\path[color=black,draw=black,fill=black]
(185,37.5) node[white] {checkout}
(240,37.5) % creux
-- (245,32)
-- (130,32)
-- (125,37.5)
-- (130,43)
-- (245,43)
-- cycle;
\end{tikzpicture}

275
figures/apps/git_trees.svg Normal file
View File

@ -0,0 +1,275 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="210mm"
height="148mm"
viewBox="0 0 744.09449 524.40944"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="git_trees.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="424.83981"
inkscape:cy="567.51317"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1678"
inkscape:window-height="1029"
inkscape:window-x="-1"
inkscape:window-y="18"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-527.95276)">
<rect
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#f8f99c;fill-opacity:1;stroke:#000000;stroke-width:1.79999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
id="rect4136"
width="90.913727"
height="146.47212"
x="85.862968"
y="585.67169"
ry="12.8571" />
<rect
ry="12.8571"
y="585.67169"
x="214.54002"
height="146.47212"
width="90.913727"
id="rect4138"
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#15de67;fill-opacity:1;stroke:#000000;stroke-width:1.79999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<rect
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#13cecc;fill-opacity:1;stroke:#000000;stroke-width:1.79999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
id="rect4140"
width="90.913727"
height="146.47212"
x="333.21707"
y="585.67169"
ry="12.8571" />
<rect
ry="12.8571"
y="585.67169"
x="451.8941"
height="146.47212"
width="90.913727"
id="rect4142"
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#1da2e8;fill-opacity:1;stroke:#000000;stroke-width:1.79999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:11px;line-height:125%;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="470.04443"
y="608.11481"
id="text4188"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4190"
x="470.04443"
y="608.11481"
style="font-size:22.5px">HEAD</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="344.35815"
y="607.82916"
id="text4192"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4194"
x="344.35815"
y="607.82916">Index</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="247.07147"
y="608.11481"
id="text4196"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4198"
x="247.07147"
y="608.11481">WD</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="104.1836"
y="607.89508"
id="text4200"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4202"
x="104.1836"
y="607.89508">Pile</tspan></text>
<g
id="g4208">
<g
transform="translate(5.0507627,18.182746)"
id="g4162">
<rect
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ded0d4;fill-opacity:1;stroke:#000000;stroke-width:1.79999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
id="rect4160"
width="90.913757"
height="41.416241"
x="611.17773"
y="655.70721"
ry="12.8571" />
<rect
ry="12.8571"
y="632.0321"
x="600.06604"
height="41.416241"
width="90.913757"
id="rect4158"
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#d997af;fill-opacity:1;stroke:#000000;stroke-width:1.79999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<rect
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#dc628f;fill-opacity:1;stroke:#000000;stroke-width:1.79999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
id="rect4156"
width="90.913757"
height="41.416241"
x="589.96448"
y="609.36713"
ry="12.8571" />
<rect
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#138cce;fill-opacity:1;stroke:#000000;stroke-width:1.79999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
id="rect4144"
width="90.913757"
height="41.416241"
x="579.86298"
y="585.67169"
ry="12.8571" />
<rect
ry="12.8571"
y="585.67169"
x="579.86298"
height="41.416241"
width="90.913757"
id="rect4146"
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e51460;fill-opacity:1;stroke:#000000;stroke-width:1.79999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
</g>
<text
sodipodi:linespacing="125%"
id="text4204"
y="630.11841"
x="589.90875"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="630.11841"
x="589.90875"
id="tspan4206"
sodipodi:role="line">Remote</tspan></text>
</g>
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.52744067;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
d="m 262.50339,648.16486 95.17946,0 20.04742,11.24796 -20.04742,11.24797 -95.17946,0 20.04742,-11.24797 z"
id="rect4218"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.5px;line-height:125%;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="303.04578"
y="664.46362"
id="text4221"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4223"
x="303.04578"
y="664.46362">add</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.5px;line-height:125%;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="204.05081"
y="296.7681"
id="text4225"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4227"
x="204.05081"
y="296.7681">*</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.5px;line-height:125%;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="304.05591"
y="303.83914"
id="text4229"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4231"
x="304.05591"
y="303.83914">+</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.5px;line-height:125%;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="405.07117"
y="358.38739"
id="text4233"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4235"
x="405.07117"
y="358.38739">&lt;</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.5px;line-height:125%;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="539.42145"
y="370.50922"
id="text4237"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4239"
x="539.42145"
y="370.50922">&gt;</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.5px;line-height:125%;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="262.63965"
y="434.14883"
id="text4241"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4243"
x="262.63965"
y="434.14883">=</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.5px;line-height:125%;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="398.00009"
y="462.43311"
id="text4245"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4247"
x="398.00009"
y="462.43311">%</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,51 @@
\definecolor{stashcolor}{RGB}{248,249,156}
\definecolor{wdcolor}{RGB}{21,222,103}
\definecolor{indexcolor}{RGB}{19,206,204}
\definecolor{headcolor}{RGB}{29,162,232}
\definecolor{remote1color}{RGB}{222,208,212}
\definecolor{remote2color}{RGB}{217,151,175}
\definecolor{remote3color}{RGB}{220,98,143}
\definecolor{remote4color}{RGB}{229,20,96}
\begin{tikzpicture}[y=1pt, x=1pt, yscale=-0.500000, xscale=1.000000, inner sep=0pt, outer sep=0pt]
\path<5->[color=black,draw=black,fill=stashcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(65,0) node[below=3pt] {Stash}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path<2->[color=black,draw=black,fill=wdcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(125,0) node[below=3pt] {WD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path<3->[color=black,draw=black,fill=indexcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(185,0) node[below=3pt] {Index}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path<4->[color=black,draw=black,fill=headcolor,line join=round,line cap=round,miter
limit=4.00,line width=1.440pt,rounded corners=0.2000cm]
(245,0) node[below=3pt] {HEAD}
-- ++(25,0)
-- ++(0,75)
-- ++(-50,0)
-- ++(0,-75)
--cycle;
\path<6>
(325,50) node[anchor=base,fill=remote1color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote2color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote3color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {}
++(-5,-10) node[anchor=base,fill=remote4color,shape=rectangle,draw,minimum width=50pt,minimum height=20pt,rounded corners=0.2cm] {Remote};
\end{tikzpicture}

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@ -0,0 +1,168 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="210mm"
height="148mm"
viewBox="0 0 744.09449 524.40944"
id="svg4530"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="gray_frame_header.svg"
inkscape:export-filename="/home/bbohard/Cadoles/git/formations/figures/cadoles/gray_frame_background.png"
inkscape:export-xdpi="300"
inkscape:export-ydpi="300">
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="357.17515"
inkscape:cy="260.00836"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:snap-bbox="true"
inkscape:snap-page="true"
inkscape:object-paths="true"
inkscape:snap-global="true"
inkscape:window-width="1918"
inkscape:window-height="1059"
inkscape:window-x="0"
inkscape:window-y="19"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true"
inkscape:bbox-nodes="false"
inkscape:bbox-paths="false"
inkscape:snap-bbox-edge-midpoints="false"
inkscape:snap-bbox-midpoints="false"
inkscape:snap-intersection-paths="true"
inkscape:object-nodes="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-midpoints="false"
inkscape:snap-object-midpoints="false"
inkscape:snap-center="false"
inkscape:snap-text-baseline="false">
<sodipodi:guide
position="744.0945,518.39287"
orientation="1,0"
id="guide4156" />
<sodipodi:guide
position="744.0945,524.40946"
orientation="0,1"
id="guide4158" />
</sodipodi:namedview>
<defs
id="defs4532" />
<metadata
id="metadata4535">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-527.95276)">
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#a3a3a3;fill-opacity:1;stroke:#000000;stroke-width:1.79999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
d="M 0,4.9907735e-6 0,63.558594 c 0,7.55493 6.0818547,13.668435 13.636719,13.636716 l 476.363281,0 0,16.29102 c 0,7.55496 6.08177,13.63672 13.63672,13.63672 l 99.86914,0 c 7.55495,0 13.63672,-6.08176 13.63672,-13.63672 l 0,-16.29102 113.31445,0 c 7.55493,0 13.63663,-6.081786 13.63672,-13.636716 L 744.09449,4.9907735e-6 Z"
id="rect5078"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csscsssscsscc"
transform="translate(0,527.95276)" />
<g
transform="matrix(0.58550099,0,0,-0.58550099,611.06673,591.65217)"
inkscape:label="ink_ext_XXXXXX"
id="g5123">
<g
transform="scale(0.1,0.1)"
id="g5125">
<path
inkscape:connector-curvature="0"
id="path5127"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 1308.73,601.652 c -47.88,0 -83.54,-23.511 -83.54,-80.093 0,-42.633 23.5,-72.227 80.96,-72.227 48.7,0 81.78,28.695 81.78,73.988 0,51.328 -29.6,78.332 -79.2,78.332 z M 1213,202.133 c -11.33,-13.906 -22.62,-28.68 -22.62,-46.117 0,-34.786 44.36,-45.254 105.3,-45.254 50.48,0 119.24,3.535 119.24,50.468 0,27.895 -33.08,29.622 -74.88,32.243 l -127.04,8.66 z m 257.61,396.89 c 15.64,-20.023 32.2,-47.878 32.2,-87.91 0,-96.601 -75.72,-153.164 -185.35,-153.164 -27.88,0 -53.12,3.473 -68.77,7.817 l -28.73,-46.118 85.28,-5.21 c 150.58,-9.594 239.32,-13.954 239.32,-129.661 0,-100.109 -87.88,-156.652 -239.32,-156.652 -157.52,0 -217.57,40.0391 -217.57,108.781 0,39.18 17.41,60.02 47.87,88.782 -28.73,12.144 -38.29,33.89 -38.29,57.398 0,19.16 9.56,36.562 25.25,53.109 15.66,16.52 33.06,33.078 53.95,52.219 -42.64,20.883 -74.85,66.141 -74.85,130.555 0,100.074 66.15,168.804 199.28,168.804 37.43,0 60.07,-3.445 80.09,-8.699 l 169.72,0 0,-73.957 -80.08,-6.094" />
<path
inkscape:connector-curvature="0"
id="path5129"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 1703.8,757.168 c -49.62,0 -78.33,28.746 -78.33,78.371 0,49.563 28.71,76.563 78.33,76.563 50.48,0 79.2,-27 79.2,-76.563 0,-49.625 -28.72,-78.371 -79.2,-78.371 z m -112.29,-523.012 0,68.719 44.4,6.074 c 12.19,1.766 13.92,4.356 13.92,17.442 l 0,255.867 c 0,9.555 -2.6,15.672 -11.33,18.262 l -46.99,16.55 9.57,70.469 180.17,0 0,-361.148 c 0,-13.95 0.84,-15.676 13.93,-17.442 l 44.39,-6.074 0,-68.719 -248.06,0" />
<path
inkscape:connector-curvature="0"
id="path5131"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 2183.73,267.895 c -37.44,-18.254 -92.26,-34.793 -141.89,-34.793 -103.56,0 -142.71,41.734 -142.71,140.121 l 0,228.004 c 0,5.211 0,8.707 -6.99,8.707 l -60.91,0 0,77.453 c 76.61,8.726 107.05,47.027 116.62,141.886 l 82.69,0 0,-123.625 c 0,-6.07 0,-8.699 6.97,-8.699 l 122.7,0 0,-87.015 -129.67,0 0,-207.989 c 0,-51.355 12.2,-71.355 59.17,-71.355 24.4,0 49.61,6.074 70.5,13.914 l 23.52,-76.609" />
<path
inkscape:connector-curvature="0"
id="path5133"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 894.215,496.285 -397.938,397.91 c -22.898,22.918 -60.066,22.918 -82.996,0 L 330.652,811.559 435.469,706.738 c 24.367,8.227 52.297,2.711 71.711,-16.707 19.515,-19.539 24.992,-47.707 16.558,-72.156 l 101.024,-101.02 c 24.441,8.422 52.64,2.981 72.156,-16.57 27.285,-27.277 27.285,-71.476 0,-98.762 -27.289,-27.293 -71.488,-27.293 -98.789,0 -20.516,20.532 -25.59,50.676 -15.199,75.954 l -94.215,94.218 -0.008,-247.929 c 6.652,-3.293 12.93,-7.688 18.473,-13.207 27.277,-27.274 27.277,-71.465 0,-98.782 -27.285,-27.273 -71.504,-27.273 -98.762,0 -27.281,27.317 -27.281,71.508 0,98.782 6.742,6.73 14.543,11.824 22.867,15.238 l 0,250.23 c -8.324,3.403 -16.113,8.461 -22.867,15.239 -20.664,20.648 -25.641,50.976 -15.043,76.351 L 290.051,770.961 17.1992,498.125 c -22.92576,-22.937 -22.92576,-60.105 0,-83.027 L 415.133,17.1875 c 22.91,-22.91797 60.066,-22.91797 83.008,0 L 894.215,413.254 c 22.918,22.93 22.918,60.109 0,83.031" />
</g>
</g>
<g
id="g5283"
transform="matrix(0.22351209,0,0,0.22351209,468.02458,415.34098)">
<path
id="path5277"
transform="translate(0,527.95276)"
d="m 443.48633,349.84961 c -7.21008,0.0254 -11.95238,1.19421 -18.87891,4.65625 -15.15766,7.57615 -26.43306,25.28487 -28.49609,44.75391 l -0.39453,3.7207 3.03515,0 3.03321,0 0,12.14844 0,12.14648 3.09961,2.78516 c 1.70399,1.53203 4.31475,3.4023 5.80273,4.15625 3.98168,2.01748 12.07933,4.3896 18.18164,5.32617 7.21121,1.1068 22.98833,1.14627 30.05859,0.0742 10.40262,-1.57734 18.68591,-4.87016 23.5625,-9.36524 l 2.62891,-2.42187 0,-12.42578 0,-12.42383 3.06055,0 3.0625,0 -0.33789,-4.61328 c -0.40487,-5.54687 -2.69311,-13.71479 -5.53321,-19.75 l -2.08007,-4.42188 -3.25391,3.21094 -3.25195,3.21289 0.0176,8.05469 c 0.0165,8.00197 0.0279,8.07205 1.78516,10.39453 0.97303,1.286 1.76953,2.53487 1.76953,2.77344 0,0.23858 -1.35605,1.56919 -3.01367,2.95703 l -3.01367,2.52344 -2.64063,-2.5918 c -1.4525,-1.42552 -2.63048,-2.87182 -2.61718,-3.21289 0.0133,-0.34106 0.81631,-1.54817 1.78515,-2.68164 l 1.76172,-2.06055 0,-8.93945 0,-8.94141 4.28516,-3.91992 4.28515,-3.91992 -2.73828,-3.5586 c -4.41747,-5.74083 -3.77302,-5.78651 -9.92773,0.7168 l -5.42774,5.73633 0,7.72266 0,7.7207 1.89649,2.64258 1.89843,2.64257 -2.92578,2.96875 -2.92382,2.96875 -2.93164,-2.93359 -2.9336,-2.93164 1.87695,-2.36914 1.875,-2.36914 0,-8.78125 0,-8.78125 5.94727,-6.39453 5.94531,-6.39453 -1.92773,-1.45899 c -1.06048,-0.80284 -3.08014,-2.10613 -4.48828,-2.89453 l -2.56055,-1.43359 -6.19531,6.54883 -6.19532,6.54687 -0.0234,7.86914 -0.0254,7.86914 1.90429,2.70313 1.9043,2.70117 -2.62305,2.67187 c -1.44286,1.47017 -2.91283,2.67383 -3.26757,2.67383 -0.6536,0 -5.65625,-4.81772 -5.65625,-5.44726 0,-0.18813 0.80496,-1.35203 1.7871,-2.58789 l 1.78516,-2.24805 0,-9.00586 0,-9.00586 6.25,-6.22852 c 3.4375,-3.4258 6.25,-6.40497 6.25,-6.62109 0,-0.95114 -8.8561,-2.48189 -14.25195,-2.46289 z m -10.74805,59.67969 10.41602,0 10.41797,0 0,12.20117 0,12.20312 -10.41797,0 -10.41602,0 0,-12.20312 0,-12.20117 z"
style="fill:#138cce;fill-opacity:1"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path5273"
d="m 261.86914,888.96838 c -5.72754,0 -7.96949,0.26172 -11.31055,1.32032 -11.51205,3.64754 -21.46164,13.30123 -25.33007,24.57422 -1.64646,4.79797 -2.23832,14.93916 -1.19141,20.39062 0.91196,4.74876 4.59736,12.36764 7.88867,16.3086 6.38558,7.64591 14.65461,12.46232 23.92383,13.93359 4.494,0.71331 12.91727,0.0873 17.48633,-1.29883 5.62976,-1.70788 11.34061,-5.24288 15.89062,-9.83789 l 3.89258,-3.93164 0,6.62305 0,6.62109 3.27344,0 3.27344,0 0,-34.22656 0,-34.22657 -3.27344,0 -3.27344,0 0,4.44532 0,4.44336 -4.0332,-3.99805 c -4.70153,-4.66061 -10.05583,-7.96601 -15.90821,-9.82031 -3.34106,-1.0586 -5.58105,-1.32032 -11.30859,-1.32032 z m 0,6.27149 c 11.63221,0 23.33207,7.41324 28.63672,18.14648 l 2.31641,4.6875 0,9.28907 0,9.28711 -2.25,4.55273 c -3.60787,7.30005 -10.01713,13.06033 -17.83594,16.03125 -6.22921,2.36691 -16.31688,2.31658 -22.47656,-0.11133 -21.52195,-8.48316 -27.19302,-36.23664 -10.7168,-52.44922 5.92802,-5.83316 14.44825,-9.43359 22.32617,-9.43359 z"
style="fill:#000000" />
<path
id="path5269"
transform="translate(0,527.95276)"
d="m 380.95312,323.81445 0,26.3086 0,26.30859 -4.01953,-3.98828 c -6.53304,-6.48566 -11.74374,-9.3684 -19.68945,-10.88867 -13.29465,-2.54369 -25.45185,1.18767 -34.92969,10.7207 -8.09889,8.14605 -11.22887,15.83418 -11.16797,27.43164 0.0283,5.38204 0.31364,7.41833 1.60547,11.4375 4.37424,13.6092 16.79935,24.28751 30.62305,26.31836 12.67314,1.86181 24.07939,-1.83866 32.96484,-10.69336 l 4.61328,-4.59765 0,6.77343 0,6.77344 2.97461,0 2.97657,0 0,-55.95313 0,-55.95117 -2.97657,0 -2.97461,0 z m -31.92382,43.65821 c 13.60087,-0.11402 26.40181,8.72539 30.75,21.8164 1.10274,3.32005 1.25587,4.92037 1.08008,11.3086 -0.19706,7.16071 -0.2883,7.61674 -2.41211,12.06445 -3.8087,7.97623 -11.34634,14.62866 -19.39063,17.11328 -5.0741,1.56722 -14.4474,1.58376 -19.29687,0.0332 -9.58703,-3.06535 -17.78936,-11.29734 -20.75782,-20.83203 -1.67825,-5.39053 -1.68018,-13.78755 -0.006,-19.13476 3.53984,-11.30501 14.0841,-20.31534 25.79493,-22.04102 1.41563,-0.2086 2.83129,-0.31633 4.23828,-0.32812 z"
style="fill:#000000"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path5265"
d="m 166.97618,964.83259 c -21.75809,-2.63899 -41.37502,-19.21544 -47.5132,-40.149 -8.96936,-30.58901 7.73501,-62.45221 37.69178,-71.89621 17.57156,-5.5395 37.37588,-2.13356 51.94843,8.93408 l 4.32939,3.28811 -2.24606,1.98485 c -1.23532,1.09167 -2.45482,1.996 -2.70999,2.00963 -0.25517,0.0136 -1.86231,-1.089 -3.57143,-2.45029 -3.87587,-3.08708 -12.62608,-7.29958 -17.71086,-8.52631 -5.44637,-1.31397 -14.93751,-1.77677 -20.04244,-0.9773 -10.66761,1.67062 -19.72254,6.08769 -27.36843,13.35053 -7.42109,7.04931 -12.2821,14.98073 -14.84604,24.22339 -1.52191,5.48625 -1.52191,20.70422 0,26.19047 2.50718,9.03805 7.3927,17.10441 14.44273,23.84605 6.87135,6.57076 13.85917,10.54586 22.5366,12.82017 6.39866,1.67706 19.86299,1.55315 26.11705,-0.24035 5.94228,-1.70409 12.17059,-4.74254 16.72838,-8.16086 1.95784,-1.46837 3.69891,-2.65862 3.86905,-2.64499 0.17013,0.0136 1.31323,0.91206 2.54021,1.99651 l 2.23089,1.97174 -3.59163,2.82174 c -5.42284,4.26043 -13.9438,8.49803 -20.36122,10.12594 -6.48475,1.64499 -15.9717,2.27066 -22.47321,1.4821 z"
style="fill:#000000" />
<path
inkscape:connector-curvature="0"
id="path5263"
d="m 554.65039,889.18128 c -6.91928,-0.0329 -11.14322,0.89901 -17.17578,3.78515 -6.73187,3.22071 -14.14013,10.49111 -17.45899,17.13477 -3.81676,7.64036 -4.95689,17.07431 -3.11523,25.76562 2.80834,13.25329 14.58368,25.28372 28.07422,28.68164 2.39925,0.6043 5.72095,0.81721 10.63281,0.6836 7.94882,-0.21621 12.21352,-1.41533 18.50781,-5.20508 3.48421,-2.09782 11.23524,-9.37022 10.63086,-9.97461 -0.19149,-0.19149 -1.47021,-0.77293 -2.83984,-1.29102 l -2.49023,-0.9414 -3.54493,3.24609 c -10.38689,9.51062 -27.0392,11.10176 -38.37109,3.66797 -5.84027,-3.83126 -8.14693,-0.51508 19.87891,-28.54687 l 24.95117,-24.95899 -1.1582,-1.28906 c -2.07489,-2.30724 -8.44849,-6.52698 -12.09766,-8.00977 -5.08035,-2.06433 -8.51975,-2.71994 -14.42383,-2.74804 z m -0.73242,6.0371 c 5.56474,0 9.74603,0.89672 14.18945,3.03907 7.06617,3.40688 8.82718,0.62704 -16.38281,25.84375 -12.26606,12.26933 -22.58214,22.30859 -22.92383,22.30859 -0.96613,0 -4.2472,-5.88918 -5.30664,-9.52344 -3.40118,-11.66716 -0.39552,-23.80439 7.95117,-32.10742 6.4285,-6.39488 13.86675,-9.56055 22.47266,-9.56055 z"
style="fill:#138cce;fill-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path5259"
d="m 608.83332,964.93466 c -7.19707,-2.36106 -13.28988,-9.16279 -14.52835,-16.21877 -0.37691,-2.14741 -0.36553,-2.16152 2.27884,-2.82738 3.70044,-0.93179 3.9145,-0.87907 3.92925,0.9677 0.0303,3.79834 3.88959,9.15956 7.99629,11.10832 5.17784,2.45704 11.54089,1.43832 15.59585,-2.4969 3.20231,-3.10773 4.49002,-6.06815 4.49002,-10.32244 0,-6.8707 -3.32826,-10.8104 -15.02313,-17.78303 -10.52676,-6.27619 -13.82084,-10.50028 -13.86321,-17.77719 -0.0523,-8.97762 6.11939,-15.90391 14.79141,-16.60002 5.08654,-0.40829 8.59066,0.64275 11.92342,3.57636 3.17952,2.79872 5.02866,6.124 5.02866,9.04296 0,1.84978 -0.25605,2.20604 -2.15603,2.9999 -1.18581,0.49547 -2.33562,0.90085 -2.55512,0.90085 -0.2195,0 -0.7063,-1.14864 -1.08179,-2.55254 -1.32308,-4.94687 -4.78845,-7.70387 -9.68325,-7.70387 -5.79844,0 -10.11905,4.27689 -10.11905,10.01666 0,4.8637 2.85121,8.09148 11.96945,13.55033 10.8892,6.51907 14.41592,10.16486 16.38496,16.93811 2.66095,9.15335 -2.17047,19.74655 -10.91887,23.94034 -3.0701,1.47174 -11.53969,2.19843 -14.45935,1.24061 z"
style="fill:#000000" />
<path
id="path5255"
d="m 498.80951,907.71931 0,-55.95239 2.67857,0 2.67857,0 0,55.95239 0,55.95238 -2.67857,0 -2.67857,0 0,-55.95238 z"
style="fill:#138cce;fill-opacity:1"
inkscape:connector-curvature="0" />
</g>
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#138cce;fill-opacity:1;stroke:#000000;stroke-width:1.79999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
d="M 0 476.55273 L 0 524.41016 L 744.09375 524.41016 L 744.09375 476.55273 L 743.83789 476.55273 C 742.65253 482.43459 737.47962 486.83789 731.23828 486.83789 L 12.857422 486.83789 C 6.6160829 486.83789 1.4412199 482.43459 0.25585938 476.55273 L 0 476.55273 z "
transform="translate(0,527.95276)"
id="rect4160" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

View File

@ -19,7 +19,9 @@
\usepackage{xcolor} \usepackage{xcolor}
\usepackage{hyperref} \usepackage{hyperref}
\usepackage{hyperxmp} \usepackage{hyperxmp}
\usepackage{minted}
\usepackage{tikz} \usepackage{tikz}
\usepackage{gitdags}
%\usepackage{pstricks} %\usepackage{pstricks}
%\usepackage{pst-3d,pst-coil,pst-eps,pst-fill,pst-grad,pst-node,pst-plot,pst-text,pst-tree} %\usepackage{pst-3d,pst-coil,pst-eps,pst-fill,pst-grad,pst-node,pst-plot,pst-text,pst-tree}
@ -56,10 +58,12 @@
\setbeamertemplate{background} \setbeamertemplate{background}
{\skbinput[from=fig]{cadoles/gray_frame_background}} {\skbinput[from=fig]{cadoles/gray_frame_background}}
\newcommand{\commande}[1]{\texttt{#1}}
\title[]{Formation Git} \title[]{Formation Git}
\subtitle{Oberthur Cash Protection} \subtitle{Oberthur Cash Protection}
\author[Equipe Auteur]{Cadoles} \author[Equipe Auteur]{Benjamin Bohard}
\institute[Cadoles]{\skbfigure[width=2cm]{cadoles/logo_01.png}} \institute[Cadoles]{\skbfigure[width=2cm]{cadoles/logo_01.png}}
@ -90,12 +94,10 @@
\begin{document} \begin{document}
\skbinput[from=rep]{style/title} \skbinput[from=rep]{style/title}
\begin{frame}
\frametitle{Plan}
\tableofcontents[part=1, pausesections]
\end{frame}
\part{Fondamentaux} \part{Fondamentaux}
\frame{\partpage}
\frame{\tableofcontents[part=1]}
\section{Qu'attendre d'un SCM ?} \section{Qu'attendre d'un SCM ?}
\skbinput[from=rep]{outils/scm/definition} \skbinput[from=rep]{outils/scm/definition}
\skbinput[from=rep]{outils/scm/fonctionnalites_attendues} \skbinput[from=rep]{outils/scm/fonctionnalites_attendues}
@ -107,41 +109,44 @@
\skbinput[from=rep]{outils/scm/workflow/branching} \skbinput[from=rep]{outils/scm/workflow/branching}
\skbinput[from=rep]{outils/scm/workflow/driessen} \skbinput[from=rep]{outils/scm/workflow/driessen}
\skbinput[from=rep]{outils/scm/workflow/driessen/schema} \skbinput[from=rep]{outils/scm/workflow/driessen/schema}
\part{Pratique} \skbinput[from=rep]{commun/questions}
\part{Préparation}
\frame{\partpage}
\section{Installation} \section{Installation}
\subsection{Côté \emph{client}} \subsection{Côté \emph{client}}
\skbinput[from=rep]{outils/scm/git/installation/windows} \skbinput[from=rep]{outils/scm/git/installation/windows}
\skbinput[from=rep]{outils/scm/git/installation/macos} \skbinput[from=rep]{outils/scm/git/installation/macos}
\skbinput[from=rep]{outils/scm/git/installation/linux} \skbinput[from=rep]{outils/scm/git/installation/linux}
\subsection{Côté \emph{serveur}} \subsection{Côté \emph{serveur}}
\skbinput[from=rep]{outils/scm/git/web/basicssh}
\skbinput[from=rep]{outils/scm/git/web/gitolite}
\skbinput[from=rep]{outils/scm/git/web/gitlab} \skbinput[from=rep]{outils/scm/git/web/gitlab}
\skbinput[from=rep]{outils/scm/git/web/gogs} \skbinput[from=rep]{outils/scm/git/web/gogs}
\section{Configuration} \section{Configuration}
\subsection{Utilisateur} \subsection{Utilisateur}
\skbinput[from=rep]{outils/scm/git/configuration/presentation} \skbinput[from=rep]{outils/scm/git/configuration/presentation}
\skbinput[from=rep]{outils/scm/git/configuration/user} \skbinput[from=rep]{outils/scm/git/configuration/user}
\skbinput[from=rep]{outils/scm/git/configuration/alias} \subsection{Ergonomie}
\subsection{Dépôts}
\skbinput[from=rep]{outils/scm/git/configuration/gitignore}
\skbinput[from=rep]{outils/scm/git/commandes/remote/add}
\skbinput[from=rep]{outils/scm/git/commandes/branch/track}
\section{Ergonomie}
\skbinput[from=rep]{outils/scm/git/configuration/alias} \skbinput[from=rep]{outils/scm/git/configuration/alias}
\skbinput[from=rep]{outils/scm/git/configuration/editeur} \skbinput[from=rep]{outils/scm/git/configuration/editeur}
\skbinput[from=rep]{outils/scm/git/configuration/bash} \skbinput[from=rep]{outils/scm/git/configuration/shell}
\section{Commandes} \subsection{Hooks}
\subsection{Pour démarrer un projet} \skbinput[from=rep]{outils/scm/git/configuration/hooks}
\part{Récapitulatif des commandes}
\frame{\partpage}
\section{Pour démarrer un projet}
\skbinput[from=rep]{outils/scm/git/commandes/init} \skbinput[from=rep]{outils/scm/git/commandes/init}
\skbinput[from=rep]{outils/scm/git/commandes/clone} \skbinput[from=rep]{outils/scm/git/commandes/clone}
\subsection{Pour faire le point} \section{Pour faire le point}
\skbinput[from=rep]{outils/scm/git/commandes/status} \skbinput[from=rep]{outils/scm/git/commandes/status}
\skbinput[from=rep]{outils/scm/git/commandes/diff} \skbinput[from=rep]{outils/scm/git/commandes/diff}
\skbinput[from=rep]{outils/scm/git/commandes/log} \skbinput[from=rep]{outils/scm/git/commandes/log}
\skbinput[from=rep]{outils/scm/git/commandes/cherry} \skbinput[from=rep]{outils/scm/git/commandes/cherry}
\skbinput[from=rep]{outils/scm/git/commandes/show} \skbinput[from=rep]{outils/scm/git/commandes/show}
\skbinput[from=rep]{outils/scm/git/commandes/bisect}
\skbinput[from=rep]{outils/scm/git/commandes/ls-files}
\skbinput[from=rep]{outils/scm/git/commandes/blame} \skbinput[from=rep]{outils/scm/git/commandes/blame}
\subsection{Pour modifier le contenu du dépôt} \section{Pour modifier le contenu du dépôt}
\skbinput[from=rep]{outils/scm/git/stockage}
\skbinput[from=rep]{outils/scm/git/commandes/checkout} \skbinput[from=rep]{outils/scm/git/commandes/checkout}
\skbinput[from=rep]{outils/scm/git/commandes/pull} \skbinput[from=rep]{outils/scm/git/commandes/pull}
\skbinput[from=rep]{outils/scm/git/commandes/fetch} \skbinput[from=rep]{outils/scm/git/commandes/fetch}
@ -150,42 +155,46 @@
\skbinput[from=rep]{outils/scm/git/commandes/add} \skbinput[from=rep]{outils/scm/git/commandes/add}
\skbinput[from=rep]{outils/scm/git/commandes/reset} \skbinput[from=rep]{outils/scm/git/commandes/reset}
\skbinput[from=rep]{outils/scm/git/commandes/clean} \skbinput[from=rep]{outils/scm/git/commandes/clean}
\skbinput[from=rep]{outils/scm/git/commandes/commit} \skbinput[from=rep]{outils/scm/git/commandes/commit}
\skbinput[from=rep]{outils/scm/git/commandes/cherry-pick} \skbinput[from=rep]{outils/scm/git/commandes/cherry-pick}
\skbinput[from=rep]{outils/scm/git/commandes/revert} \skbinput[from=rep]{outils/scm/git/commandes/revert}
\skbinput[from=rep]{outils/scm/git/commandes/push} \skbinput[from=rep]{outils/scm/git/commandes/push}
\subsection{Pour organiser son développement} \skbinput[from=rep]{outils/scm/git/commandes/filter-branch}
\section{Pour organiser son développement}
\skbinput[from=rep]{outils/scm/git/commandes/branch} \skbinput[from=rep]{outils/scm/git/commandes/branch}
\skbinput[from=rep]{outils/scm/git/commandes/tag} \skbinput[from=rep]{outils/scm/git/commandes/tag}
\section{Mise en pratique} \section{Aide-mémoire}
\subsection{Mise en place} \skbinput[from=rep]{outils/scm/git/commandes}
\part{Mise en pratique}
\frame{\partpage}
\section{Mise en place}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_01} \skbinput[from=rep]{outils/scm/git/exercices/exercice_01}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_01/steps} \skbinput[from=rep]{outils/scm/git/exercices/exercice_01/steps}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_02} \skbinput[from=rep]{outils/scm/git/exercices/exercice_02}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_02/steps} \skbinput[from=rep]{outils/scm/git/exercices/exercice_02/steps}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_03} \skbinput[from=rep]{outils/scm/git/exercices/exercice_03}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_03/steps} \skbinput[from=rep]{outils/scm/git/exercices/exercice_03/steps}
\subsection{Dépôt individuel} \section{Dépôt individuel}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_04} \skbinput[from=rep]{outils/scm/git/exercices/exercice_04}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_04/steps} \skbinput[from=rep]{outils/scm/git/exercices/exercice_04/steps}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_05} \skbinput[from=rep]{outils/scm/git/exercices/exercice_05}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_05/steps} \skbinput[from=rep]{outils/scm/git/exercices/exercice_05/steps}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_06} \skbinput[from=rep]{outils/scm/git/exercices/exercice_06}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_06/steps} \skbinput[from=rep]{outils/scm/git/exercices/exercice_06/steps}
\subsection{Dépôt commun} \section{Dépôt commun}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_07} \skbinput[from=rep]{outils/scm/git/exercices/exercice_07}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_07/steps} \skbinput[from=rep]{outils/scm/git/exercices/exercice_07/steps}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_08} \skbinput[from=rep]{outils/scm/git/exercices/exercice_08}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_08/steps} \skbinput[from=rep]{outils/scm/git/exercices/exercice_08/steps}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_09} \skbinput[from=rep]{outils/scm/git/exercices/exercice_09}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_09/steps} \skbinput[from=rep]{outils/scm/git/exercices/exercice_09/steps}
\subsection{Paquet debian} \section{Paquet debian}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_10} \skbinput[from=rep]{outils/scm/git/exercices/exercice_10}
\skbinput[from=rep]{outils/scm/git/exercices/exercice_10/steps} \skbinput[from=rep]{outils/scm/git/exercices/exercice_10/steps}
\section{Pour aller plus loin} \part{Pour aller plus loin}
\frame{\partpage}
\skbinput[from=rep]{outils/scm/git/references/references} \skbinput[from=rep]{outils/scm/git/references/references}
\section{licence} \part{licence}
\skbinput[from=rep]{licences/license-cc-by-sa-2.0} \skbinput[from=rep]{licences/license-cc-by-sa-2.0}
\end{document} \end{document}

View File

@ -0,0 +1,279 @@
%%
%% Copyright (C) 2014 by Julien Cretel <jubobs.tex at gmail.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%
%% http://www.latex-project.org/lppl.txt
%%
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
%%
%% The Current Maintainer of this work is Julien Cretel.
%%
%% This work currently consists of the file gitdags.sty.
%%
\NeedsTeXFormat{LaTeX2e}[2011/06/27]
\ProvidesClass{gitdags}
[2014/08/28 v0.1 A package for drawing educational Git history graphs]
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{tikz}}
\ProcessOptions\relax
\RequirePackage{xcolor-solarized}
\RequirePackage{tikz}
\usetikzlibrary{
arrows.meta,
graphs,
positioning,
shadows,
shapes,
}
% conflict color
\colorlet{conflictcolor}{red}
% custom shape, adapted from 102.5.3 in the TikZ 3.0 manual
\pgfdeclareshape{dogeared}{
\inheritsavedanchors[from=rectangle]
\inheritanchorborder[from=rectangle]
\inheritanchor[from=rectangle]{center}
\inheritanchor[from=rectangle]{north}
\inheritanchor[from=rectangle]{south}
\inheritanchor[from=rectangle]{west}
\inheritanchor[from=rectangle]{east}
\backgroundpath{%
\southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y
\northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y
\pgf@xc=\pgf@xb \advance\pgf@xc by-5pt
\pgf@yc=\pgf@yb \advance\pgf@yc by-5pt
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}}
\pgfpathlineto{\pgfpoint{\pgf@xc}{\pgf@yb}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yc}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}}
\pgfpathclose
\pgfpathmoveto{\pgfpoint{\pgf@xc}{\pgf@yb}}
\pgfpathlineto{\pgfpoint{\pgf@xc}{\pgf@yc}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yc}}
\pgfpathclose
}
}
% To cancel a shadow (see http://tex.stackexchange.com/a/198298/21891)
\tikzset{reset preaction/.code={\def\tikz@preactions{}}}
% --- repository history graphs ---
% style definitions
\tikzset{
gitdags node/.style={
draw,
node distance = 1.4em,
drop shadow = {opacity=0.15},
font = \fontfamily{lmtt}\selectfont\small,
},
DAGref/.style={
gitdags node,
shape = rectangle,
minimum height = 1.4em,
draw = solarized-base01,
thick,
font = \fontfamily{lmtt}\selectfont\scriptsize,
},
DAGedge/.style={
semithick,
Latex-,
draw = gray,
},
DAGrefedge/.style={
DAGedge,
thick,
densely dotted,
},
DAGcommit/.style={
gitdags node,
shape = rounded rectangle,
rounded rectangle arc length = 90,
minimum height = 1.6em,
minimum width = 2em,
draw = solarized-base01,
fill = solarized-green!20,
very thick,
},
graphs/DAG/.style={
nodes = DAGcommit,
edges = DAGedge,
branch down = 3em,
grow right sep = 1.5em,
},
gitareas/.style={
gitdags node,
shape = rectangle,
rounded corners = .5em,
minimum width = 7em,
minimum height = 3em,
text opacity = 0.75,
semithick,
},
gitSA/.style={
gitareas,
anchor = north west,
xshift = 1em,
yshift = -1em,
draw = solarized-orange,
fill = solarized-orange!5,
text = solarized-orange,
},
gitWT/.style={
gitareas,
node distance = .6em,
draw = solarized-violet,
fill = solarized-violet!5,
text = solarized-violet,
},
resetarrows/.style={
-Stealth,
dashed,
thick,
draw = solarized-base02,
draw opacity = .75,
},
highlighted commit/.style={
DAGcommit,
reset preaction,
fill opacity = 0,
draw = solarized-base02,
},
problematic commits/.style={
reset preaction,
draw opacity = .25,
fill opacity = .25,
},
graphs/unreachable/.style={
problematic commits,
target edge style = problematic commits,
},
graphs/conflict/.style={
empty nodes,
problematic commits,
target edge style = problematic commits,
draw = conflictcolor,
fill = conflictcolor!25,
},
placeholder commits/.style={
reset preaction,
draw opacity = 0,
fill opacity = 0,
},
graphs/placeholder/.style={
placeholder commits,
target edge style = placeholder commits,
},
blob/.style={
shape = dogeared,
minimum width = 2em,
minimum height = 2.82em,
node distance = .75em,
line join = bevel,
draw = black,
fill = white,
align = left,
font = \ttfamily\tiny,
},
}
% directed acyclic graph
\newcommand\gitDAG[1][]{\graph[DAG,#1]}
% helper macro (let's check the name's availability)
\newcommand\nodename@gitdags{}
% local-branch reference
\newcommand\gitbranch[4][]{%
\renewcommand\nodename@gitdags{#1}%
\if\relax\detokenize{#1}\relax% check for empty optional argument
\renewcommand\nodename@gitdags{#2}%
\fi
\node[
DAGref,
fill = yellow!30,
] (\nodename@gitdags) [#3] {#2};
\draw[DAGrefedge] (#4) -- (\nodename@gitdags);
}
% remote-branch reference
\newcommand\gitremotebranch[4][]{%
\renewcommand\nodename@gitdags{#1}%
\if\relax\detokenize{#1}\relax% check for empty optional argument
\renewcommand\nodename@gitdags{#2}%
\fi
\node[
DAGref,
fill = solarized-blue!20,
] (\nodename@gitdags) [#3] {#2};
\draw[DAGrefedge] (#4) -- (\nodename@gitdags);
}
% tag reference
\newcommand\gittag[4][]{%
\renewcommand\nodename@gitdags{#1}%
\if\relax\detokenize{#1}\relax% check for empty optional argument
\renewcommand\nodename@gitdags{#2}%
\fi
\node[
DAGref,
fill = solarized-magenta!20,
] (\nodename@gitdags) [#3] {#2};
\draw[DAGrefedge] (#4) -- (\nodename@gitdags);
}
% HEAD symbolic reference
\newcommand\gitHEAD[2]{%
\node[
DAGref,
fill = solarized-red!20,
node distance = 1em,
] (gitHEAD) [#1] {HEAD};
\draw[DAGrefedge] (#2) -- (gitHEAD);
}
% the following macro is useful for explaining how merge conflicts arise
\newcommand\gitblob[2][]
{\node[blob,#1] {#2};}
% to highlight a merge conflict arising in a given file
\newcommand\gitblobmc[1]{%
\node[
blob,
draw = conflictcolor,
text = conflictcolor,
font = \scriptsize,
#1] {???};
}
% staging area and worktree
\newcommand\SAandWT{%
\node[
gitSA,
] (stagingarea) at (current bounding box.south east) {staging area};
\node[
gitWT,
below=of stagingarea,
] (workingtree) {working tree};
}
% arrows pointing from a commit to the staging area or working tree
\newcommand\toSAorWT[2]{%
\node[highlighted commit] at (#1) {\phantom{#1}};
\draw[resetarrows] (#1.south) to[out=290, in=170]
([xshift=1em,yshift=-1em]#2.north west);
}
\newcommand\toSAfrom[1]{\toSAorWT{#1}{stagingarea}}
\newcommand\toWTfrom[1]{\toSAorWT{#1}{workingtree}}
\endinput

View File

@ -0,0 +1,92 @@
%%
%% This is file `xcolor-solarized.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% xcolor-solarized.dtx (with options: `package')
%%
%% This is a generated file.
%%
%% Copyright (C) 2014 by Julien Cretel <jubobs.tex at gmail.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%
%% http://www.latex-project.org/lppl.txt
%%
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
%%
%% The Current Maintainer of this work is Julien Cretel.
%%
%% This work currently consists of the files xcolor-solarized.dtx,
%% xcolor-solarized.ins, and the derived file xcolor-solarized.sty.
%%
\NeedsTeXFormat{LaTeX2e}[2011/06/27]
\ProvidesPackage{xcolor-solarized}
[2015/02/17 v0.3 xcolor definitions for Ethan Schoonover's
Solarized theme]
\RequirePackage{xcolor}[2007/01/21]
\RequirePackage{kvoptions}[2011/06/30]
\SetupKeyvalOptions{
family=solarized,
prefix=solarized@
}
\DeclareStringOption[solarized-]{prefix}
\DeclareDefaultOption{%
\OptionNotUsed
\PackageError{xcolor-solarized}{Unknown `\CurrentOption' option}
}
\ProcessKeyvalOptions*
\newcommand\solarized@definecolor{\expandafter\definecolor\expandafter}
\solarized@definecolor{\solarized@prefix base03} {RGB}{000, 043, 054}
\solarized@definecolor{\solarized@prefix base02} {RGB}{007, 054, 066}
\solarized@definecolor{\solarized@prefix base01} {RGB}{088, 110, 117}
\solarized@definecolor{\solarized@prefix base00} {RGB}{101, 123, 131}
\solarized@definecolor{\solarized@prefix base0} {RGB}{131, 148, 150}
\solarized@definecolor{\solarized@prefix base1} {RGB}{147, 161, 161}
\solarized@definecolor{\solarized@prefix base2} {RGB}{238, 232, 213}
\solarized@definecolor{\solarized@prefix base3} {RGB}{253, 246, 227}
\solarized@definecolor{\solarized@prefix yellow} {RGB}{181, 137, 000}
\solarized@definecolor{\solarized@prefix orange} {RGB}{203, 075, 022}
\solarized@definecolor{\solarized@prefix red} {RGB}{220, 050, 047}
\solarized@definecolor{\solarized@prefix magenta}{RGB}{211, 054, 130}
\solarized@definecolor{\solarized@prefix violet} {RGB}{108, 113, 196}
\solarized@definecolor{\solarized@prefix blue} {RGB}{038, 139, 210}
\solarized@definecolor{\solarized@prefix cyan} {RGB}{042, 161, 152}
\solarized@definecolor{\solarized@prefix green} {RGB}{133, 153, 000}
\newcommand\solarizedPalette[1][3em]{%
\newcommand\solarized@square{\rule{#1}{#1}}
\noindent
\begin{tabular}{cccc cccc}
\textcolor{solarized-base03} \solarized@square &
\textcolor{solarized-base02} \solarized@square &
\textcolor{solarized-base01} \solarized@square &
\textcolor{solarized-base00} \solarized@square &
\textcolor{solarized-base0} \solarized@square &
\textcolor{solarized-base1} \solarized@square &
\textcolor{solarized-base2} \solarized@square &
\textcolor{solarized-base3} \solarized@square \\
base03 & base02 & base01 & base00 &
base0 & base1 & base2 & base3 \\[#1]
\textcolor{solarized-yellow} \solarized@square &
\textcolor{solarized-orange} \solarized@square &
\textcolor{solarized-red} \solarized@square &
\textcolor{solarized-magenta}\solarized@square &
\textcolor{solarized-violet} \solarized@square &
\textcolor{solarized-blue} \solarized@square &
\textcolor{solarized-cyan} \solarized@square &
\textcolor{solarized-green} \solarized@square \\
yellow & orange & red & magenta &
violet & blue & cyan & green
\end{tabular}
}
\endinput
%%
%% End of file `xcolor-solarized.sty'.