|
| 1 | +Maintenance |
| 2 | +----------- |
| 3 | + |
| 4 | +Les commandes suivantes doivent être exécutées à partir de la racine d'un clone |
| 5 | +de ``python-docs-fr`` et certaines s'attendent à trouver un clone de CPython |
| 6 | +à jour à proximité : |
| 7 | + |
| 8 | +.. code-block:: bash |
| 9 | + |
| 10 | + ~/ |
| 11 | + ├── python-docs-fr/ |
| 12 | + └── cpython/ |
| 13 | + |
| 14 | + |
| 15 | +Pour cloner CPython, vous pouvez utiliser : |
| 16 | + |
| 17 | +.. code-block:: bash |
| 18 | + |
| 19 | + git clone --depth 1 --no-single-branch https://github.com/python/cpython.git |
| 20 | + |
| 21 | + |
| 22 | +Ceci évite de télécharger tout l'historique (inutile pour générer la |
| 23 | +documentation) mais récupère néanmoins toutes les branches. |
| 24 | + |
| 25 | +.. code-block:: bash |
| 26 | + |
| 27 | + make merge |
| 28 | +
|
| 29 | +Dans certains cas on a besoin de propager des traductions d'une branche |
| 30 | +à l'autre : |
| 31 | + |
| 32 | +- d'une ancienne branche vers une nouvelle branche : lors du passage |
| 33 | + d'une version à l'autre de CPython, lorsque quelqu'un a une PR sur une |
| 34 | + ancienne version (*forward porting*) ; |
| 35 | +- d'une nouvelle branche vers des anciennes branches : pour propager |
| 36 | + de temps en temps le travail sur d'anciennes versions (rétroportage |
| 37 | + ou *backporting*). |
| 38 | + |
| 39 | +Pour forward-porter un ou plusieurs commits, il vaut mieux utiliser ``git |
| 40 | +cherry-pick -x LE_SHA``, ça garde l'auteur, le sha1 d'origine, et |
| 41 | +toutes les modifications. |
| 42 | + |
| 43 | +Pour rétroporter « en gros » on utilise ``pomerge``\ : on le fait lire |
| 44 | +sur une branche, puis écrire sur une autre, par exemple pour copier de |
| 45 | +la 3.8 à la 3.7 : |
| 46 | + |
| 47 | +.. code-block:: bash |
| 48 | + |
| 49 | + git fetch |
| 50 | + git checkout 3.8 |
| 51 | + git reset --hard upstream/3.8 |
| 52 | + pomerge --from-files *.po */*.po |
| 53 | + git checkout --branch back-porting upstream/3.7 |
| 54 | + pomerge --no-overwrite --to-files *.po */*.po |
| 55 | + powrap --modified |
| 56 | + git add --patch |
| 57 | + git commit --message="Backporting from 3.8" |
| 58 | + git push --set-upstream origin HEAD |
| 59 | + |
| 60 | + |
| 61 | +Notes : |
| 62 | + |
| 63 | +- j'utilise ``git fetch`` au début pour avoir *upstream/3.7* et |
| 64 | + *upstream/3.8* à jour localement, ainsi je peux travailler sans |
| 65 | + toucher au réseau jusqu'au ``git push``, mais chacun fait comme il |
| 66 | + veut ; |
| 67 | +- j'utilise ``*.po */*.po`` et pas ``**/*.po``, car si vous avez un |
| 68 | + *venv* dans l'arborescence il va vous trouver des traductions de Sphinx |
| 69 | + et peut-être d'autres paquets dans ``.venv/lib/python*/`` (et mettre |
| 70 | + beaucoup plus de temps) ; |
| 71 | +- j'utilise ``pomerge --no-overwrite``, ça indique à ``pomerge`` de |
| 72 | + n'écrire que si le ``msgstr`` est vide, donc de ne pas modifier |
| 73 | + l'existant, ainsi il est impossible de casser quelque chose. |
| 74 | + On peut le tenter sans ``--no-overwrite``, attention, ça fait |
| 75 | + des bêtises, ça nécessite une relecture attentive : |
| 76 | + certaines traductions, comme *example:* sont en parfois traduites en |
| 77 | + français avec une majuscule, et parfois non, en |
| 78 | + fonction du contexte, ``pomerge`` uniformiserait ça, ce n'est pas bien ; |
| 79 | +- attention, si vous testez sans ``--no-overwrite``, il est peut-être |
| 80 | + bon de vider la mémoire de ``pomerge`` avant la lecture, pour éviter |
| 81 | + de lui faire écrire des choses lues lors des sessions précédentes, |
| 82 | + via un ``rm -f ~/.pomerge.json``\ ; |
| 83 | +- j'utilise ``git add --patch`` (ou ``-p``) car j'aime bien relire quand même, |
| 84 | + en général, je n'ajoute pas les différences d'ordre dans les entêtes, |
| 85 | + mais un ``git add --update`` irait très bien ; |
| 86 | +- attention au fichier *dict* auquel il peut manquer des lignes. |
| 87 | + |
0 commit comments