à la gestion de configuration
de survie

Agenda
- Git
- Définition
- Concepts
- Démo
- Guidelines
- des règles utiles
- Gitlab
- Définition
- chez GLS
- Gitflow
- Définition
- Démo?

Git - définition
Git est LE système de gestion de configuration distribué.
Créé par Linus TORVALDS en 2005 pour la gestion du noyau Linux.
12 millions d'utilisateurs, tous domaines du logiciel confondus.


Concepts
-
Repository
- local vs remote
- working dir vs "bare"
-
Working directory
- .gitignore
-
Commits
- blobs, trees, merge
-
Branches
- tags, HEAD
- Index
- Stash
Beaucoup de commandes
git init: crée un nouveau dépôt ;
git clone: clone un dépôt distant ;
git add: ajoute de nouveaux blobs dans l'index pour chaque fichier modifié ;
git commit: créer un nouvel objet commit depuis l'index;
git branch: liste les branches ;
git merge: fusionne une branche dans une autre ;
git rebase: déplace les commits (c'est mal) ;
git push: publie les nouvelles révisions sur le remote ;
git pull: fetch + merge ;
git stash: stocke de côté un état non commité afin d’effectuer d’autres tâches.
git diff: liste les différences avec un autre commit
git checkout: permet d’obtenir des fichiers de la gestion de conf
git switch: changement de banche
git remote: gestion des dépôts distants…
git reset: nettoyage de l’espace de travail, de l’index et du dépôt.

Création de repository
git init [--bare]
git clone [--bare] <repo>





Création de commits
git add <my-files>
git commit -m "my interesting commit message"
Ajout des modifications à l'index
Création de l'objet commit
git commit --all -m "my interesting commit message"
Tout-en-un
Mise à jour de son repo
git fetch [remote]
git merge <remote/branch>
récupération des commits du repo distant
création d'un commit avec 2 parents +déplacement de la branche courante.
git pull
Tout-en-un
Publication de modifs
git push [remote]
envoi de commits dans un repo remote
avec ou sans "pull request"
(extended) VSCode

Guidelines
- Git est un outil : pas une méthode
- On ne gère en conf QUE ce que l'on produit directement.
- pas de librairies
- pas de code généré
- ... mais les binaires sont acceptés (images, ...)
- Dans l'idéal: une gestion de conf = un projet
- specifications + code + tests
- Une personne se charge de l'intégration.
Le retour du serveur

- gestion des dépôts Git
- gestion les utilisateurs et leurs droits
- connexion à un annuaire LDAP
- gestion l’accès par branche
- examens de code (code reviews)
- outil de rapport de bug
- création de wiki
- Tout pareil
- Intégration continue

Github est un équivalent en ligne...
GOGS

GOGS déjà en place à GLS.
Gitflow
Inclus dans Git for Windows depuis la v.2.6

Merci de votre attention.
Merci de votre attention.

Survival Git
By Olivier DUPOUY
Survival Git
Configuration management
- 89