Utiliser Git
Généralités
git
est un système de partage de code source d’un projet, où chaque personne contribuant peut intégrer des changements de sorte que les changements de toutes les contributions peuvent être fusionnés, partagés sur des plateformes de projets en ligne (Gitlab, Github, etc.) et distribués pour d’autres utilisations et contributions.
- Le tutoriel officiel de Git est technique et pas très interactif, mais complet sur les principaux aspects de base de l’outil.
- Learn Git Branching est un tutoriel interactif sous forme de jeu pour découvrir les mécanismes de gestion de branches et de fusion dans Git.
- Le Git Book est l’une des documentations les plus complètes et les plus avancées concernant Git
Ajouter sa clé publique SSH dans Gitlab
Pour la mise à jour de certains services, vous aurez besoin de travailler avec un clone local ; il faudra que votre clé publique SSH soit présente dans votre profil Gitlab.
Pour cela, allez dans les paramètres de votre compte :
Puis dans Clefs SSH
:
Et remplissez la page qui s’est ouverte :
Contribuer à un service
Si ce n’est pas déjà fait, commencer par cloner le dépôt. Le dépôt element
est utilisé pour l’exemple.
git clone git@forge.tedomum.net:tedomum/element.git
cd element
Puis ajouter l’upstream dans les cibles Git :
git remote add upstream https://github.com/vector-im/element-web.git
La branche par défaut est tedomum
, si elle n’est pas sélectionnée au moment du clone, forcer un switch :
git switch tedomum
Afficher le log récent :
$ git log --oneline
0ec9af104 (HEAD -> tedomum) Update to 1.9.2
acf72dcee (tag: v1.9.1+tedomum.1) Update to 1.9.1
5b998a79a (tag: v1.9.0+tedomum.2) Local TeDomum changes @
82205a0f2 (tag: v1.9.0+tedomum.1) Local TeDomum changes 1
1cf095a3e (tag: v1.9.2, origin/release-v1.9.2) v1.9.2
2deee7a70 Prepare changelog for v1.9.2
50a2badd9 Upgrade matrix-react-sdk to 3.32.1
df3647f13 Upgrade matrix-js-sdk to 14.0.1
afe8e878a (tag: v1.9.1, origin/release-v1.9.1-rc.2) v1.9.1
8e486c3f9 Prepare changelog for v1.9.1
2ef743e5e Upgrade matrix-react-sdk to 3.32.0
a605657eb Upgrade matrix-js-sdk to 14.0.0
Le HEAD
est le dernier commit, sur la branche courant tedomum
, la dernière action est bien la mise
à jour vers 1.9.2
. Les commits avec un tag
correspondent aux versions figées pour déploiement. Les
tags avec +tedomum
correspondent aux versions spécifiques à TeDomum pour déploiement sur nos
infrastructures :
v1.9.0+tedomum.1
est la première version interne basée sur lav1.9.0
de Elementv1.9.0+tedomum.2
est la deuxième version interne sur la même version originale
Pour travailler sur une mise à jour de fonctionnalité, un correctif de déploiement, ou autre, commencer par créer une branche dédiée :
git branch feat-ma-fonctionnalite
git switch feat-ma-fonctionnalite
Une fois les changements apportés, et autant de fois que nécessaire, générer un commit avec les fichiers pertinents :
git add fichier1 fichier2
git commit -m "Message de commit"
Lorsque la branche est prêt, la pousser vers le dépôt d’origine (TeDomum) :
git push origin feat-ma-fonctionnalite
Mettre à jour un service
De même que pour la contribution, récupérer le dépôt et configurer l’upstream. En affichant le log, constater quel est le dernier tag upstream intégré :
$ git log --oneline
5b998a79a (HEAD -> tedomum, tag: v1.9.0+tedomum.2) Local TeDomum changes @
82205a0f2 (tag: v1.9.0+tedomum.1) Local TeDomum changes 1
1cf095a3e (tag: v1.9.2, origin/release-v1.9.2) v1.9.2
2deee7a70 Prepare changelog for v1.9.2
50a2badd9 Upgrade matrix-react-sdk to 3.32.1
df3647f13 Upgrade matrix-js-sdk to 14.0.1
afe8e878a (tag: v1.9.1, origin/release-v1.9.1-rc.2) v1.9.1
8e486c3f9 Prepare changelog for v1.9.1
2ef743e5e Upgrade matrix-react-sdk to 3.32.0
a605657eb Upgrade matrix-js-sdk to 14.0.0
Ici la dernière version est la 1.9.0
, qui a subi deux changements internes. Récupérer les changements
depuis les dépôts distants (dont l’upstream) :
git fetch --all
Afficher les tags déclarés pour déterminer le dernier publié :
$ git tag
[...]
v1.9.0
v1.9.0+tedomum.1
v1.9.0+tedomum.2
v1.9.1
Ici le tag v1.9.1
plus récent est disponible. Fusionner les modifications dans la branche courante :
git merge v1.9.1 -m "Update to v1.9.1"
Si des conflits apparaissent, soit il s’agit de conflits entre les changements internes et les modifications
upstream, soit il s’agit de conflits entre les branches upstream elles-mêmes. Dans le premier cas, utiliser
un outil de résolution de conflits (tel que diff3
ou meld
) ou bien résoudre les conflits manuellement dans
un éditeur de texte, puis valider :
## Pour afficher l'état
git status
## Une fois un fichier fusionné
git add fichier1
## Une fois tout fusionné
git commit
Dans le cas où les conflits sont entre les branches upstream, simplement abandonner le merge et le relancer en validant la branche la plus récente :
git merge v1.9.1 -m "Update to 1.9.1" -Xtheirs
Lorsque la branche est bien fusionnée, vérifier l’historique, puis créer un premier tag interne :
git tag v1.9.1+tedomum.1
Finalement pousser la branche et le tag vers l’origine :
git push origin tedomum
git push origin v1.9.1+tedomum.1
## Toujours pousser nos tags internes, pas les tags d'origine