VCS/Git/CreateRemoteRepository

De TartareFR
Version datée du 23 janvier 2013 à 17:48 par Didier (discussion | contributions) (Page créée avec « thumb|97px '''Configurer Git-daemon''' == Installation == # yum install git-daemon == Initialisation du repository == Le paquet git-daemon offr... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche
LogoGit.svg

Configurer Git-daemon

Installation

# yum install git-daemon

Initialisation du repository

Le paquet git-daemon offre une configuration initiale satisfaisante utilisant le service xinetd.

On vérifie la présence de la ligne suivante dans le fichier /etc/services :

$ grep 9418 /etc/services
git             9418/tcp                # git pack transfer service
git             9418/udp                # git pack transfer service

Par défaut, la configuration exporte les dépôts git présents dans les répertoires utilisateurs <path>~/vcs</path> (paramètre user-path) et <path>/var/lib/git</path> (paramètre base-path).

On supprimera le switch --export-all pour limiter l'export aux seuls dépôts possédant le fichier <path>git-daemon-export-ok</path>.

 $ cat /etc/xinetd.d/git
 # default: off
 # description: The git dæmon allows git repositories to be exported using \
 #	the git:// protocol.
 service git
 {
 	 disable	= no
         socket_type     = stream
         wait            = no
         user            = git
         group           = git
         server          = /usr/libexec/git-core/git-daemon
         server_args     = --base-path=/var/lib/git --user-path=~/vcs --syslog --inetd --verbose --enable=receive-pack
         log_on_failure  += USERID
         # xinetd doesn't do this by default. bug #195265
         flags		= IPv6
 }

Bien évidemment, il faudra redémarrer le service xinetd pour que celui-ci prenne en compte les modifications apportées.

systemctl restart xinetd.service

Ajout de l'utilisateur et du groupe git et mise en place d'un mot de passe

useradd -r -d /var/lib/git -s /bin/bash -c 'Git user' git
passwd git

Création du répertoire de travail de git

mkdir -p /var/lib/git
cp /etc/skel/.bash* /var/lib/git/
chown -R git:git /var/lib/git

Initialisation de ssh

su - git
ssh-keygen -t rsa
touch .ssh/known_hosts .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
chmod 644 .ssh/known_hosts

Selinux

semanage fcontext -a -t ssh_home_t '/var/lib/git/.ssh(/.*)?'
restorecon -R -v /var/lib/git

Ajout d'un utilisateur local

cat /home/$USER/.ssh/id_rsa.pub >> /var/lib/git/.ssh/authorized_keys

Avec un compte user, on exporte notre dépôt

cd /tmp
git clone --bare file:///home/didier/vcs/scripts scripts.git

Déplacement du dépôt précédemment exporté et on change l'utilisateur et le groupe

mv /tmp/*.git /var/lib/git/
chown -R git:git *.git

On autorise l'export de notre projet par le service git

# touch /var/lib/git/scripts.git/git-daemon-export-ok

Pour permettre le push, il faudra configurer un accès ssh pour chaque développeur. Attribuer le dépôt git à un groupe unix puis rattacher les développeurs à celui-ci est une bonne pratique. Git offre un shell de connexion minimaliste git-shell ne permettant que les opérations push et pull.
Ici, on crée un compte pour l'utilisateur joe avec git-shell pour shell de connexion et l'ajouter au groupe repo1 :

# groupadd repo1
# useradd joe -s /usr/bin/git-shell -G repo1
# chgrp -R repo1 /var/lib/git/repo1