Si vous lisez régulièrement mon blog, vous devriez savoir que j'ai rompu avec 1&1 et que je suis désormais chez OVH.

Etant donné que je me suis encore un peu plus intéressé à Git ces derniers temps, je me suis dit qu'il serait vraiment cool d'avoir des dépôts privés parce qu'entre nous, les prix sont un peu trop reuch sur Github.. ahem. Du coup, j'ai tenté le truc : pourquoi ne pas avoir des dépôts Git sur mon hébergement mutualisé ?

Finalement, en cherchant à droite à gauche sur Web, je me suis rendu compte que c'était assez simple et qu'en quelques lignes de commandes (côté client par contre), on peut arriver à nos fins.

Pré-requis

  • Un accès SSH
  • Git

Organisation du serveur

Avant de créer des dépôts, le mieux est quand même de préparer un peu la chose. Rien de bien méchant mais afin d'éviter de nous compliquer la tâche, on va essayer de faire cela comme il faut.

Personnellement, je suis à la recherche d'une interface Web pour explorer mes dépôts Git (à la Github) écrit soit en PHP, soit en C, soit en Perl mais pouvant fonctionner avec des versions un peu vieillottes et surtout dans un environnement mutualisé !

Mon but est donc d'arriver à créer un sous-domaine du genre http://git.eexit.net donc je vais naturellement organiser mes répertoires de cette manière :

~
├── git -> net/eexit/git/repos
├── net
│   └── eexit
│       ├── git
│       │   └── repos
│       └── www
└── www -> net/eexit/www

Donc on a bien notre arborescence bien propre avec notre sous-domaine www dans net/eexit/www et notre sous-domaine git dans net/eexit/git mais à quoi servent les liens symboliques ?

Le lien symbolique www est obligatoire à l'hébergement mutualisé car c'est le point d'entré du domaine associé à notre offre d'hébergement ; quant au second, il nous servira de raccourcis pour l'accès SSH par la suite.

Création d'un dépôt vide

La seconde étape consiste donc à créer un dépôt vide en local sur notre machine client (car la version de Git présente sur OVH ne permet pas de faire cela) :

mkdir MonProjet.git  
cd !$  
git init --bare  
mv hooks/post-update.sample hooks/post-update  

Hop, c'est chose faite. Maintenant, on le balance sur notre espace Web :

scp -r MonProjet.git user@ssh.clusterXXX.ovh.net:git  
user@ssh.clusterXXX.ovh.net s password:  
config  
description  
HEAD  
applypatch-msg.sample  
commit-msg.sample  
post-commit.sample  
post-receive.sample  
post-update  
pre-applypatch.sample  
pre-commit.sample  
pre-rebase.sample  
prepare-commit-msg.sample  
update.sample  
exclude  
rm -rf MonProjet.git  

Remarque : voyez ici l'utilisation du lien symbolique au lieu de se taper toute l'arborescence jusqu'au répertoire des dépôts.

Ok, vous venez tout juste de créer et de mettre en ligne sur votre serveur privé un nouveau dépôt Git pour le projet MonProjet. Facile non ?

Maintenant, comment bosser avec ?

Récupération de notre working copy

Aussi simplement que sur les autres sites proposant d'héberger vos dépots, on le récupère avec un clone :

git clone user@ssh.clusterXXX.ovh.net:git/MonProjet.git  
Cloning into MonProjet...  
user@ssh.clusterXXX.ovh.net s password:  
warning: You appear to have cloned an empty repository.  
cd MonProjet  
ls -1A  
.git

Le top, ce serait de créer des alias SSH pour faire un truc du genre mais je ne sais pas du tout si c'est possible...

git clone user@git.eexit.net:MonProjet.git  

Terminé !

Vous pouvez maintenant arrêter de banquer pour vos dépôts privés et faire quelques économies pour vos projets personnels.


Joris Berthelot