J'ai aussi renommé `make verifs` en `make check` par cohérence (j'ai laissé un `make verifs` pour ceux qui ont l'habitude, avec un print pour les encourager a changer leurs habitudes). L'idée est que `make verifs` ne vérifie pas tout, mais que les fichiers qui ont changé entre la branche actuelle et 3.14, donc parfois pas grand chose (ce qui est bien ça va vite) mais (et il faudra comprendre pourquoi) parfois ce n'est pas suffisant (cf. tous les fichiers réparés par cette PR, qui n'ont été repérés par aucun `make verifs`). Donc un `make verifs-all` est peut-être pratique ? Il utilise la même astuce que `make spell` pour ne pas tout re-vérifier, exactement comme on attend que `make` se comporte en fait. Et il gère très bien `-j` pour faire les vérifications en parallèle, comme on attend que `make` se comporte en fait :)) Reviewed-on: #350 Reviewed-by: Christophe Nanteuil <christophenan@noreply.localhost> Co-authored-by: Julien Palard <julien@palard.fr> Co-committed-by: Julien Palard <julien@palard.fr>
2.9 KiB
Nouvelle branche upstream
Lorsque cpython crée une nouvelle branche, il debient possible de la traduire :
git switch -c 3.13
python .scripts/merge.py --cpython_repo ../cpython/ origin/3.13
make check-all -j 8
Il faut mettre à jour la variable BRANCH dans le
Makefile.
Maintenance
Dans certains cas on a besoin de propager 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, 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).
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 :
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 HEADNotes :
- - j'utilise
git fetchau 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 */*.poet 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 àpomergede -
n'écrire que si le
msgstrest 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,pomergeuniformiserait ça, ce n'est pas bien ; - - attention, si vous testez sans
--no-overwrite, il est peut-être -
bon de vider la mémoire de
pomergeavant la lecture, pour éviter de lui faire écrire des choses lues lors des sessions précédentes, via unrm -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 --updateirait très bien ;
- attention au fichier dict auquel il peut manquer des lignes.