GIT

Retour à la page précédente

Préparer le serveur :

Git peut s’installer en utilisant le gestionnaire de packages en tant que root :

apt-get install git

Pour des raisons de sécurité, le serveur git aura un utilisateur dédié. Dans un premier temps, nous utiliserons « git over ssh », vous devrez donc avoir une clé ssh publique de disponible qui sera utilisée pour vous donner accès au serveur git.

Sur le serveur, ajouter l’utilisateur git. En tant que root :

adduser git
su git
cd
mkdir .ssh

Depuis votre poste, en étant authentifié avec l’un des utilisateurs autorisé à utiliser votre serveur git, ajouter la clé publique ssh aux clés autorisées :

ssh-copy-id git@yourserverhostname

Initialiser et manipuler le premier repository :

Sur le serveur, initialiser un repository vide :

su git
cd
mkdir myproject.git
cd myproject.git
git --bare init

Vous pouvez dès à présent depuis votre poste, cloner ce repository et faire vos premiers commits :

git clone git@yourserverhostname:/home/git/myproject.git
touch README
git add README
git commit -m "initial commit"
git push origin master

Note 1 : Pour tester que tout va bien, vous pouvez refaire un clone dans un autre dossier pour vérifier que votre fichier README est bien présent.

Note 2 : Si vous utilisez un serveur SSH écoutant sur un port différent du port standard, la commande clone à utiliser est la suivante : git clone ssh://git@yourserverhostname:yourport/home/git/myproject.git

Un peu de sécurité maintenant, votre utilisateur git est un utilisateur normal dans le sens UNIX. Il a donc accès à un shell et à tous les exécutables qui vont avec. Git fournit un shell personnalisé qui restreint les commandes disponibles à celles utiles pour gérer un serveur git.

Vérifier le chemin de l’utilitaire git-shell sur votre serveur :

which git-shell

En root, éditer le fichier des comptes locaux UNIX.

vim /etc/passwd

A la fin du fichier, vous devriez voir une ligne proche celle ci :

git:x:1003:1003:,,,:/home/git:/bin/bash

Remplacer /bin/bash par le résultat de la requête which git-shell. Pour moi : /usr/bin/git-shell. Ce qui devrait vous donner :

git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell

Note : Pour tester que vous avez amélioré la sécurité de votre serveur, essayez de vous connecter en SSH avec l’utilisateur git maintenant :

$ ssh git@yourserverhostname
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to yourserverhostname closed.

A présent, un serveur git est prêt à l’emploi. Un clone d’un repository sera préconfiguré avec le bon remote. Il faut maintenant créer des clefs SSH pour tester cela avec quelques développeurs afin de voir si la solution leur convient sur le long terme.

Retour à la page précédente