Ce développeur explique comment il maintient en parallèle la compatibilité Python 2 et Python 3 de son projet : en ayant deux bases de code différentes, sans utiliser 2to3 ni de bibliothèque de compatibilité, mais en faisant les choses intelligemment :
- Utiliser une branche où tout commit est garanti d'être iso-fonctionnel entre Python 2 et 3 ;
- Faire du diff/merge entre trois répertoires (exemple si vous avez modifié le code Python 3, pour l'appliquer au Python 2) :
* Premier répertoire : Le code Python 3 venant de la branche iso ;
* Deuxième répertoire : Le code Python 3 modifié ;
* Troisième répertoire : Le code Python 2 venant de la branche iso.
- Quand une différence apparaît entre (1) et (2), copiez bêtement dans (3) ;
- Quand une différence apparaît entre (2) et (3), ignorez ;
- Quand une différence apparaît entre les 3, réfléchissez.
Les outils open source qui font du diff "three-way" :
http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools ;
http://kdiff3.sourceforge.net/ ;
http://www.sourcegear.com/diffmerge/