2015-10-06 6 views
1

Considérez un produit avec cinq clients. Les fichiers de configuration du produit modifient l'interface utilisateur du produit et certains changements de comportement pour chaque client.SVN fusionner le coffre dans différentes branches avec le commutateur

La version est contrôlée par SVN.

Le développement est effectué sur le tronc, lorsque la version est prête, une branche est créée pour chaque client et le produit est étiqueté, et le développement restera sur le tronc pour la prochaine version.

Nous nous engageons à nous connecter en cas de problème grave ou lorsque nous souhaitons mettre à jour une fonctionnalité plus rapidement.

Considérons maintenant que nous avons développé une nouvelle fonctionnalité.

  1. Nous nous engageons la nouvelle fonctionnalité à trunk.
  2. Nous effectuons une extraction SVN à partir de branchA.
  3. Fusionner la révision (qui a les caractéristiques à l'intérieur) de trunk à branchA.
  4. Validez branchA.
  5. On passe à l'espace de travail chemin branchB
  6. Faites la même fusion ici.
  7. Essayez de commettre à la branche et .... je reçois l'erreur qui dit, déjà fusionné la branche s'il vous plaît tester.

Je peux le résoudre en obtenant une caisse fraîche pour branchB je peux fusionner à nouveau.

Il semble que le problème est avec la commande de commutation, mais je ne sais pas pourquoi !!

Un commentaire?

+0

Peut-être que la commande switch ne met pas à jour correctement les propriétés svn (mergeinfo dans votre cas). Avez-vous essayé de faire une commande de nettoyage (ou un retour) juste après le changement? –

Répondre

1

Le message d'erreur « déjà fusionné la branche s'il vous plaît tester » est pas un message d'erreur standard de Subversion. Cela ressemble à quelque chose que l'administrateur de votre référentiel a configuré dans le cadre d'un test effectué par un script hook pré-commit. Vous devriez parler à votre administrateur et savoir quels sont les tests spécifiques que ce script est en train de faire, et ce qui le fait retourner ce message d'erreur particulier. Pour tout ce que nous savons, cela pourrait être un bug dans le script hook et pas avec votre processus.

script crochet de côté, voici quelques conseils généraux pour enquêter sur les choses de votre côté:

Je recommande regarder cette une étape à la fois. Après le 'commutateur' à l'étape 5, faites un svn diff entre votre copie de travail et l'URL du dépôt pour la branche B. Ils devraient être complètement identiques à ce stade. Si ce n'est pas le cas, votre 'switch' ne fonctionnera pas comme prévu (si vous utilisez des externes, vous devrez peut-être faire une 'update' après le 'switch'). Une option similaire serait de vérifier une nouvelle copie de la branche B dans un nouveau dossier, puis comparer la branche frais B avec votre copie de travail commuté (comparant le contenu du fichier, l'arborescence des dossiers et des métadonnées de la subversion).

Après la fusion à l'étape 6, exécutez svn diff > after_merge.diff. Exécutez également svn diff svn://your_repo_url/your_path -c revision_number > incoming_merge.diff. Comparez ces deux fichiers et assurez-vous qu'ils sont identiques. Toute différence entre eux peut indiquer que la fusion ne s'est pas terminée correctement ou que la branche est désynchronisée.