header.gif Un billet sans prétention , qui explique comment mettre en place GIT sur un serveur pour partager les sources entres développeurs afin de permettre le travail en équipe sans risquer de se marcher dessus .

Installation

Cette étape est la même sur les postes clients et sur le serveur .

L'installation est très simple , dans un premier temps vérifier que les paquets suivants sont bien installé :

apt-get install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

Une fois fait ,

apt-get install git-core

Votre identité

Il vous faut ( sur chaque poste client ) définir au moins deux paramètres qui permettrons de vous identifier à chaque commit , il est donc important de les initialiser .

cd ~
git config --global user.name "Mon nom"
git config --global user.email [email protected]

Nous voilà maintenant prêt à utiliser git .

Créer l'utilisateur git

Pour simplifier les étapes suivantes ( connexion ssh ) nous allons créer tout de suite l'utilisateur **git**

sudo adduser git

Nous allons limiter les possibilités de ce nouvel utilisateur sur le serveur , pour celà , nous allons lui attribuer un autre interpréteur de commande .

sudo vim /etc/passwd

Remplacer /bin/bash à la ligne ( selon l'interpréteur par défaut )

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

par

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

Créer un Dépôt vierge sur le serveur

Voilà une étape importante et indispensable pour ce que nous souhaitons faire .
Rendez-vous sur votre serveur de développement , dans le répertoire qui contiendra les dépôts .

su git
cd /var/www/depotsGit
mkdir monProjet.git
git --bare init 

Et voilà votre dépôt est bien créé.

Accès ssh

Afin de na pas avoir à rentrer le mot de passe de git à chaque "push" nous allons mettre en place l'authentification ssh par certificats .
Suivez les étapes suivantes :

Sur votre poste utilisateur

Génération des clef

N'entrer ni passphrase ni mot de passe , passer les étapes en tapant "enter" ...

cd ~
ssh-keygen -t rsa 

Copie de la clef public

Copier le contenu de se fichier

vim ~/.ssh/id_rsa.pub

Sur le serveur

Nous allons ajouter la clef public au compte git .

su git
cd ~
mkdir .ssh
vim authorized_keys

Copier la clef public dans de fichier , enregistrez et quittez .

Répéter cette étape ( copier-coller de clef publique ) pour chaque poste qui doit avoir un accès aux dépôt GIT .

Premier git push

Retournez sur votre machine ( poste utilisateur ) , vérifiez tout de même que vous avez un accès ssh sans mot de passe

ssh [email protected]

Vous devriez avoir un message de ce type :

fatal: What do you think I am? A shell?
Connection to golum closed.

Si c'est la cas bravo tout va bien , sinon, revoyez le passage clef ssh/public.

Nous allons maintenant nous occuper de nos fichiers sources , rendez-vous dans le répertoire qui va contenir vous sources .

mkdir /var/www/monSite
cd /var/www/monSite

Le répertoire est pour le moment vide , nous allons donc créer un premier fichier , **.giignore** qui vous servira peut être plus tard ( vous pouvez créer ce que vous voulez comme fichier , j'utilise .gitignore car quite à faire un test , autant faire quelque chose qui me servira :) )

Initialisation du dépôt local

Il nous faut initialiser notre dépôt local , afin que **git** gère les fichiers de ce répertoire .

touch .gitignore
git init
git add .
git commit -a -m "Initialisation Dépôt local"

Et voilà , vous avez désormais un dépôt local sur lequel vous pouvez gérer vos versions , vos branches ect .. bref utiliser toute la puissance de GIT.

Synchronisation avec le serveur de dépôts

Étape importante maintenant puisque nous souhaitons rendre nos sources public ( enfin public pour les postes qui auront copié leur clef public sur le serveur )

cd /var/www/monSite
git remote add origin [email protected]:/var/www/depotsGit/monProjet.git
git push origin master

Cette dernière ligne aura pour effet d'envoyer les modifications dans le dépôt sur le serveur sur a branche "master".

Chaque développeur déclaré dans authorized_keys peut maintenant cloner le dépôt à partir du serveur , mais aussi envoyer leurs modifications .
Par exemple , si je veux cloner le dépôt actuel et donc récupérer le fichier **.gitignore** que vous avez posté .

cd /var/www/
git clone [email protected]:/var/www/depotsGit/monProjet.git

Fin

Je vous laisse lire les nombreux tutoriaus concernant les commandes de bases de GIT , pour ajouter supprimer renommer les fichiers branches ect ...

www.deimos.fr
www.alexgirard.com
www.siteduzero.com
www.unixgarden.com