113 lines
3.0 KiB
TeX
113 lines
3.0 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}
|
|
|
|
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 = <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.
|
|
|
|
% ====================================================================
|
|
% nouvelle section 15 avril 2021 -
|
|
\section{Questions ouvertes}
|
|
|
|
Ahem\dots
|
|
|
|
Comment exclure par \textsl{.gitignore} tous les fichiers \texttt{foo.html} ?
|
|
|
|
% ====================================================================
|
|
|
|
\section{Trucs}
|
|
|
|
|
|
git archive --format tgz --prefix=my-project/
|
|
--output /tmp/my-project.tar.gz HEAD
|
|
|
|
% ====================================================================
|
|
|