J'ai quelques projets qui s'exécutent sur du matériel personnalisé. Le matériel a maintenant changé, ce qui a nécessité quelques modifications logicielles. Par conséquent, il y a la source A pour «ancien matériel» et la source B pour «nouveau matériel», qui sont identiques à 95%.Comment maintenir un logiciel légèrement différent?
Si une nouvelle fonctionnalité est ajoutée dans le futur, elle doit être effectuée pour les deux versions. En d'autres termes, A et B existeront côte à côte et nécessiteront toujours les mêmes changements.
Je viens d'utiliser Subversion, donc je ne connais pas toutes les possibilités. Si je comprends bien, une nouvelle branche pour B séparerait les deux à partir de ce moment-là, ce qui n'est pas ce dont j'ai besoin.
Quelle est la meilleure façon de maintenir A et B afin que les modifications futures s'appliquent aux deux versions sans avoir à les appliquer manuellement deux fois?
C'est comme ça que j'ai fait ces choses avant, sans penser à Subversion. Peut-être qu'il y avait une meilleure solution en utilisant Subversion, c'était ma raison pour la question. – Holgerwa
Avoir ifdefs dans le code pour maintenir un emplacement de base de code "commun" n'est pas si facile que cela puisse paraître et je ne le recommande pas du tout.En fin de compte, ce sera une autre source importante de cauchemar pour le contrôle des changements, car il est facile, dans le même code source, d'introduire des versions «croisées» d'effets secondaires. Plus vous aurez de «branches», plus vous aurez de problèmes à suivre les changements pour une version spécifique et à garder les effets secondaires pour le reste des versions. –
@Catalin Pitis: Pour chaque environnement matériel unique, il doit y avoir au moins une branche du code. À mon humble avis, on devrait essayer d'isoler ce qui est unique autant que possible, et de préférence le rassembler en un seul endroit. Parfois, #ifdefs fonctionne bien, d'autres fois il est logique de créer des classes ou des fonctions de pilotes spécifiques au matériel. Que recommandez-vous comme alternative? –