Olivier Jourdan <olivier.jourdan@wovalab.com>
Pourquoi ce voyage ?
Mon carnet de voyage
Aujourd’hui
Mes conseils
Les raisons du voyage
Enregistrer les modifications des fichiers au cours du temps
Permettre de récupérer n’importe quelle version d’un fichier
Permettre de savoir qui a fait quel changement sur quel fichier
Permettre de partager des fichiers entre plusieurs personnes
doit-être utilisé même si vous travaillez seul! |
ce n’est pas un système de backup |
vi et ctl sont des fichiers binaires
lvproj, lvlib, lvclass sont des fichiers XML
On ne merge jamais le contenu d’un fichier (même les fichiers XML). En cas de conflit, on choisit l’un ou l’autre des fichiers. |
Critères objectifs
Des fonctionnalités différentes de SVN
L’intégration à de nombreux services en ligne (GitLab, GitHub…)
L’intégration aux systèmes d’intégration continue
Critères subjectifs
Ma curiosité
Tendance à migrer vers Git pour un assez grand nombre de développeurs
Sondage réalisé au printemps 2020 - 83 participants |
Sondage réalisé au printemps 2020 - 83 participants |
Git est plus complexe que SVN
Git ne gère pas correctement les fichiers binaires
Git nécessite l’utilisation de ligne de commande
Git nécessite de faire des merges
Mon carnet de voyage
SVN et Git diffèrent dans leur architecture
Les impacts peuvent être conséquents
Encouragement à utiliser SSH
plus sécurisé
n’utilise pas de mot de passe
peut être plus complexe à configurer
NOTE:il est possible d’utiliser HTTPS
SVN | Git |
---|---|
Checkout | Clone (repository) |
Update | Pull |
Commit | Stage |
Externals | Submodules |
Amend
Stash
Rebase / Cherry pick / Bissect
Git repose sur le mécanisme de branche
Création, merge, switch, suppression sont des actions très simples
Permet de définir des rôles à certaines branches (fonctionnalités, correctifs, prototypes…)
Git est un système très ouvert
Définir un workflow est très important
Sondage réalisé au printemps 2020 - 83 participants |
Surcouche a Git
Permet de déléguer la responsabilité du merge à un tiers
Tortoise Git | Gratuit | |
SourceTree | Gratuit | |
Tower | Payant (abonnement annuel) |
|
Fork | Payant (licence perpetuelle) |
|
GitKraken | Payant (abonnement annuel) | Pas testé |
Aujourd’hui…
Réflexion avancée et remise en question sur l’usage d’un outil de versionning
Utilisation de Git pour tous les projets LabVIEW
Utilisation de Fork comme interface à Git
Utilisation de Git Flow comme workflow principal
Participation à des projets open-source
En tant que leader technique (Antidoc - Asciidoc toolkit for LabVIEW)
En tant que contributeur
Mise en œuvre efficace de l’intégration continue via GitLab
Mes conseils de voyage
Commit (local) vs Push (publication)
Modification de l’historique
Trouver le workflow qui convient à votre contexte
Quelques pistes
Vous voulez rester très proche de SVN → Centralized
Vous avez un process de release basé sur le Semantic Versioning → Git Flow
Vous travaillez sur des projets open-sources ou dans une très grosse équipe de développement → Fork / Merge Request
Souvent
Avec un message clair
De manière cohérente (separating compiled code from files)
Sans les builds (.gitignore / serveur de release )
Perte d’information possible |
Quel que soit votre Sytème de Contrôle de Version, une architecture modulaire est indispensable pour pouvoir travailler en équipe sur un même projet.
Aucun Sytème de Contrôle de Version ne remplace la communication au sein d’une équipe de développement.
Le passage à Git requiert un effort d’apprentissage
Tout ce qui est fait avec SVN peut être fait avec Git
Git s’adapte à votre contexte et donne accès à beaucoup de services connexes
Merci pour votre attention.