Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Documenting back porting and forward porting. #1339

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Jun 25, 2020
55 changes: 55 additions & 0 deletions CONTRIBUTING.rst
Original file line number Diff line number Diff line change
Expand Up @@ -719,6 +719,61 @@ Fusion des fichiers *pot* de CPython
make merge


Copier des traductions d'une branche à l'autre
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Dans certains cas on a besoin de bouger des traductions d'une branche
à l'autre :

- d'une ancienne branche vers une nouvelle branche : lors du passage
d'une version à l'autre de cpython, quelqu'un a une PR sur une
ancienne release (*forward porting*) ;
- d'une nouvelle branche vers des anciennes branches : pour propager
de temps en temps le travail sur d'anciennes releases (*back porting*).

On utilise ``pomerge``\  : on le fait lire sur une branche, puis écrire
sur une autre, par exemple pour copier de la 3.7 à la 3.8 ::

git fetch
git checkout 3.7
git reset --hard upstream/3.7
pomerge --from-files *.po */*.po
git checkout -b forward-porting upstream/3.8
pomerge --no-overwrite --to-files *.po */*.po
powrap -m
git add --patch
git commit --message="Forward porting from 3.7"
git push --set-upstream origin HEAD

Notes :

- 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 longtemps) ;
- 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, c'est
important lors du *forward-porting* pour ne pas défaire une
correction. Mais on pourrait le tenter sans ``--no-overwrite`` sur
du rétroportage, attention, ça fait des bêtises, ça nécessite une
relecture attentive : certaines traductions, comme *example:* sont en
francais parfois traduite 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,
typiquement 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* à qui il peut manquer des lignes.


Synchronisation de la traduction avec Transifex
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Expand Down