VCS/Git/CreateRemoteRepository
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