1. Contribuer étape par étape
Note
Bien que la documentation de QGIS soit utilisée pour expliquer le processus, toutes les commandes et étapes montrées ci-dessous sont également applicables au site web de QGIS (dans le dépôt QGIS-Website).
Si vous lisez ces lignes, c’est sûrement parce que vous souhaitez contribuer à écrire la documentation de QGIS et cherchez un guide pratique. Vous êtes au bon endroit! Ce document vous guidera à travers les différentes façons d’atteindre cet objectif, vous indiquant les étapes principales, les astuces que vous pouvez utiliser et les pièges dont vous devez vous méfier.
Pour toute aide, n’hésitez pas à demander dans un commentaire sur le rapport de problème que vous essayez de corriger ou à écrire dans la liste QGIS-community-team. Plus de détails dans Participer à la documentation.
Plongeons-nous maintenant dans le processus.
Les sources de la documentation sont stockées à l’aide du système de contrôle de version git et sont disponibles sur GitHub à l’adresse https://github.com/qgis/QGIS-Documentation. Une liste de problèmes à résoudre et de fonctionnalités à expliquer est disponible à l’adresse https://github.com/qgis/QGIS-Documentation/issues.
Astuce
Si vous êtes un nouveau contributeur et que vous ne savez pas par où commencer, vous pouvez vous attaquer à nos rapports de bienvenue <https://github.com/qgis/QGIS-Documentation/issues?q=is%3Aissue+is%3Aopen+label%3AEasy>_.
Il y a deux façons principales, non mutuellement exclusives, de modifier les fichiers :
1.1. Utiliser l’interface web de GitHub
L’interface web de GitHub vous permet de faire comme suit:
éditer des fichiers
prévisualiser et valider vos changements
Créer une pull request pour ajouter vos modifications dans le répertoire principal.
Créer, mettre à jour ou supprimer des branches
Si vous n’êtes pas encore familier avec le vocabulaire git et GitHub, vous pouvez lire le projet Hello-world de Github pour apprendre un vocabulaire de base et les actions qui seront utilisées ci-dessous.
Note
Si vous corrigez un problème signalé
Si vous comptez apporter des corrections à un signalement, ajoutez un commentaire au rapport d’erreur afin de vous le faire assigner. Ceci empêchera que plus d’une personne travaille sur la même erreur.
1.1.1. Fork QGIS-Documentation
Dans l’hypothèse où vous avez déjà un compte GitHub, il vous faudra d’abord cloner les fichiers source de la documentation.
Naviguez vers la page QGIS-Documentation repository et cliquez sur le bouton en haut à droite.
Dans votre compte GitHub, vous trouverez un dépôt pour la documentation QGIS (https://github.com/<YourName>/QGIS-Documentation
). Ce dépôt est une copie du dépôt QGIS-Documentation officiel où vous avez un accès complet en écriture et vous pouvez apporter des modifications sans affecter la documentation officielle.
1.1.2. Faire des changements
Il y a différentes façons de contribuer à la documentation QGIS. Bien que nous les exposions ci-dessous séparément, vous pouvez passer d’un processus à l’autre sans risque.
Alternative 1: Utiliser le lien Edit on GitHub
Chaque page de la documentation QGIS peut être modifiée rapidement et facilement en cliquant sur le lien Edit on GitHub
en haut à droite de celle-ci.
Cela ouvrira le fichier dans la branche
qgis:master
avec un message en haut de la page vous indiquant que vous n’avez pas accès en écriture à ce dépôt et vos modifications seront appliquées à une nouvelle branche de votre dépôt.Faites vos changements. Étant donné que la documentation est écrite à l’aide de la syntaxe reStructureText, en fonction de vos modifications, vous devrez peut-être vous baser sur les Recommandations pour la documentation.
When you finish, make a short comment about your changes and click on Propose changes. This will generate a new branch (
patch-xxx
) in your repository.Après avoir cliqué sur Propose changes github accède à la page Comparing changes (Comparaison des modifications).
Si vous avez terminé d’apporter des modifications, passez à Partagez vos modifications dans la section Partager les changements via une Pull Request ci-dessous.
S’il y a des changements supplémentaires à effectuer avant de les soumettre à QGIS, suivez ces étapes :
Accédez à votre fork de documentation QGIS (
https://github.com/<YourName>/QGIS-Documentation
)Cliquez sur et recherchez la branche
patch-xxx
. Sélectionnez cette branche de patch. Le bouton va maintenant dire Branch: patch-xxxPassez à la section Modifier des fichiers ci-dessous.
Note
Le lien Edit on GitHub
est aussi accessible depuis le menu déroulant au bas de la barre verticale à gauche de chaque page.
Alternative 2 : Créer une branche ad hoc dans votre dépôt de documentation
Vous pouvez modifier des fichiers directement à partir de votre fork de la documentation QGIS.
First, make sure that your master
branch is up to date with qgis:master
branch.
To do so:
Go to the main page of your repository, i.e.
https://github.com/<YourName>/QGIS-Documentation
. Themaster
branch should be active with a mention whether it is up to date withqgis/QGIS-Documentation:master
or not.If it has commits ahead the upstream branch, you better use the previous shortcut button alternative until you align your
master
branch.If it only has commits behind:
Expand the Fetch Upstream drop-down menu on the right. You can
Compare the branches and see new changes in the main repository
Fetch and merge: takes changes from the upstream branch to yours.
Let’s click Fetch and merge: after the process, your branch is mentioned as up to date with
qgis/QGIS-Documentation:master
.
Click on in the upper left corner of your forked QGIS-Documentation repository and enter a unique name in the text field to create a new branch . The name of the new branch should relate to the problem you intend to fix. The button should now say Branch: branch_name
You are ready to start new changes on top of it.
Attention
Faites vos changements dans une branche ad hoc, jamais dans la branche **``master``
Par convention, évitez de faire des changements dans votre branche master
sauf lorsque vous fusionnez les modifications de la branche master
de qgis/QGIS-Documentation
dans votre copie du dépôt QGIS-Documentation. Des branches distinctes vous permettent de travailler sur plusieurs problèmes en même temps sans interférer avec d’autres branches. Si vous faites une erreur, vous pouvez toujours supprimer une branche et recommencer en en créant une nouvelle à partir de la branche principale.
1.1.3. Modifier des fichiers
Parcourez les fichiers source de votre fork de QGIS-Documentation jusqu’au fichier à modifier
Procédez à vos modifications en suivant les règles d’écriture.
Lorsque vous avez terminé, accédez au cadre Valider les modifications au bas de la page, faites un bref commentaire sur vos modifications et cliquez sur : guilabel:Valider les modifications pour valider les modifications directement dans votre branche. Assurez-vous que Valider directement dans la branche nom_branche. est sélectionné.
Répétez les étapes précédentes pour tout autre fichier qui doit être mis à jour pour résoudre le problème
1.1.5. Supprimez votre branche fusionnée
Vous pouvez supprimer la branche une fois vos modifications fusionnées. La suppression d’anciennes branches vous évite d’avoir des branches inutilisées et obsolètes dans votre dépôt.
1.2. Utiliser les outils de ligne de commande Git
L’interface Web GitHub est un moyen facile de mettre à jour le dépôt de documentation QGIS avec vos contributions, mais elle ne propose pas d’outils pour :
regroupez vos commits et nettoyez votre historique des changements
résoudre les conflits possibles avec le dépôt principal
construire la documentation pour tester vos modifications
Vous devez installer git sur votre disque dur afin d’avoir accès à des outils plus avancés et plus puissants et avoir une copie locale du dépôt. Certaines notions de base dont vous aurez souvent besoin sont exposées ci-dessous. Vous trouverez également des règles à respecter même si vous optez pour l’interface Web.
Dans les exemples de code ci dessous, les lignes commençant par $
représente les commandes que vous aurez à taper, alors que les #
sont des commentaires.
1.2.1. Dépôt local
Vous êtes maintenant prêt à obtenir un clone local de votre dépôt de documentation QGIS.
Vous pouvez cloner votre dépôt QGIS à l’aide de l’URL Web comme suit :
# move to the folder in which you intend to store the local repository
$ cd ~/Documents/Development/QGIS/
$ git clone https://github.com/<YourName>/QGIS-Documentation.git
La première ligne de commande est simplement un exemple. Vous devez adapter à la fois le chemin et l’URL du dépôt, en remplaçant <YourName>
par votre nom d’utilisateur github.
Vérifiez les points suivants :
# Enter the local repository
$ cd ./QGIS-Documentation
$ git remote -v
origin https://github.com/<YourName>/QGIS-Documentation.git (fetch)
origin https://github.com/<YourName>/QGIS-Documentation.git (push)
$ git branch
* master
origin est le nom du dépôt distant de votre dépôt QGIS-Documentation.
master est la branche principale par défaut. Vous ne devriez jamais l’utiliser pour vos contributions ! Jamais!
Vous pouvez également cloner votre dépôt QGIS à l’aide du protocole SSH :
# move to the folder in which you intend to store the local repository
$ cd ~/Documents/Development/QGIS/
$ git clone [email protected]:<YourName>/QGIS-Documentation.git
Astuce
Permission denied (publickey) error?
If you get a Permission denied (publickey) error with the former command, there may be a problem with your SSH key. See GitHub help for details.
Vérifiez les points suivants si vous avez utilisé le protocole SSH:
# Enter the local repository
$ cd ./QGIS-Documentation
$ git remote -v
origin [email protected]:<YourName>/QGIS-Documentation.git (fetch)
origin [email protected]:<YourName>/QGIS-Documentation.git (push)
$ git branch
* master
Vous pouvez commencer à travailler ici, mais à long terme, vous obtiendrez beaucoup de problèmes lorsque vous pousserez votre contribution (appelée Pull Request dans le processus github) car la branche principale du dépôt qgis/QGIS-Documentation divergera de votre dépôt local / distant. Vous devez ensuite suivre le dépôt distant principal et travailler avec les branches.
1.2.2. Ajoutez un autre dépôt distant
Pour pouvoir suivre l’avancement du travail réalisé sur le projet principal, ajoutez un nouveau dépôt distant dans votre dépôt local. Ce nouveau dépôt distant sera le dépôt QGIS-Documentation du projet QGIS :
$ git remote add upstream https://github.com/qgis/QGIS-Documentation.git
$ git remote -v
origin https://github.com/<YourName>/QGIS-Documentation.git (fetch)
origin https://github.com/<YourName>/QGIS-Documentation.git (push)
upstream https://github.com/qgis/QGIS-Documentation.git (fetch)
upstream https://github.com/qgis/QGIS-Documentation.git (push)
De même, vous pouvez utiliser le protocole SSH pour ajouter un dépôt distant dans votre dépôt local :
$ git remote add upstream [email protected]:qgis/QGIS-Documentation.git
$ git remote -v
origin [email protected]:<YourName>/QGIS-Documentation.git (fetch)
origin [email protected]:<YourName>/QGIS-Documentation.git (push)
upstream [email protected]:qgis/QGIS-Documentation.git (fetch)
upstream [email protected]:qgis/QGIS-Documentation.git (push)
Désormais, vous avez le choix entre deux dépôts distants :
origin pour « pousser » votre branche locale dans votre dépôt distant
upstream pour fusionner (si vous avez les droits pour le faire) votre contribution avec le dépôt officiel OU pour mettre à jour votre branche « master » sur le dépôt local à partir de la branche « master » du dépôt officiel.
Note
upstream est juste un intitulé, une sorte de nom standard, mais vous pouvez l’appeler comme vous voulez.
1.2.3. Mettez à jour votre branche de base
Avant de travailler sur une nouvelle contribution, vous devez toujours mettre à jour votre branche principale dans votre dépôt local. En supposant que vous souhaitiez apporter des modifications à la documentation de test, exécutez les lignes de commande suivantes :
# switch to master branch (it is easy to forget this step!)
$ git checkout master
# get "information" from the master branch in the upstream repository
# (aka qgis/QGIS-Documentation's repository)
$ git fetch upstream master
# merge update from upstream/master to the current local branch
# (which should be master, see step 1)
$ git merge upstream/master
# update **your** remote repository (aka <YourName>/QGIS-Documentation)
$ git push origin master
Vous avez maintenant vos dépôt locaux et distants qui ont tous deux leur branche master
à jour avec la branche master
officielle de la documentation QGIS. Vous pouvez commencer à travailler sur votre contribution.
Note
Changez de branche si vous souhaitez contribuer au document publié
En parallèle de la documentation de test, nous continuons à résoudre les problèmes de la dernière version, ce qui signifie que vous pouvez également y contribuer. Suivez l’exemple de code de la section précédente, en remplaçant master
par la branche correspondante de la dernière documentation.
1.2.4. Contribuez dans votre branche de production
Maintenant que la branche de base est mise à jour, il vous faut créer une branche spéciale pour accueillir vos modifications. Ayez le réflexe de toujours travailler sur une branche autre que celle de base - souvent la master! Toujours!
# Create a new branch
$ git checkout -b myNewBranch
# checkout means go to the branch
# and -b flag creates a new branch if needed, based on current branch
# Let's check the list of existing branches (* indicates the current branch)
$ git branch
master
release_2.18
...
* myNewBranch
# You can now add your contribution, by editing the concerned file(s)
# with any application (in this case, vim is used)
$ vim myFile
# once done
$ git add myFile
$ git commit
Quelques remarques à propos des commandes de commit/push :
essayez de ne « commiter » qu’une seule contribution (changement atomique). En d’autres termes, n’adressez qu’une seule erreur à la fois.
essayez d’expliquer avec soin ce que vous avez modifié dans le titre de votre commit et dans la description. La première ligne est un titre, doit commencer par une lettre majuscule, devra contenir 80 caractères au maximum et ne devra pas se terminer par un
.
. Soyez concis. Votre description peut être plus longue et se termine par un.
. Vous pouvez y donner plus de détails.utilisez un
#
avec un nombre pour faire référence à un problème. Préfixez avecFix
si vous fixez le ticket: votre commit fermera le ticket.
Maintenant que vos modifications sont sauvegardées et intégrées dans votre branche locale, il va falloir les envoyer sur le dépôt en ligne, afin de pouvoir créer des pull-requests:
$ git push origin myNewBranch
1.2.6. Nettoyez votre dépôt local et distant.
Une fois que votre PR a été fusionnée dans le dépôt officiel QGIS-Documentation, vous pouvez supprimer votre branche. En effet, si vous contribuez souvent, vous vous retrouverez d’ici quelques semaines avec un nombre considérable de branches inutilisées. Du coup, gardez votre dépôt propre de cette façon :
# delete local branch
$ git branch -d myNewBranch
# Remove your remote myNewBranch by pushing nothing to it
$ git push origin :myNewBranch
Et n’oubliez pas de mettre à jour la branche master
dans votre dépôt local!
1.3. Pour aller plus loin
Outre l’interface Web Github et les outils de ligne de commande git exposés ci-dessus, il existe également des applications GUI que vous pouvez utiliser pour créer et gérer vos contributions à la documentation.
Lorsque les modifications de la demande d’extraction sont en conflit avec des modifications récentes transmises à la branche cible, les conflits doivent être résolus avant qu’une fusion ne soit possible:
if the conflict relates to few competing lines, a Resolve conflicts button is available in the GitHub pull request page. Press the button and resolve the issue as explained at Resolving a merge conflict on GitHub
if the conflict involves files renaming or removal, then you’d need to resolve the conflict using git command lines. Typically, you have to first rebase your branch over the target branch using
git rebase targetBranch
call and fix the conflicts that are reported. Read more at Resolving a merge conflict using the command line
Sometimes, at the end of the proofreading process, you may end up with changes split into multiple commits that are not necessarily worth it. Git command lines help you squash these commits to a smaller number and more meaningful commit messages. Some details at Using git rebase on the command line