Git ... Redmine ...

Git
Ce document bla bla bla ... © G. Landa, LAAS - CNRS
<georges.landa@laas.fr>

Git ... Redmine ...

Pour quoi faire ?

Dans quel cas utiliser un dépôt ?

Lorsqu'on travaille à plusieurs sur un même logiciel
  • qui a modifié le fichier toto.c ? Depuis il ne marche plus !
  • A quoi sert la partie de code ajoutée à titi.c ?
  • A quoi sert le nouveau fichier ?

Dépots Git sur le serveur Redmine

Création d'un projet sur Redmine

Pour obtenir un projet le serveur Redmine du LAAS (Wiki, système de suivi des tickets, dépots git), envoyer un mail un sysadmin en précisant :
  • Le nom à donner au projet et une description en une phrase.
  • Le type de dépot (subversion ou git)
  • Une date prévisionnelle de fin du projet
  • Son statut (public ou privé)
    • public: le projet et son contenu sont visibles en lecture seule par toute personne non authentifiée sur le serveur (tout l'internet). Cela signifie que les logiciels hébergés ont a priori une licence libre (open source)
    • privé: le projet et son contenu ne sont visibles que par les personnes désignées par le responsable du projet.
L'administrateur du projet pourra ensuite ajouter au projet les utilisateurs du LAAS qui pourront y avoir accès en écriture (commit).

Projets utilisateur

À la demande, chaque utilisateur peut disposer d'un projet personnel sur lequel il est administrateur et dans lequel il peut créer librement des sous-projets pour héberger ses dépots/projets et auxquels il peut ajouter des contributeurs.

Informations pour les administrateurs de projets

Ajout de membres à un projet Pour ajouter des utilisateurs c'est dans l'onglet \textcolorredconfiguration -gt; membres.
Pour les membres du LAAS il faut qu'ils se soient connectés une première fois sur https://redmine.laas.fr/ (avec leur login/mot de passe du LAAS) pour pouvoir être ajoutés au projet.
Accès au dépot git Pour accéder au(x) dépot(s) git associé(s) à un projet, un utilisateur (développeur ou administrateur) doit téléverser sa clé publique SSH via l'interface web. (voir ci-dessous).
\textcolorredA noter: un utilisateur ne peut téléverser sa clé publique SSH tant qu'il n'a pas au moins le rôle développeur dans au moins un projet.

Utilisateurs extérieurs

Des utilisateurs extérieurs au LAAS peuvent aussi avoir accès aux projets hébergés sur le serveur redmine:
  • Les utilisateurs extérieurs doivent commencer par s'enregistrer sur le serveur https://redmine.laas.fr/ (bouton 'register' en haut à droite). Ils doivent fournir les informations suivantes :
    • le nom et le prénom de la personne
    • le nom de login souhaité (lettres, chiffres et '-' uniquement, longueur max 16). Peut ne pas être honoré si conflit avec compte existant.
    • son affiliation
    • son adresse mail
    • le nom d'un référant au LAAS : adresse de mail ou login (c'est au gestionnaire du projet de transmettre cette information aux personnes invitées à participer au projet) (sans référant LAAS, la demande ne sera pas validée )
    • une date de fin prévisionnelle du compte (fin du projet)
  • La création du compte est validée par sysadmin après consultation du référant indiqué lors de la demande. Les demandes pour lesquelles il n'y a pas de nom de référent LAAS ou pour lesquelles le nom indiqué n'est pas identifiable par sysadmin seront rejetées.
  • Une fois le compte validé, le responsable du projet ajoute ce compte comme membre du ou des projets auxquels il va contribuer.

SSH Access

On accède uniquement grâce aux clefs publiques
Si on ne l'a jamais fait :
Create a pair of keys :
Log in to a machine on the laas network with access to your home directories on LAAS servers, ssh.laas.fr is such a machine, and is available from outside of the lab.

belmopan\% ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/matthieu/.ssh/id\_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Your identification has been saved in /home/matthieu/.ssh/id\_rsa.
Your public key has been saved in /home/matthieu/.ssh/id\_rsa.pub.
The key fingerprint is:
e7:72:32:22:21:7f:c8:2a:0d:43:0a:17:ef:bd:b4:8d matthieu\@belmopan.laas.fr
Accept the default file name for the key and choose a good passphrase (it can
be the same as your login password). 
Upload the public key (the content of the id\_rsa.pub file) to your account on the redmine server through the My Account panel accessible in the upper right corner of the redmine page. 
To access your repositories from other machines (like your laptop), generate another pair of keys on each machine, and add the corresponding SSH public key to your redmine account. 
	

Utilisation pratique

Qu'est-ce qu’un logiciel de gestion de versions ?

C'est un outil pour gérer de manière partagée des codes sources !
  • Les logiciels centralisés : un serveur conserve les anciennes versions des fichiers et les développeurs s’y connectent pour prendre connaissance des fichiers qui ont été modifiés par d’autres personnes et pour y envoyer leurs modifications.
  • Les logiciels distribués : il n’y a pas de serveur, chacun possède l’historique de l’évolution de chacun des fichiers. Les développeurs se transmettent directement entre eux les modifications, à la façon du peer-to-peer.
Git travaille en mode distribué et on va l'utiliser avec quand même un serveur centralisé qui sert de référence.

Créer un nouveau dépôt ou cloner un dépôt existant

  • création du répertoire local
    mkdir toto
    cd toto
    	 
  • initialisation de git
    git init
    	

Cloner (utiliser) un dépôt existant

  • on récupère la commande sur Redmine :
    git clone ssh://git@redmine.laas.fr/laas/steam.git 
    
  • et on la copie dans un terminal
    That all folks !!!

Effectuer un commit des changements

  • modification d'un fichier
    gvim toto.c
  • indexage des fichiers modifiés
    git add nomfichier1 nomfichier2
  • sauvegarde sur le serveur
    git commit -a
    git commit nomfichier1 nomfichier2
  • annuler les derniers changements: (Attention !)
    git reset --
  • Annuler les modifications d’un fichier avant un commit
    git checkout nomfichier
  • sauvegarder sur le serveur
    git push
  • Télécharger les nouveautés du serveur
    git pull

Pour ignorer un fichier dans git

créez un fichier .gitignore (à la racine), indiquez-y le nom du fichier.
Entrez un nom de fichier par ligne, comme ceci :
project.xml 
dossier/temp.txt 
*.tmp 
cache/* 

Et pour quelques commandes de plus ...

Liste de tous les commits du dépôt :
git log --oneline --abbrev-commit --all --graph --decorate -\/-color
Etat du dépôt local :
git status
De l'aide bien sûr :
git --help
Liste toutes les branches :
git branch -a
Donne les infos associées à un fichier :
git blame src/toto
Met le dépôt local dans un état donné :
git checkout e3b43d63
Met le dépôt local dans l'état "normal" :
git checkout master
Efface tous les fichiers non managés par git :
git clean -df
Montre la différence entre 2 états :
git diff 68d7b66bf6df10f master
Historique de toutes les modifications :
git log
Pour créer une branche et se positionner dessus :
git branch nombranche
git checkout nombranche
Pour fusionner une branche à la branche "master" :
git checkout master
git merge nombranche
Conflit lors d'un merge (fusion) :
Choisir la modification à garder puis
git add fichiermodifié
ceci indique à git que le conflit est résolu