Git: Créer des dépôts privés sur du mutualisé
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.