Comment puis-je déterminer si svn: mergeinfo est corrompu et comment pourrais-je résoudre ce problème?

StackOverflow https://stackoverflow.com/questions/2790471

Question

Je pense que j'ai mergeinfo corrompu mais je ne suis pas sûr. Est-ce que quelqu'un sait comment je ferais une détermination et quelles ressources sont là pour aider les problèmes de correctifs?

Voici la question. Mon équipe a récemment déménagé à agile et utilise la fonction branches (branches d'histoire vraiment) où les différentes équipes travaillent sur les mêmes sources simultanément. Comme l'histoire atteint un haut degré de préparation l'équipe se confond avec le tronc. Les fusions prennent jours ou semaines en raison des changements manquants, des changements inattendus, et des conflits. Nous parlons d'équipes de 5-10 personnes et l'effort / désabonnement semble moyen de haut.

Les gens utilisent ce modèle la fusion a) PULL - fusion tronc à branche, détermination, test, engager b) PUSH - fusion branche à tronc, détermination, test, engager c) branche Recréer (ou créer généralement nouvelle branche d'histoire et de laisser tomber vieux car il est fait)

A la fin de cette la branche et du tronc doit être dans l'alignement.

Les problèmes que nous voyons:

  1. ne change pas signalé au cours de fusion réseau-à-branche apparaissent dans la suite branche à tronc
  2. conflits sur svn: propriétés mergeinfo lors de la fusion
  3. fichier manquant, mais modifier locale sur le nouveau fichier ajouté dans la branche et le tronc poussé à
  4. entrant + suppression locale (fichier supprimé sur le tronc et branches montre que les conflits)

(1) ne devrait pas se produire. La traction de branche en tronc doit mettre les deux synchronisés pour tous les changements déjà sur le tronc. Les changements dans la fusion branche-à-réseau sont des changements qui se sont produits sur le tronc. Ainsi, dans la première fusion, ils auraient propagé à la branche, mais n'a pas. Cela met en évidence la corruption dans les données de mergeinfo qui seraient les changements du tronc « cacher ».

(2) ne devrait pas se produire. SVN devraient gérer les changements dans le suivi de fusion. Ce point de aussi à la corruption dans les données mergeinfo

(3) ne devrait pas se produire. Ceci est le cas d'un nouveau fichier ajouté sur la branche. Il devrait apparaître comme un nouveau fichier ajouté à tronc. Cela a également des points à la corruption dans les données d'information de fusion.

(4) Je crois que c'est un bug SVN et que nous ne pouvons pas résoudre ce problème. Cependant, si cela était notre seul problème que je serais heureux

Nous sommes actuellement sur le serveur svn 1.5.x avec les clients en utilisant svn 1.6.x et svn + ssh pour la connexion. Nous prévoyons d'aller jusqu'à la plus récente et SVN étant donné que certains correctifs peuvent influer sur nos problèmes.

Pourtant, il est certain ressemble à nos données mergeinfo est erroné.

  • Fusionne qui ne déclarent pas toutes les modifications
  • Les conflits dans la fusion des propriétés mergeinfo

Les bons endroits pour moi de commencer à regarder?

Était-ce utile?

La solution

Je l'ai fait quelques expériences avec branchement / fusion SVN, et j'ai découvert qu'il ya des situations où la fusion ne fonctionne tout simplement pas - par exemple les changements de tronc sont écrasées. Donc, si vous continuez à utiliser SVN pour les branches fonctionnelles, vous serez dans le monde de la douleur.

J'ai fait des expériences similaires avec git et je ne l'ai pas trouvé un moyen d'obtenir la fusion incorrecte. En cas de déplacement à git pourrait être acceptable par l'équipe / gestion, je vous recommande fortement de l'utiliser.

Autres conseils

Nous avons eu des problèmes similaires en raison de circonstances similaires et en grande partie les avons résolus.

Le principal est le suivant:

Si vous fusionnez dans votre branche depuis le tronc après la création de la branche, vous devez tronc de drapeau avec la branche Commit (en utilisant svn merge --record uniquement), sinon lorsque vous essayez de réintégrer le tronc il tente de fusionner la commettras du tronc à l'arrière de la branche dans le tronc.

Cela finit évidemment par revenir modifications faite sur le tronc après la plus tardive trunk-> branche commit, tend à provoquer des conflits massifs (en particulier les conflits d'arbres si vous avez créé un nouveau fichier ou un répertoire dans le coffre), etc.

Donc, notre processus est de tronc soit jamais synchronisation dans une branche après qu'il a été créé (fonctionne très bien pour les branches durée de courte), ou effectuer les opérations suivantes:

  • branche b du tronc
  • commits tronc et branche
  • réinsèrent le tronc dans la branche et engager (la résolution des conflits, mais autrement faire aucun changement, même à la compilation)
  • immédiatement faire une fusion svn --record seule du tronc commettras à la branche révision
  • fixer toute autre question avec la branche et continuer le développement
  • réinsèrent de la branche avec le tronc lorsque vous avez terminé.

J'ai trouvé: http://www.collab.net/community /subversion/articles/merge-info.html utile tout en travaillant ce que nous faisions mal.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top