Git : Utiliser le Deamon Git pour gérer un dépôt distant

Travail collaboratif ou simple système de sauvegarde, j’utilise Git pour le suivi de mes projets.

-> L’astuce consiste à mettre en oeuvre un dépôt distant en plus du local créé par Git.

1. Création d’un dossier pour le projet

Sur le serveur, dans un dossier prévu au stockage des projets
« chemin » -> chemin relatif ou absolu vers le dossier principal,
« projet » -> comme nom du projet.
« serveur » -> pour identifier le serveur (ip ou nom)

mkdir /chemin/projet

chmod -R 777 /chemin/projet

cd /chemin/projet

git –bare init –shared=true

(bare pour la création d’un archive, shared pour autoriser le partage)

touch /chemin/projet/.git/git-daemon-export-ok

(Le projet doit contenir le fichier git-daemon-export-ok pour autoriser l’export distant)

 

2. Lancer le daemon pour la gestion distante

git daemon –reuseaddr –base-path=/chemin –export-all –enable=receive-pack

(–enable=receive-pack pour autoriser l’écriture)

 

-> On obtient alors l’url suivante l’accès au projet : git://serveur/projet

3. Sur le client

git init

git add ./

git status

git commit -m « Message »

(Cette première étape ne change pas, c’est un commit local normal)

git remote add « Nom identifiant le dépôt distant » git://serveur/projet

(On ajoute un dépôt distant)

git push « Nom identifiant le dépôt distant » master

(On pousse les changement sur le serveur)

 

En cadeau : mon script bash qui permet la création des projets et qui pilote le serveur :

#!/bin/bash

create(){

if [ -z "$REP" ]
 then
 printf "[Création du dépôt] Nom du dépôt : "
 read REP
 fi
 
 mkdir $FOLDER/$REP
 chmod -R 777 $FOLDER/$REP
 cd $FOLDER/$REP
 
 git --bare init --shared=true
 
 touch $FOLDER/$REP/.git/git-daemon-export-ok


}

start(){

git daemon --reuseaddr --base-path=$FOLDER --export-all --enable=receive-pack &
 echo $! > /tmp/git.pid
}



stop(){
 
 PID=$(cat /tmp/git.pid)
 kill -15 $PID 2> /dev/null
 rm /tmp/git.pid 2> /dev/null
}



# DEMARRAGE
#---------------------------------------

REP=$2
FOLDER="/chemin_archives/Git"

case $1 in
 'start')
 start 2> /dev/null;;
 'stop')
 stop 2> /dev/null;;
 'create')
 create 2> /dev/null;; 
 *)
 echo "usage $0 start|stop" ;;
esac

Comments are closed.