2009-09-17 5 views
0

Nous avons deux repos, un développement et un production. Il a été construit de sorte que les choses testées soient entrées dans le développement et ensuite fusionnées dans la production maintenant, parfois les gens oublient de fusionner et ils deviennent désynchronisés. Quelle est la meilleure façon de trouver tous les changements dans le dépôt de développement qui ne sont pas dans la production?Comment synchroniser (fusionner) avec svn repositories ... développement -> production

+0

Est-ce que le fait que ceux-ci se trouvent dans deux dépôts distincts est coulé dans le béton ou est-ce que cela doit être discuté? – sbi

Répondre

1

Je ne fusionnerais pas tout, mais copiez la version de développement pour obtenir une nouvelle branche. Cette nouvelle branche est la version de production actuelle et est gelée. Vous pouvez y faire des corrections de bogues et fusionner certaines fonctionnalités entre la branche et le développement. Après un certain temps, le développement (trunk) et la production (branche) sont différents et vous recopiez. Cela signifie que le tronc est le maître et que tout le monde travaille dans ce sens. Chaque branche est une version de votre logiciel et doit être stable et gelée. À côté de cela, vous pouvez copier des branches pour essayer des choses et si vous êtes satisfait du résultat, le fusionner dans le coffre. Je pense que ce qui précède est la meilleure pratique et largement utilisé. Cependant, une méthode agile pourrait être contre cela ;-)

0

Vérifiez la version de production dans le répertoire A. Consultez la version de développement dans le répertoire B. Copiez tous les fichiers de B au-dessus des fichiers dans A (attention ne pas copier sur les sous-répertoires .svn). Ensuite, faites un svn status ou un svn diff pour voir ce qui est changé.

J'utilise Eclipse, où tout fichier qui a été modifié apparaît avec un petit signe plus, ce qui le rend très facile à repérer. (Ou si seulement j'avais une meilleure vue et/ou un moniteur plus grand.)

Lorsque SVN essaie de déterminer si un fichier est modifié, il ne fait pas le suivi de la frappe ou quelque chose comme ça. Il compare simplement la version actuelle du fichier à la version mise en cache dans le répertoire .svn.

Je n'ai jamais fait cela sur un produit entier, mais j'ai utilisé cette technique plusieurs fois quand, pour une raison ou une autre, j'ai eu un fichier qui a été mis à jour en dehors de mon espace de travail. (J'étais sur le point d'expliquer les circonstances mais je me suis rendu compte que ce serait long et ennuyeux.)

Comme une autre affiche l'a dit, pourquoi avez-vous deux référentiels distincts dans cette situation? Je ne vois pas comment cela peut vous apporter quelque chose, et cela ajoute beaucoup de douleur à suivre l'historique des changements et à faire des fusions et autres. Vous pouvez créer deux répertoires dans un référentiel pour "production" et "développement" et obtenir probablement tous les avantages et aucun des inconvénients.

Questions connexes