92 lines
2.4 KiB
TeX
92 lines
2.4 KiB
TeX
\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}
|
|
|
|
\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 = <personal.address>@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.
|
|
% --------------------------------------------------------------------
|
|
|
|
\section{Krkrkr...}
|
|
|
|
Tout cela semble bien compliqué.
|
|
|
|
|