> DIO/ Système et réseau/ Logiciels et dépôts DIO de gestion de version

Introduction

La DIO propose deux logiciels de gestion de version (en anglais Version Control Software ou VCS). Ces outils vous permettent de stocker un ensemble de fichiers en conservant tout l'historique des modifications effectuées. Ils permettent en particulier de pouvoir retrouver toutes les versions des fichiers depuis leur intégration dans le système.

Le but de ce document est de présenter les deux services tels qu'ils sont hébergés par la DIO, mais il ne s'agit pas d'une présentation, ni encore moins d'un mode d'emploi de ces logiciels. Une documentation officielle ainsi que des tutoriels existent et sont bien meilleurs que ce que nous pourrions écrire.

Pour quel usage ?

Ces outils sont indispensables dès qu'il faut produire des fichiers au format texte, seul ou collaborativement, sur une période qui dépasse quelques heures.

Voici deux cas typiques d'usage :

  • développement d'un logiciel seul ou à plusieurs ;
  • rédaction de TeX/LaTeX (articles, livres, etc.) seul ou à plusieurs.

Services DIO

Parmi les nombreux outils disponibles, la DIO a choisi d'en proposer deux :

Pour chaque catégorie de VCS (centralisé, décentralisé), le choix a été guidé par la popularité, la disponibilité des clients et la capacité à répondre à des utilisations variées.

Lequel choisir ?

L'outil git est celui qui offre le plus de possibilités et de souplesse d'utilisation. Git a toutes les fonctionnalités de subversion, mais pas l'inverse. Néanmoins, l'utilisation de git est sensiblement plus complexe.

Si vous ne connaissez aucun des deux outils et que vous commencez un nouveau projet, nous vous conseillons de choisir git.

Cela dit, le choix dépend aussi de l'utilisation que vous allez en faire. Dans le cadre d'un développement de logiciel, nous conseillons fortement l'utilisation de git. Dans le cas de la rédaction collaborative de documents texte, le choix de subversion peut être pertinent en raison de sa simplicité (pour vous ou pour vos coauteurs).

Souvent, le choix sera aussi un compromis entre vous et vos coauteurs.

Remarques importantes

Voici quelques remarques générales mais importantes sur l'utilisation de ces outils.

Type de fichiers

Un VCS n'est pas un système de partage de fichiers. Ce qui veut dire qu'il ne faut pas y mettre (ou le moins possible) :

  • de fichier binaires (Word/Excel/Powerpoint/PDF/images/etc.) ;
  • de gros fichiers (résultats de calcul, etc.).

Ceci sous peine de gros soucis pour vous et pour la DIO.

Nom du projet

Chaque projet doit avoir un nom pour l'identifier et il faut prêter attention dans le choix de ce nom. Il est très fortement conseillé de choisir un nom pas trop court (le moins générique possible), sans espace, sans accent ni caractères spéciaux.

Exemples de nom facilement utilisables :

monprojet
monProjet
developpementCode
developpementCode2
calculPourcent

Exemples de noms à éviter :

mp 1
mon projet
développement de Code
calcul de %
a

Nom des fichiers

Dans le dépôt associé au projet, vous allez mettre des fichiers. Il est très fortement conseillé de faire des noms de fichiers

  • sans accent ;
  • sans caractère spécial.

À noter aussi que certains systèmes de fichiers (Windows, MacOS) sont insensibles à la casse et considèrent que les deux noms

monfichier
MonFichier

désignent le même fichier. Ainsi, il convient de faire attention au choix des noms des fichiers/dossiers pour ne pas poser de problème aux coauteurs.

Suppression de fichiers

Par construction, un VCS permet de revenir en arrière pour retrouver l'état des fichiers à telle ou telle date, ce qui veut dire qu'il est impossible (subversion) où très complexe (git) de supprimer un fichier dans un dépôt. Ainsi, il faut éviter de rajouter un gros fichier juste pour tester, car le système le conservera de façon définitive, avec un impact sur le stockage et la sauvegarde.

Subversion

La DIO offre la possibilité d'avoir un dépôt sur un serveur accessible depuis tout internet en HTTPS, protocole quasiment jamais filtré quand on se trouve à l'extérieur.

La seule condition pour est que le demandeur soit membre de l'Observatoire. Il est possible d'avoir des coauteurs extérieurs.

La création d'un dépôt se fait via une demande au guichet unique de la DIO (admin.dio@obspm.fr) dans laquelle il faut fournir à minima les informations suivantes :

  • nom du projet ;
  • si le dépôt est en accès pour lecture anonyme ou non ;
  • liste des coauteurs membres de l'Observatoire.

S'il y a des coauteurs extérieurs, il faut préciser pour chacun :

  • nom, prénom ;
  • adresse e-mail ;
  • le résultat de la commande suivante, executée par la personne sur une machine Linux/UNIX, qui lui permettra de choisir un mot de passe et d'en fournir une version « chiffrée » (« hachée », pour être plus précis) :

    htpasswd -n -m <login>
    

En réponse, la DIO informera le demandeur lorsque le dépôt sera prêt et fournira l'URL d'accès.

Remarque : La DIO ne fournit pas de dépôt en écriture de façon anonyme.

Si vous avez déjà un dépôt subversion ailleurs sur un autre serveur, il est en général possible de le transférer sur les serveurs de la DIO. Si vous souhaitez faire une telle opération, contactez le guichet unique de la DIO (admin.dio@obspm.fr).

Gitlab

La DIO fournit un service git via

https://gitlab.obspm.fr

