En tant que développeur ou devops il est primordial de garder une sauvegarde de ses fichiers (sources ou conf) et si possible de garder un historique des modifications (versionning) pour pouvoir s’y référer, c’est là qu’intervient git qui est l’un des systèmes de gestion de version les plus utilisés dans le monde.
Git est le système de gestion que l’on peut installer soi même sur un serveur mais la concurrence est rude chez les SAAS Git pour proposer des hébergement et services associés à Git (Github, Bitbucket, Azure Devops).

Préparation de l’installation

  1. créer un nouvel utilisateur git sur le DSM, ce qui permettra les push coté clients via SSH
  2.  ajouter les clés SSH publiques des clients (ceux qui vont se connecter aux répos) dans ~/.ssh/authorized_keys de ce nouvel utilisateur, pour permettre l’authentification lors des commandes git
  3. créer un dossier où seront stockés les repos par ex: /volume1/git_repos
  4. puis appliquer les permissions adéquats:
    chown git:git-users /volume1/git_repos && chmod g+s /volume1/git_repos

Installation de l’application Git Synology

Installation depuis le Package Center du DSM l’application git (les users du groupe Admin auront accès par défaut).

Reboot DSM (ou du service sshd).

Création d’un dépôt Git coté DSM

Il faut maintenant créer un répo Git sur notre serveur git (DSM) qui permettra aux clients d’y stocker leurs sources:

sudo git init --bare --shared /volume1/git_repos/newgitrepo.git
sudo chown -R root:git-users /volume1/git_repos/newgitrepo.git

Git Push depuis un client

Pour pouvoir effectuer un Push avec un client git, il faut ajouter le remote repo.

git remote add dsm ssh://monusername@monservername/volume1/git_repos/newgitrepo.git
git remote -v

git push ne fonctionnera pas simplement la 1ère fois sans spécifier l’option --set-upstream  , car le système ignore qu’on souhaite pousser sur la branche master.

git push --set-upstream dsm master

Liens

Doc officielle en français

introduction sur graphikart

lire les comments

article sur l’installation de git sur un Synology

erreur rencontrée