Git : Utiliser le Deamon Git pour gérer un dépôt distant
2/02/2018Travail 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