python-docs-fr/CONTRIBUTING-CORE.rst

62 lines
2.6 KiB
ReStructuredText
Raw Permalink Normal View History

Maintenance
-----------
Dans certains cas on a besoin de propager des traductions d'une branche
à l'autre :
2021-09-25 14:09:15 +00:00
- d'une ancienne branche vers une nouvelle branche : lors du passage
d'une version à l'autre de CPython, lorsque quelqu'un a une PR sur une
ancienne version (*forward porting*) ;
- d'une nouvelle branche vers des anciennes branches : pour propager
de temps en temps le travail sur d'anciennes versions (rétroportage
ou *backporting*).
2021-09-25 14:09:15 +00:00
Pour forward-porter un ou plusieurs commits, il vaut mieux utiliser ``git
cherry-pick -x LE_SHA``, ça garde l'auteur, le sha1 d'origine, et
toutes les modifications.
Pour rétroporter « en gros » on utilise ``pomerge``\ : on le fait lire
sur une branche, puis écrire sur une autre, par exemple pour copier de
la 3.8 à la 3.7 :
2021-09-25 14:09:15 +00:00
.. code-block:: bash
2021-09-25 14:09:15 +00:00
git fetch
git checkout 3.8
git reset --hard upstream/3.8
pomerge --from-files *.po */*.po
git checkout --branch back-porting upstream/3.7
pomerge --no-overwrite --to-files *.po */*.po
powrap --modified
git add --patch
git commit --message="Backporting from 3.8"
git push --set-upstream origin HEAD
2021-09-25 14:09:15 +00:00
Notes :
2021-09-25 14:09:15 +00:00
- j'utilise ``git fetch`` au début pour avoir *upstream/3.7* et
*upstream/3.8* à jour localement, ainsi je peux travailler sans
toucher au réseau jusqu'au ``git push``, mais chacun fait comme il
veut ;
- j'utilise ``*.po */*.po`` et pas ``**/*.po``, car si vous avez un
*venv* dans l'arborescence il va vous trouver des traductions de Sphinx
et peut-être d'autres paquets dans ``.venv/lib/python*/`` (et mettre
beaucoup plus de temps) ;
- j'utilise ``pomerge --no-overwrite``, ça indique à ``pomerge`` de
n'écrire que si le ``msgstr`` est vide, donc de ne pas modifier
l'existant, ainsi il est impossible de casser quelque chose.
On peut le tenter sans ``--no-overwrite``, attention, ça fait
des bêtises, ça nécessite une relecture attentive :
certaines traductions, comme *example:* sont en parfois traduites en
français avec une majuscule, et parfois non, en
fonction du contexte, ``pomerge`` uniformiserait ça, ce n'est pas bien ;
- attention, si vous testez sans ``--no-overwrite``, il est peut-être
bon de vider la mémoire de ``pomerge`` avant la lecture, pour éviter
de lui faire écrire des choses lues lors des sessions précédentes,
via un ``rm -f ~/.pomerge.json``\ ;
- j'utilise ``git add --patch`` (ou ``-p``) car j'aime bien relire quand même,
en général, je n'ajoute pas les différences d'ordre dans les entêtes,
mais un ``git add --update`` irait très bien ;
- attention au fichier *dict* auquel il peut manquer des lignes.