Cette section traitera principalement de l'étude des applications installées sur la machine serveur, avant l'installation d'un serveur git.
## Analyse préliminaire de `git` et des outils graphiques associés
Bien qu'un environnement graphique ne soit pas installé, cela ne change pas réellement les choses. La seule différence est **l'impossibilité d'installer un client graphique `git`**.
### Les interfaces graphiques pour git
Ici, on ne pourra donc pas installer `gitk` ou `git-gui`. Cependant, voici un bref résumé de ces logiciels, et de leur utilité.
`gitk` et `git-gui` sont deux clients *graphiques* pour `git`, écrits en python et utilisant la suite d'outils TCL/TK, qui permet la construction d'interfaces graphiques simples.
-`gitk` permet l'affichage des changements dans un répo Git, ou de quelques *commits* sélectionnés. Ceci inclut la visualisation du *graphique des commits*, ainsi que celle des fichiers dans l'arbre et les changements effectués sur ceux-ci. *([gitk, documentation git](https://git-scm.com/docs/gitk))*
-`git gui` permet principalement d'effectuer des changements dans les répos git en écrivant de nouveaux *commits*, en ajoutant de nouveaux changements à ceux-ci, en créant de nouvelles branches ou en les fusionnant localement, ou en récupérant ou publiant les changements depuis ou vers les sources distantes.
À l'inverse de `gitk`, `git gui` se concentre principalement sur la génération des *commits* ainsi que sur l'annotation des fichiers, et **ne montre pas l'historique du projet**. *([git-gui, documentation git](https://git-scm.com/docs/git-gui))*
### Comparaison avec un autre logiciel
Le challenge est ici un peu plus complexe, car il faudra choisir **obligatoirement** un visualiseur ne nécéssitant pas une interface graphique, donc nous sommes obligés de choisir un outil fonctionnant dans le terminal.
#### Présentation de `tig`
Ici, nous avons choisi `tig`. Il s'agit d'une interface en mode texte pour `git` basée sur le set d'outils `ncurses`, qui permet l'affichage d'interfaces complexes dans le terminal.

`tig` permet principalement de se déplacer dans un répo Git, mais peut également servir à l'édition de *commits*, et fonctionne plus largement comme logiciel de mise en page pour la plupart des commandes `git`, telles que :
-`git branch`, qui affiche la liste des branches du répo
-`git status`, qui affiche la liste des changements
Et ainsi de suite.
Il s'utilise donc de cette manière :
```bash
git <commande> | tig
```
#### Installation de `tig`
Pour l'installer, il suffit simplement de télécharger une archive source depuis [la page releases du GitHub de tig](https://github.com/jonas/tig/releases).
Une fois extraite, on effectue simplement ces commandes )à l'intérieur du répertoire source :
```bash
# Compilation de l'outil
make prefix=/usr/local
# Installation
sudo make install prefix=/usr/local
```
On peut également installer la documentation de l'outil :
```
make install-doc
```
#### Comparaison avec la commande simple `git`
Cet outil permet avant tout d'avoir accès à une mise en page plus élégante de la sortie des commandes `git`, qui ne sont pas toujours très faciles à comprendre.


Cela a l'avantage de permettre une compréhension plus claire des commandes git, ainsi qu'une navigation plus facile. On n'est ainsi plus obligé de manipuler la sortie de `git` avec des outils comme `less` ou `wc`, car tout est directement affiché.
Cependant, `tig` demande de constamment taper sa commande à la fin de chaque commande `git`. On ne peut pas simplement lancer l'outil et le laisser agir seul comme c'est le cas avec `gitk` ou `git-gui`. C'est un de ses désavantages.