\chapter{GIT} \index{GIT} \label{chap:GIT} Git est un système de gestion de version, très bien expliqué aux quatre coins des interwebs. Je ne vais donc pas m'étendre plus que ça, pour passer tout de suite à un cas particulier \footnote{que je n'arrive pas encore à vraiment maitriser}. Un des premiers ancêtres connus de Git est \textsc{sccs}\index{SCCS}. % -------------------------------------------------------------------- \section{Démarrage} \subsection{En local} \begin{verbatim} $ mkdir Foo $ cd Foo/ $ git init $ > README.txt $ git add README.txt \end{verbatim} Personnellement, à ce moment, je suis perdu, et je galère souvent avec git, désolé, je suis cablé comme ça. Alors je me soigne. C'est pour ça que ce chapitre est incohérent, puisqu'il n'est rempli que d'incertitudes. % -------------------------------------------------------------------- \subsection{Setup du serveur} Sur le serveur distant, dans un endroit accessible par le protocole \texttt{HTTP}, il faut créer le dépot. \begin{verbatim} $ mkdir Foo $ cd Foo/ $ git init --bare \end{verbatim} Et ensuite : \begin{verbatim} $ git update-server-info \end{verbatim} % -------------------------------------------------------------------- \subsection{Pousser le code} Notre commit\index{commit} local semble pertinent, il est temps de le faire connaitre au monde. \begin{verbatim} $ git push yuser@serveur:/chemin/vers/le/depot/Foo \end{verbatim} % -------------------------------------------------------------------- \section{Configuration dynamique} \texttt{http://sandrotosi.blogspot.com/2020/10/multiple-git-configurations-depending.html} One way to change the user.email git config value is to git config --local in every repo, but that's tedious, error-prone and doesn't scale very well with many repositories (and the chances to forget to set the right one on a new repo are ~100\%). The solution is to use the git-config ability to include extra configuration files, based on the repo path, by using includeIf: \vspace{1em} Content of \texttt{\$HOME/.gitconfig} : \begin{verbatim} [user] name = Sandro Tosi email = @gmail.com [includeIf "gitdir:~/deb/"] path = ~/.gitconfig-deb \end{verbatim} Every time the git path is in ~/deb/ (which is where i have all Debian repos) the file ~/.gitconfig-deb will be included; its content: \begin{verbatim} [user] email = morph@debian.org \end{verbatim} That results in my personal address being used on all repos not part of Debian, where i use my Debian email address. This approach can be extended to every other git configuration values. % ==================================================================== % nouvelle section 15 avril 2021 - \section{Questions ouvertes} Ahem\dots Comment exclure par \textsl{.gitignore} tous les fichiers \texttt{foo.html} ? % ==================================================================== \section{Krkrkr...} Tout cela semble bien compliqué. % ====================================================================