J’ai profité de l’ajout d’un NAS Synology dans mon réseau pour mettre en place un serveur GIT. Entre mes petits projets et les réalisations des gnômes, ce n’est pas superflu.

Le serveur GIT

Configuration

Ici, il n’y a aucune difficulté majeure: le serveur GIT est disponible sous forme de package dans le “Package center” Synology.

L’ajout des utilisateurs ayant accès au serveur sur fait en cliquant sur “Open”. La configuration est terminée. (facile hein?). Il reste maintenant un créer un dossier de base (sous forme de share) pour les repositories. J’ai ajouté le dossier “Sources” (original en diable) dans /volume1. Ensuite, j’ai ajouté un dossier par personne.

Initialisation d’un repository

Evidemment, un gestionnaire de sources sans repository ne servant à rien, il faut donc ajouter que quoi gérer chaque projet. Pour cela, il faut procéder comme suit:

  • Se connecter en SSH sur le NAS: ssh **{user}**@**{IP}** -p **{port}**
  • Créer un dossier pour le projet: ``` mkdir /volume1/Sources/{utilisateur}/{projet} ``
  • Initialiser GIT dans ce dossier: git init --bare --shared /volume1/Sources/**{utilisateur}**/**{projet}**

Pour faciliter la chose, j’ai créé un petit script Shell.

    
 1#!/bin/bash
 2
 3if [ -n $1 ] && [ -n $2 ] && [ -n $3 ]; then
 4        remoteCmd1="mkdir /volume1/Sources/$2/$3"
 5        remoteCmd2="git init --bare --shared /volume1/Sources/$2/$3"
 6        echo "Connexion SSH au NAS <IP> en tant que $1"
 7        echo "Execution des commandes:"
 8        echo "- 1: $remoteCmd1"
 9        echo "- 2: $remoteCmd2"
10        ssh $1@<IP> -p <port> "$remoteCmd1; $remoteCmd2"
11else
12        echo "------"
13        echo "GitInit: creation d'un repository GIT"
14        echo "------"
15        echo "Usage: gitinit <login> <utilisateur> <projet>"
16        echo "Exemple: gitinit gob0 GoboTheGeek test"
17        echo "------"
18fi

La commande “gitinit.sh gob0 GoboTheGeek test” produit le résultat suivant:

    
1Connexion SSH au NAS <IP> en tant que gob0
2Execution des commandes:
3- 1: mkdir /volume1/Sources/GoboTheGeek/test
4- 2: git init --bare --shared /volume1/Sources/GoboTheGeek/test
5gob0@<IP>'s password: 
6Initialized empty shared Git repository in /volume1/Sources/GoboTheGeek/test/

Sur le NAS, le dossier /volume1/Sources/test contient:

Du côté des IDE

Fin 2014, j’avais découvert Android Studio basé sur Intellij IDEA et j’avais adoré. Pour les autres projets Java, j’étais resté sous Eclipse, par habitude. Finalement, courant 2016, j’ai craqué (le plantage de trop) et j’ai convaincu mon boss d’acheter des licences Intellij “Ultimate”. Quel choc! L’IDE sait tout faire, la fonction de recherche est tellement simple et rapide, la navigation entre les définitions XML et les classes est hyper intuitive. Lors de la suppression d’une classe, l’IDE liste tous les usages qui en sont fait. Pour moins de 500.- CHF / an (le tarif baisse les deux années suivantes), c’est l’affaire du siècle. Par contre, impossible de revenir à Eclipse, il y a un tel fossé ergonomique. Du coup, à la maison j’ai opté pour la version Community. Et j’ai installé PyCharm (la version pour Python) pour les enfants.

Passer un projet sous GIT

Activer le contrôle de version

Il faut commencer par activer le contrôle de version en cliquant sur “VCS” > “Enable Version Control Integration”. Ensuite, choisir “Git”.

Définir le repositoriy

Maintenant, il faut lier ce projet au bon repository: cliquez sur “VCS” > “Git” > “Remotes”.

La fenêtre de gestion apparaît, il faut cliquer sur “+” et ajouter l’url, sous la forme “ssh://{user}@{IP}:{port}/volume1/Sources/{utilisateur}/{projet}”. Le tour est joué. Il reste maintenant à ajouter les fichiers et commiter l’ensemble.

Premier push

En premier lieu, il faut ajouter les fichiers à synchroniser. Pour cela, il faut soit faire un clic-droit sur le fichier puis “Git” > “Add” ou Ctrl+Alt+A. Pour faciliter l’ajout en masse, je passe par l’écran du commit (Ctrl+K). Une fois les fichiers ajoutés, on passe au commit avec Ctrl+K. Maintenant on peut enfin faire le push, via Ctrl+Shift+K.

Pour aller plus loin

La prochaine étape consistera à sauver les repositories du NAS vers la station de backup. Je détaillerais ma stratégie dans un prochain article.