Vous avez reçu un message "Your GitLab account has been locked ..." ? Pas d'inquiétude : lisez cet article https://docs.gricad-pages.univ-grenoble-alpes.fr/help/unlock/

Commit a6abf78f authored by Grégory Mounié's avatar Grégory Mounié
Browse files

Passage à minted pour le TP1 modèle

Utilisation de minted pour le rendu des commandes. Principalement avec
le mode console qui propose un prompt
parent ff0e5465
......@@ -54,12 +54,12 @@ python3 suivant (que vous pouvez également télécharger à l'adresse
\url{http://recherche.noiraudes.net/resources/git/TP/zlibcat.py3})
décode son entrée standart au format zlib.
\lstinputlisting[language=python]{zlibcat.py3}
\inputminted{python}{zlibcat.py3}
\begin{lstlisting}
mon_editeur_prefere zlibcat.py3
chmod u+x zlibcat.py3
\end{lstlisting}
\begin{minted}{console}
$ mon_editeur_prefere zlibcat.py3
$ chmod u+x zlibcat.py3
\end{minted}
Nous allons l'utiliser pour une partie de notre exploration.
......@@ -67,22 +67,22 @@ Nous allons l'utiliser pour une partie de notre exploration.
Nous allons créer le dépôt minimaliste qui nous servira dans nos
explorations.
\begin{lstlisting}
mkdir DepotMinimaliste
cd DepotMinimaliste
git init .
mon_editeur_prefere fichier.txt # ecrire quelques lignes
git add fichier.txt
git commit -m "message 1"
\end{lstlisting}
\begin{minted}{console}
$ mkdir DepotMinimaliste
$ cd DepotMinimaliste
$ git init .
$ mon_editeur_prefere fichier.txt # ecrire quelques lignes
$ git add fichier.txt
$ git commit -m "message 1"
\end{minted}
\section{Explorer le répertoire .git}
\label{sec=gitrepo}
La commande suivante nous permet de lire la composition du dépot.
\begin{lstlisting}
\begin{minted}{console}
ls -F .git
\end{lstlisting}
\end{minted}
Dans ce répertoire se trouve un fichier \texttt{HEAD}.
La tête (HEAD) du dépot est indiqué dans le répertoire indiqué dans le
......@@ -91,9 +91,9 @@ dans le répertoire \texttt{refs/}, trouver le fichier contenant le
résumé SHA-1 de la tête et noter sa valeur.
Vérifier que c'est bien le même que le commit que vous venez de faire.
\begin{lstlisting}
git log
\end{lstlisting}
\begin{minted}{console}
$ git log
\end{minted}
\section{Stockage: le répertoire objects}
......@@ -106,9 +106,9 @@ Dans ce répertoire, se trouve un fichier dont le nom est la suite du SHA-1.
Afficher le contenu du fichier en utilisant \texttt{zlibcat.py3} avec
une commande du genre:
\begin{lstlisting}
./zlibcat.py3 < .git/objects/2d/447e8255ace8f0d36527aa62ab7669f121f540
\end{lstlisting}
\begin{minted}{console}
$ ./zlibcat.py3 < .git/objects/2d/447e8255ace8f0d36527aa62ab7669f121f540
\end{minted}
Cela vous donnera l'identifiant SHA-1 du \texttt{tree}. Lisez son
contenu avec zlibcat.py3.
......@@ -122,9 +122,9 @@ vous avez tapez.
Il est possible de faire les mêmes opérations en demandant à Git de
faire le décodage proprement:
\begin{lstlisting}
git cat-file -p LE_SHA-1_A_LIRE_DANS_OBJECTS
\end{lstlisting}
\begin{minted}{console}
$ git cat-file -p LE_SHA-1_A_LIRE_DANS_OBJECTS
\end{minted}
Refaites le chemin complet vers \texttt{fichier.txt} en partant de
HEAD mais cette fois en utilisant Git.
......@@ -134,14 +134,14 @@ HEAD mais cette fois en utilisant Git.
Nous allons ajouter un fichier dans un sous-répertoire et
l'enregistrer dans un nouveau commit.
\begin{lstlisting}[language=sh]
mkdir sousRepertoire
mon_editeur_prefere sousRepertoire/fichier.txt # inserer quelques lignes
git add sousRepertoire/fichier.txt
git commit -m "message 2"
\end{lstlisting}
\begin{minted}{console}
$ mkdir sousRepertoire
$ mon_editeur_prefere sousRepertoire/fichier.txt # inserer quelques lignes
$ git add sousRepertoire/fichier.txt
$ git commit -m "message 2"
\end{minted}
Utiliser \lstinline{git cat-file -p} pour lire le \texttt{tree}. Il
Utiliser \mintinline{sh}{git cat-file -p} pour lire le \texttt{tree}. Il
pointe sur un autre tree (le sous-répertoire), qui pointe sur le
nouveau fichier. Vérifier que le contenu du nouveau fichier est bien
le bon.
......@@ -149,11 +149,11 @@ le bon.
\subsection{Les fichiers dupliqués}
Dupliquer un fichier et l'insérer dans le dépôt.
\begin{lstlisting}[language=sh]
cp fichier.txt copie_fichier.txt
git add copie_fichier.txt
git commit -m "message 3"
\end{lstlisting}
\begin{minted}{console}
$ cp fichier.txt copie_fichier.txt
$ git add copie_fichier.txt
$ git commit -m "message 3"
\end{minted}
Vérifier que le blob est le même pour les deux fichiers.
......@@ -165,15 +165,15 @@ Vérifier qu'il y a bien un nouveau blob. Il y a donc deux blobs
stockant quasiment les mêmes données.
Demander à git d'optimiser le stockage avec
\begin{lstlisting}
git gc
\end{lstlisting}
\begin{minted}{console}
$ git gc
\end{minted}
Un fichier \texttt{.pack} (et \texttt{.idx}) est apparu. Il contient
le stockage des fichiers avec des delta. La commande suivante permet d'afficher le contenu résumé du pack:
\begin{lstlisting}
git verify-pack -v .git/objects/pack/pack-0618531a948d3537443496da7765fb4d0b4fb74f
\end{lstlisting}
\begin{minted}{console}
$ git verify-pack -v .git/objects/pack/pack-0618531a948d3537443496da7765fb4d0b4fb74f
\end{minted}
Ce qui est conservé dans un pack, c'est la dernière version du fichier
avec un chaine de delta qui permet de revenir en arrière dans
......@@ -186,24 +186,24 @@ directement en toute circonstance. Ils fonctionnent de la même manière
que les branches (voir plus loin) mais ne bougent pas avec la tête.
Créez un tag sur la révision suivante~:
\begin{lstlisting}[language=sh]
git tag v0.1
\end{lstlisting}
\begin{minted}{console}
$ git tag v0.1
\end{minted}
Vérifiez que le fichier correspondant à ce tag a bien été créé dans le
dossier \texttt{.git/refs/tags} et que son contenu correspond bien au
commit sur lequel est positionnée la tête actuellement~:
\begin{lstlisting}
cat .git/refs/tags/v0.1
\end{lstlisting}
\begin{minted}{console}
$ cat .git/refs/tags/v0.1
\end{minted}
Nous allons avancer la branche \texttt{master}~:
\begin{lstlisting}[language=sh]
mon_editeur_prefere fichier2.txt # inserer quelques lignes
git add fichier2.txt
git commit -m "message 4"
\end{lstlisting}
\begin{minted}{console}
$ mon_editeur_prefere fichier2.txt # inserer quelques lignes
$ git add fichier2.txt
$ git commit -m "message 4"
\end{minted}
Vérifiez dans le journal que la branche \texttt{master} a bien avancé
et que le tag que vous avez créé précédemment est bien resté en place.
......@@ -212,28 +212,28 @@ et que le tag que vous avez créé précédemment est bien resté en place.
Nous allons créer une nouvelle branche nommée \texttt{develop}, puis
revenir dans la branche \texttt{master}.
\begin{lstlisting}[language=sh]
git checkout -b develop
cp fichier.txt copie_fichier2.txt
git add copie_fichier2.txt
git commit -m "message dev1"
\end{lstlisting}
\begin{minted}{console}
$ git checkout -b develop
$ cp fichier.txt copie_fichier2.txt
$ git add copie_fichier2.txt
$ git commit -m "message dev1"
\end{minted}
Vérifier que HEAD pointe bien sur le bon commit de \texttt{develop}.
\begin{lstlisting}[language=sh]
git checkout master
cp fichier.txt copie_fichier2.txt
git add copie_fichier2.txt
git commit -m "message 5"
\end{lstlisting}
\begin{minted}{console}
$ git checkout master
$ cp fichier.txt copie_fichier2.txt
$ git add copie_fichier2.txt
$ git commit -m "message 5"
\end{minted}
Vérifier que HEAD pointe bien sur le bon commit de \texttt{master}.
Et nous allons faire le merge (sauvegarder sans modifier le message)
\begin{lstlisting}
git merge develop
\end{lstlisting}
\begin{minted}{console}
$ git merge develop
\end{minted}
Vérifier que le commit a bien deux parents et que le tree pointe vers
le même fichier.
......@@ -248,37 +248,37 @@ convient de prendre ses précautions dans ce cas-là.
Récupérez l'identifiant du commit correspondant à la branche
\texttt{develop}. On peut par exemple utiliser~:
\begin{lstlisting}
git show develop
\end{lstlisting}
\begin{minted}{console}
$ git show develop
\end{minted}
Notez l'identifiant du commit, et récupérez (\texttt{checkout}) les
données de ce commit~:
\begin{lstlisting}
git checkout <numéro-du-commit>
\end{lstlisting}
\begin{minted}{console}
$ git checkout <numéro-du-commit>
\end{minted}
Normalement, Git doit vous avertir que vous passez en état «~tête
détachée~», mais c'est simplement un avertissement.
Créez un nouveau fichier et faites un commit~:
\begin{lstlisting}[language=sh]
mon_editeur_prefere fichier3.txt # inserer quelques lignes
git add fichier3.txt
git commit -m "message détaché 1"
\end{lstlisting}
\begin{minted}{console}
$ mon_editeur_prefere fichier3.txt # inserer quelques lignes
$ git add fichier3.txt
$ git commit -m "message détaché 1"
\end{minted}
Vérifiez que votre commit est bien dans le journal des révisions~:
\begin{lstlisting}[language=sh]
git log --graph --oneline
\end{lstlisting}
\begin{minted}{console}
$ git log --graph --oneline
\end{minted}
Notez mentalement le numéro de commit. Revenez à la branche master et
regardez le journal des révisions~:
\begin{lstlisting}[language=sh]
git checkout master
git log --graph --oneline
\end{lstlisting}
\begin{minted}{console}
$ git checkout master
$ git log --graph --oneline
\end{minted}
Mais où est donc passé le commit dans lequel vous aviez ajouté le
fichier \texttt{fichier3.txt}~? Il n'est référencé par aucune branche,
......@@ -297,41 +297,41 @@ révisions, ces points d'entrée étant~:
Nous allons rendre notre commit visible en la fusionnant dans
la branche \texttt{develop}~:
\begin{lstlisting}
git checkout develop
git merge <numéro-du-commit> # le numéro est celui du commit
# dans lequel on a créé fichier3.txt
\end{lstlisting}
\begin{minted}{console}
$ git checkout develop
$ git merge <numéro-du-commit> # le numéro est celui du commit
$ # dans lequel on a créé fichier3.txt
\end{minted}
Une autre solution possible était de créer une nouvelle branche
directement à partir de ce numéro de commit, avec%
\lstinline{git branch <nouvelle-branche> <numéro-du-commit>}.
\mintinline{sh}{git branch <nouvelle-branche> <numéro-du-commit>}.
\subsection{Reprendre le travail depuis une branche antérieure}
Revenez sur la branche master~:
\begin{lstlisting}
git checkout master
\end{lstlisting}
\begin{minted}{console}
$ git checkout master
\end{minted}
Nous allons maintenant effectuer les mêmes opérations mais en
repartant de la branche \texttt{develop}, et non de son commit
associé.
\begin{lstlisting}[language=sh]
git checkout develop
mon_editeur_prefere fichier3.txt # inserer quelques lignes
git add fichier3.txt
git commit -m "message dev2"
git checkout master
\end{lstlisting}
\begin{minted}{console}
$ git checkout develop
$ mon_editeur_prefere fichier3.txt # inserer quelques lignes
$ git add fichier3.txt
$ git commit -m "message dev2"
$ git checkout master
\end{minted}
Revenez sur la branche \texttt{develop} et vérifiez que rien n'est
perdu~:
\begin{lstlisting}[language=sh]
git checkout develop
git log --graph --oneline
\end{lstlisting}
\begin{minted}{console}
$ git checkout develop
$ git log --graph --oneline
\end{minted}
C'est normal. Lorsque l'on travaille à partir d'une branche, le
pointeur de la branche avance avec la tête. Lorsque l'on change de
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment