Manuel:Pywikibot/Gerrit
Lexique
- Git - système de contrôle de version. Il remplace SVN.
- Gerrit - plate-forme de relecture de code (https://gerrit.wikimedia.org). Remplace Special:CodeReview
- core - branche (master) actuelle connue précédemment comme "rewrite".
Pour les utilisateurs
Clients Git
- Utilisateurs de Windows : il est recommandé d'utiliser TortoiseGit avec Git for Windows. Il est recommandé d'installer d'abord TortoiseGit.
- Utilisateurs de macOS ou de Linux : Git en ligne de commande - https://git-scm.com/ ou brew install git (Homebrew, macOS)
Par exemple, pour télécharger la branche core en ligne de commande :
$ git clone --recursive --branch stable https://gerrit.wikimedia.org/r/pywikibot/core.git
Pour mettre à jour :
# En considérant que nous sommes déjà sur la branche ''core''
$ git pull origin stable
$ git submodule update # Updates i18n messages
Si vous êtes paresseux et que voulez pouvoir faire tout ça d'un seul coup, vous pouvez :
# En considérant que nous sommes déjà sur la branche ''core''
$ git pull origin stable --recurse-submodules # This updates everything
Notez que les dépôts peuvent être très gros quelques fois (> 100 Mo). Si cela pose problème, utilisez :
$ git clone --recursive --branch stable --depth 3 https://gerrit.wikimedia.org/r/pywikibot/core.git
pour ne récupérer que les dernières versions.
Utilisateurs SVN
En janvier 2023, il est toujours possible d'utiliser SVN pour télécharger Pywikibot. Pour cela, suivez les instructions sur Manual:Pywikibot/Installation/SVN. Notez cependant que cela ne fonctionnera plus à partir de janvier 2024. Nous vous suggérons à la place d'utiliser pip pour installer et mettre à jour Pywikibot.
URLs
Votre client vous demandera probablement l'URL du dépôt.
Les urls sont construites sur le format :
https://gerrit.wikimedia.org/r/pywikibot/[repo name]
.
Ainsi pour le noyau :
https://gerrit.wikimedia.org/r/pywikibot/core
.
Compilations de la nuit
Vous pouvez télécharger les paquets complets ou voir le code source via la page de téléchargement de Toolforge
- Si vous avez besoin de plus d'aide pour configurer votre Pywikibot, consultez le canal IRC #pywikibot connecter ou la liste de diffusion pywikibot@.
Pour les développeurs
Comment soumettre des corrections (patches)... configurer git/gerrit. etc.
Lire ces indications, puis suivre les étapes dans Gerrit/Getting started et exécuter ceci :
#pour manipuler le noyau
$ git clone --recursive ssh://USERNAME@gerrit.wikimedia.org:29418/pywikibot/core.git
et après que le code ait été modifié, suivre les étapes dans Gerrit/Tutoriel
- Sous Windows
- Les développeurs sous Windows peuvent également utiliser Gerrit/TortoiseGit tutorial pour les informations supplémentaires.
Exemple (pas à pas)
Exécuter chacune des étapes suivantes :
- configurer son logiciel :
- si ce n'est pas déjà fait pour l'accès svn ; créer une clé SSH, un compte développeur et ajoutez votre clé publique à Gerrit et à Wikitech
- installer le paquet 'git'
- installer le paquet 'git-review'
- celui par openstack [1], et NON PAS celui par Facebook
- toute version comme les 1.12, 1.21, mais PAS LA v1.18
- clôner et configurer son dépôt :
- clôner le dépôt Git avec tous les sous-modules en utilisant (comme
svn checkout
)et attendre, cette étape dure quelques instants$ git clone --recursive ssh://USERNAME@gerrit.wikimedia.org:29418/pywikibot/core.git pywikibot-git
- entrer dans le répertoire
$ cd pywikibot-git
- configurer les paramètres Git pour ce dépôt/répertoire uniquement (pas globalement, dans le cas par exemple ou vous auriez différents pseudo sur plusieurs projets) et
$ git config user.email "EMAIL"
pour configurer cela globalement, utiliser le paramètre$ git config user.name "USERNAME"
--global
- configurer le terminal ou la console pour voir les messages en anglais (afin de travailler proprement durant la relecture de code Gerrit/git) faire ceci à chaque ouverture d'une nouvelle console; pour configurer cela de manière permanente, ajouter ces lignes dans votre fichier
$ alias git="LANG=C git"
bashrc
ou fichier de configuration équivalent - configurer la revue Git sur ce dépôt uniquement et entrez à nouveau votre
$ git review -s
NOM D'UTILISATEUR
, c'est une étape importante - si vous la sautez, conformément au Tutoriel Gerrit/Push, legit review
final ci-dessous va échouer (il faut valider vos modifications avec commit pour la relecture de code) - bien que vous puissiez encore sauver la situation puis
- clôner le dépôt Git avec tous les sous-modules en utilisant (comme
- travaillez sur le dépôt, par exemple validez vos corrections pour la relecture avec commit :
- passer sur la branche master (peut être pas utile)
$ git checkout master
- mettez à jour en ligne la branche courante à réviser (comme
svn update
)$ git pull
- créez votre propre branche locale temporaire pour travailler
$ git checkout -b NOM_SIGNIFICATIF_DE_BRANCHE
et essayez de choisir unNOM_SIGNIFICATIF_DE_BRANCHE
avec l'aide des conseils de nommage des branches à disposition – la branche pourra être supprimée si elle n'est plus utile avec$ git branch -D NOM_SIGNIFICATIF_DE_BRANCHE
- écrivez maintenant votre code; lorsque vous êtes prêt a passer à l'étape suivante, voyez les commandes Git
add
,rm
etmv
pour respectivement ajouter, supprimer ou renommer des fichiers - validez vos modifcations avec commit sur votre branche locale temporaire avec (vous pouvez utiliser
$ git commit --all
-a
au lieu de--all
et-R
au lieu de--no-rebase
) et, comme pour svn, entrez un message de validation significatif, par exemple une courte description de vos modifications de code - vérifiez éventuelllement vos modifications en affichant les données que vous avez validées et assurez-vous d'avoir envoyé ce que vous souhaitiez
$ git show HEAD
- envoyez vos données sur le dépôt en ligne par gerrit for review (comme pour
svn commit
)$ git review
- enfin rendez-vous sur Gerrit, cliquez sur vos modifications et insérez un nom de relecteur dans le champ de saisie à côté du bouton Add Reviewer
- passer sur la branche master (peut être pas utile)
- optionnel /déclarer des paramètres supplémentaires :
- permettre l'expansion des mots-clés RCS (tels que svn:keywords
$Id$
) en utilisant les accroches Git (détaillé ici - en allemand seulement)- pour le noyau :
$ git config filter.rcs-keywords.smudge 'rcs-keywords.py %f'
$ git config filter.rcs-keywords.clean 'rcs-keywords.py'
- (peut-être faudrait-il considérer le module git-rcs-keywords comme mentionné dans gérer l'expansion des mots-clés svn avec git svn)
- pour le noyau :
- permettre l'expansion des mots-clés RCS (tels que svn:keywords
Phabricator
Les corrections seront liées à une tâche Phabricator automatiquement si vous mentionnez cette tâche dans le texte tel que 'Bug: T12345' sur une ligne juste avant 'Change-Id: ....'. Voir Gerrit/guide des messages Commit pour plus d'informations.
Problèmes, bogues et palliatifs
Messages du robot jenkins
https://integration.wikimedia.org/ci/job/pywikibot-core-tox-flake8/2591/console : FAILURE in ?s (non-voting)
Les corrections soumises n'ont pas passé les vérifications flake8 concernant le style du code. Cela dit rien sur la fonctionnalité du code mais indique qu'il y a des problèmes de syntaxe ou de style.
https://integration.wikimedia.org/ci/job/pywikibot-core-tox-flake8-docstrings-mandatory/560/console : FAILURE in ?s (non-voting)
Ces corrections validées ont échoué aux contrôles obligatoires du style du code pep257. Cela dit rien sur la fonctionnalité du code mais indique qu'il y a des problèmes avec la documentation en ligne.
https://integration.wikimedia.org/ci/job/pywikibot-core-tox-nose/1448/console : FAILURE in ?s (non-voting)
L'ensemble de corrections validé n'a pas passé avec succès les tests de contrôle qui précèdent la fusion. Cela indique que le code a échoué aux vérifications de base, mais cette passe ne renseigne en rien sur la fonctionnalité du code modifié. Il existe un ensemble plus fourni de tests que les développeurs devraient faire passer avant de soumettre leur code, et qui réalisera ultérieurement la fusion (merge).
This change could not be automatically merged with the current state of the repository. Please rebase your change and upload a new patchset.
L'ensemble des corrections ne peut pas être fusionné automatiquement dans le HEAD courant. Prenez en compte Echec de la construction dû aux conflits de fusion (merge) pour une solution possible.
Vous trouverez des informations complémentaires sur Comment soumettre un patch et Messages de relecture Git concernant les validations multiples.