Blog

Installation et premiers pas avec Git et Gitlist

Écrit le 31 05 2013 par Kévin MET _

EDIT DU 02 03 2017

Après avoir pas mal utilisé gitlist j'ai décidé de m'en séparer car j'ai l'impression que le développement s'essouffle un peu et surtout car c'était un peu overkill à mon goût d'avoir ma propre solution pour aussi peu de dépôt. J'ai donc décidé de switcher sur github

Je fais mes premiers pas avec git que j'ai utilisé pour la première fois hier :) Je vais donc faire un tutoriel spécial noob. En fait, en tant que sysadmin ce n'est pas le genre de truc que j'ai besoin de manipuler très souvent, mais en découvrant git et github je me suis dit que j'allais mettre au chaud mes scripts et que j'allais les versionner. Par contre, je n'aime pas dépendre d'un service tiers, j'ai donc cherché une alternative libre à github et je suis tombé sur gitlab. Le hic, c'est que je voulais un truc simple et en php. Et là, je suis tombé sur gitlist. C'est exactement ce que je cherchais. Il est simple, beau, en php, léger et il fait juste ce qu'il faut. En plus le mec qui développe à l'air plutôt motiver comme le prouve la page github de gitlist. Pour une démo du truc, vous pouvez jetez un coup d'oeil sur mon gitlist. Nous allons donc voir deux choses dans ce tutoriel spécial noob :

  • Comment mettre en place un dépôt git sur son serveur fonctionnant avec ssh.
  • Comment installer gitlist pour qu'il liste le contenu de ce dépôt.

Création d'un dépôt git sur le serveur

Pour commencer, on installe git :


# apt-get install git

Ensuite, il faut créer un utilisateur qui sera l'utilisateur du dépôt git. Dans cet exemple nous l’appellerons bob :


# useradd -m -d /home/bob -U -s /bin/bash bob
  • -m permet de créer le home directory si il n'existe pas.
  • -d permet de spécifier le home directory.
  • -U permet de créer un groupe au nom de l'utilisateur et d'ajouter l'utilisateur à ce groupe.
  • -s permet de spécifier le shell de l'utilisateur.

Dans notre cas on veut que l'utilisateur se connecte au serveur en ssh on utilise donc un shell valide (/bin/bash). Dans le cas ou l'on veut que l'utilisateur se serve uniquement de git on peut lui attribuer un shell git qui permettra uniquement de faire du git et rien d'autre. Dans ce cas, toujours pour l'utilisateur bob on change le shell comme ceci :


# usermod -s /usr/bin/git-shell bob

Dans la suite on considère que bob a un shell valide et qu'il peut donc se connecter sur le serveur. Nous allons donc créer notre dépot git pour un premier projet. Comme je suis un mec original je vais nommer ce projet "projet". La suite est donc à faire avec notre utilisateur bob sur le serveur et pour l'exemple on va dire que le hostname du serveur est git.serveur.fr


$ ssh bob@git.serveur.fr
$ mkdir projet.git
$ cd projet.git
$ git --bare init

Il faut toujours nommer les dossiers en .git car lorsque l'on fera notre premier clone le .git sera supprimé et le projet se nommera donc bien projet sur notre PC en local. L'option --bare init permet d'initialiser un dépôt git vide.

C'est tout pour la partie serveur, plutot simple non ? On peut ensuite attaquer notre premier commit. Pour cela on va utiliser notre PC en local. Je pars du principe que vous êtes un mec bien et que vous utilisez GNU/Linux 😁


$ mkdir projet
$ cd projet
$ git init
$ git add .
$ git commit -m 'premier commit'
$ git remote add origin ssh://bob@git.serveur.fr:2222/home/bob/git/projet.git
$ git push origin master

Pour résumer ces quelques lignes de commandes, on commance par créer un projet et l'initialiser à vide. On fait un premier commit pour pouvoir ensuite faire notre premier push. Dans notre cas on utilise le port 2222 au lieu du port 22 traditionnellement utilisé pour ssh. Et voilà pour la partie git, nous avons un serveur fonctionnel et il ne reste plus qu'à installer gitlist pour pouvoir naviguer dans nos dépots git avec classe.

Installation de gitlist

L'installation de gitlist se fait très simplement également. Il vous faut juste un serveur apache ou nginx avec mod_rewrite ainsi que php. On va partir du principe que vous avez déjà installé ces deux là et que vous savez gérer vos vhost car ce n'est pas le but de ce tutoriel. Pour l'exemple on va partir du principe que le DocumentRoot de votre vhost se trouve dans /home/www/git.


# cd /home/www/git
# wget https://s3.amazonaws.com/gitlist/gitlist-0.4.0.tar.gz
# tar xvzf gitlist-0.4.0.tar.gz
# rm gitlist-0.4.0.tar.gz
# mv config.ini-example config.ini

Il ne reste plus qu'à éditer le fichier config.ini pour y indiquer ou se trouve vos dépots git :

cat config.ini


[git]
client = '/usr/bin/git'
repositories = '/home/bob/git/'

; You can hide repositories from GitList, just copy this for each repository you want to hide
; hidden[] = '/var/www/projects/BetaTest'

[app]
debug = true

; If you need to specify custom filetypes for certain extensions, do this here
[filetypes]
; extension = type
; dist = xml

Et voilà, c'est déjà fini pour l'installation de gitlist.

♥ Partage sur tes réseaux sociaux ♥
Kévin MET
Kévin MET

Auteur de ce blog et gérant de la société MNT-TECH, je publie sur ce blog lorsque le temps me le permet et lorsqu'un sujet qui me parait intéressant n'a pas encore été abordé en français. Toutes les informations techniques présentes sur cette page peuvent être réutilisées moyennant le fait de citer la source.