Toute personne de l'Observatoire peut s'authentifier et gérer ses projets via cette interface web.

L'authentification se fait en sélectionnant Observatoire de Paris dans l'écran d'accueil :

ecran accueil Gitlab

Ne pas utiliser l'onglet standard.

Une fois authentifié, cliquer sur le logo (en haut à droite), puis help pour accéder à une description détaillée

ecran aide Gitlab

et une aide. Attention, tout les services décrits ne sont pas nécessairement disponibles dans la configuration installée par la DIO.

Gitolite

Pour des raisons historiques, la DIO continue de maintenir le service git fourni par gitolite.

Cependant, nous recommandons l'utilisation de gitlab qui est beaucoup plus simple et conviviale.

Dans ce cadre, la DIO fournit deux types de dépôt git : « projet » et « personnel ». Il n'y a aucune différence fonctionnelle entre ces deux types, mais uniquement une différence d'affichage pour les URL :

  • dépôt personnel :

    https://git.obspm.fr/git/obspm/VOTRE_LOGIN/mon_depot
    git@git.obspm.fr:obspm/VOTRE_LOGIN/mon_depot
    
  • dépôt projet :

    https://git.obspm.fr/git/projets/nom_du_projet
    git@git.obspm.fr:projets/nom_du_projet
    

    c'est-à-dire que le login n'apparaît pas dans l'URL

L'avantage du dépôt personnel est que vous pouvez le gérer vous même sans passer par la DIO (voir plus loin).

Authentification

Avec git, l'authentification peut se faire de deux façons :

  • login/password ;
  • biclef SSH.

Si vous n'avez pas vos propres dépôts et que vous voulez accéder (lecture et écriture) à des dépôts gérés par d'autres personnes, il est inutile de faire de l'authentification par SSH (mais rien ne vous en empêche non plus).

Si vous voulez gérer vos propres dépôts, il est indispensable de faire de l'authentification par SSH et donc de faire parvenir votre clef publique au guichet unique DIO (admin.dio@obspm.fr) en expliquant que vous voulez accéder à git.

Création d'un dépôt

Pour créer un dépôt projet, faire la demande en précisant le nom choisi au guichet unique DIO (admin.dio@obspm.fr).

La création d'un dépôt personnel est plus simple, il suffit de cloner le dépôt pour qu'il soit automatiquement créé, s'il n'existe pas déjà :

git clone git@git.obspm.fr:obspm/VOTRE_LOGIN/nom_du_depot

Remarque : Le nom du dépôt se trouve après le chemin

obspm/VOTRE_LOGIN

Remarque : le nom du dépôt doit commencer par une lettre et ne peut être constitué que des caractères suivants :

A-Z a-z 0-9 . (point) - (tiret) _ (souligné)

Initialiser le dépôt

Un dépôt distant créé par la commande git clone doit impérativement être initialisé pour être utilisable. Pour cela, allez dans le dossier de votre dépôt, ajoutez un fichier et poussez vers le serveur git de la façon suivante :

touch README.txt                            # Ou tout autre premier fichier
git add README.txt
git commit -m "Intitialisation du dépôt"    # Ou autre message de commit
git push origin master

C’est cette dernière commande qui initialise une première branche dans le dépôt distant.

Gérer les accès pour les coauteurs

Pour qu'un coauteur extérieur de l'Observatoire accède à un dépôt git, il doit avoir un compte qui sera créé via une demande au guichet unique DIO (admin.dio@obspm.fr) contenant les informations suivantes :

  • nom, prénom ;
  • adresse e-mail ;
  • clef publique SSH.

En réponse, la DIO fournit un identifiant de compte (login) pour ce coauteur. Il est alors possible d'autoriser le coauteur soit en écriture, soit en lecture seule (les droits s’appliquent sur la globalité du dépôt) :

ssh git@git.obspm.fr perms obspm/mon_login/nom_du_depot + WRITERS login_coauteur
ssh git@git.obspm.fr perms obspm/mon_login/nom_du_depot + READERS login_coauteur

Pour retirer les droits à un coauteur :

ssh git@git.obspm.fr perms obspm/mon_login/nom_du_depot - WRITERS login_coauteur

Pour lister les droits :

ssh git@git.obspm.fr perms obspm/mon_login/nom_du_depot -l

Plus généralement, pour avoir la liste des commandes disponible :

ssh git@git.obspm.fr help

Accès via HTTPS

Un dépôt git est aussi accessible en HTTPS, avec authentification par login/mot de passe. Contraitement à l'accès par SSH, l'accès par HTTPS ne permet pas la gestion des droits.

Pour créer une copie de travail locale du dépôt distant en HTTPS :

git clone https://mon_login@git.obspm.fr/git/obspm/mon_login/nom_du_depot

Attention : Ne pas oublier /git/ entre le nom du serveur et obspm.

Remarques : l’accès via HTTPS ne se fait bien-sûr qu’avec identifiant et mot de passe. La gestion des droits ne peut pas se gérer via HTTPS

Accès anonyme

Il est possible de donner l'accès en lecture anonyme à un dépôt. Pour cela, rajouter l'utilisateur anonymous en lecture :

ssh git@git.obspm.fr perms obspm/mon_login/nom_du_depot + READERS anonymous

L’URL d’accès anonyme en HTTPS est alors :

git clone https://git.obspm.fr/gitanonymous/obspm/mon_login/nom_du_depot

Supprimer l'utilisateur anonymous de la liste des READERS rend le dépôt non accessible en anonyme.