Question

Je suis assez habitué à faire des fusions CVS dans Eclipse. Je suis également satisfait de la manière dont Subclipse et Subversive fonctionnent avec le référentiel SVN, mais je ne suis pas tout à fait sûr de savoir comment effectuer des fusions correctement.

Lorsque je fais une fusion, il semble vouloir coller les fichiers fusionnés dans un répertoire distinct de mon projet plutôt que d’écraser les anciens fichiers qui doivent être remplacés lors de la fusion, comme j’ai l'habitude de le faire dans CVS.

La question n’est pas propre à Subclipse ni à Subversive.

Merci pour l'aide!

Était-ce utile?

La solution

Je vous conseillerais de ne pas essayer d'utiliser les plug-ins d'Eclipse comme accès principal à Subversion.

Si vous développez sur Windows, TortoiseSVN est le meilleur programme que j'ai vu pour un accès Subversion. Explorez le répertoire dont vous souhaitez fusionner, cliquez dessus avec le bouton droit de la souris et utilisez l'option de fusion Tortoise SVN. En supposant une fusion non interactive, une fois que vous obtenez des conflits, vous devrez examiner chaque fichier en conflit et les éditer avant de les marquer comme résolus. Pour ce processus, je recommande un programme appelé KDiff3, qui affiche la copie de votre référentiel local (ce qui était stocké dans le fichier .svn avant la fusion), votre copie locale (y compris les modifications) et la copie provenant du référentiel, et vous permet de: voir facilement (et même modifier à la main si nécessaire) le résultat de la fusion. Il gère également automatiquement de nombreux conflits mineurs.

KDiff3 est portable, TortoiseSVN est une extension de shell Windows, donc si vous utilisez un autre environnement, j'essaierai d'utiliser SVN uniquement pour fusionner. Mais ce serait beaucoup plus pénible:)

Autres conseils

Fusion d'une branche entière dans le coffre

  1. Inspectez l'historique du projet de branche pour déterminer la version à partir de laquelle la branche a été extraite

    • par défaut, Eclipse Team " Historique " affiche uniquement les 25 dernières révisions; vous devrez donc cliquer sur le bouton & "Afficher tout" dans cette vue & ";
    • quand vous dites " Afficher tout " cela vous ramènera au-delà de la date de la branche et vous montrera toute l’historique du tronc; vous devrez donc rechercher votre commentaire là où vous avez créé une branche
    • REMARQUE : si vous utilisez Tortise SVN pour cette même tâche (accédez à la branche et sélectionnez & "Afficher le journal &";), il affichera uniquement l'historique de la vous pouvez dire exactement où la branche a commencé
  2. Alors maintenant, je sais que 82517 était la première ID de version de l'historique de la branche. Donc, toutes les versions de la branche après 82517 comportent des modifications que je souhaite fusionner dans le tronc

  3. Allez maintenant à la " trunk " projet dans votre espace de travail Eclipse et sélectionnez " clic droit - Équipe - Fusionner "

  4. La vue par défaut est la fusion d'URL 1

    • sélectionnez l'URL de la branche à partir de laquelle vous fusionnez
    • sous Révisions sélectionnez & "Tous &";
    • appuyez sur OK
  5. Ceci vous mènera à la " Synchronisation d’équipe " perspective (sinon, vous devriez y aller vous-même) pour résoudre les conflits (voir ci-dessous)

Re-fusionner plus de changements de branches dans le coffre

  1. Insérez l'historique du projet de réseau afin de déterminer la dernière fois que vous avez fusionné avec celui-ci (vous auriez dû le commenter)

    • Par souci d'argumentation, disons que cette version était 82517
  2. Je sais maintenant que toute version supérieure à 82517 de la branche doit être fusionnée dans le tronc

  3. Allez maintenant à la " trunk " projet dans votre espace de travail Eclipse et sélectionnez " clic droit - Équipe - Fusionner "

  4. La vue par défaut est la fusion d'URL 1

    • sélectionnez l'URL de la branche à partir de laquelle vous fusionnez
    • sous Révisions sélectionnez " Révisions " bouton radio et cliquez sur & "Parcourir &";
    • cela ouvrira une liste des 25 dernières révisions de branche
    • sélectionnez toutes les révisions dont le nombre est supérieur à 82517
    • appuyez sur OK (vous devriez voir la liste de révision dans le champ de saisie à côté du bouton radio)
    • appuyez sur OK
  5. Ceci vous mènera à la " Synchronisation d’équipe " perspective (sinon, vous devriez y aller vous-même) pour résoudre les conflits (voir ci-dessous)

Résolution des conflits

  1. Vous devriez être à la " Synchronisation d'équipe " la perspective. Cela ressemblera à n'importe quelle synchronisation normale à des fins de validation dans laquelle vous verrez des fichiers nouveaux et des fichiers en conflit.

  2. Pour chaque fichier dans lequel vous voyez un conflit, choisissez & "clic droit - Modifier les conflits &"; (ne double-cliquez pas sur le fichier, il affichera l'outil de version de validation diff, il est TRES différent)

    • si vous voyez des choses comme & «; < < < < < .travail " ou " > > > > > > > .merge-right.r84513 " alors vous êtes dans le mauvais mode d'édition
  3. une fois que vous avez résolu tous les conflits dans ce fichier, indiquez-lui & "marquer comme fusionné &";

  4. une fois que tous les fichiers sont exempts de conflits, vous pouvez ensuite synchroniser votre projet Eclipse et les valider sur SVN

Je vérifie généralement les deux branches, puis l’option de comparaison (comparant les unes aux autres), qui effectue une comparaison semblable à une synchronisation des deux arbres source. Après avoir intégré les modifications dans une branche, vous pouvez effectuer un nouvel enregistrement dans le référentiel.

Utilisez l’intégration Eclipse, cela fonctionne parfaitement.

Le principal changement par rapport à CVS est que vous ne fusionnez que les deltas d’une branche, c’est-à-dire que vous passez d’une révision à une autre. C’est-à-dire que vous devez suivre la révision de démarrage correcte d’une manière ou d’une autre (sauf si vous avez l’historique de fusion de svn 1.5)

Si vous avez raison, ce n’est qu’à vous de faire les changements avec l’éditeur de comparaison.

Tout d'abord, si vous voyez & "; > > > > > &"; et tel dans vos fichiers lorsque vous les visualisez dans Eclipse, cela signifie probablement que vous ne consultez pas le fichier avec l'éditeur de comparaison approprié. Essayez de cliquer avec le bouton droit de la souris sur le fichier dans la vue Projet ou dans la vue Synchroniser et de sélectionner & Quot; Modifier les conflits & Quot; pour faire apparaître un éditeur de comparaison qui vous montrera graphiquement les régions en conflit plutôt que sous forme de texte. Notez que l'éditeur de comparaison qui apparaît pour & "Modifier les conflits &"; est différent de celui que vous obtenez lorsque vous double-cliquez sur un fichier dans la vue Synchroniser - l’éditeur de comparaison doublieclick indique les différences entre votre fichier actuel et la façon dont il existait lors de la dernière extraction ou mise à jour, La boîte de dialogue de comparaison des conflits affiche les différences entre deux sources de modifications (par exemple, les modifications que vous avez fusionnées par rapport aux modifications qui existaient dans votre espace de travail avant la fusion).

Deuxièmement, vous voudrez peut-être connaître un bogue dans certaines versions du plug-in Evers pour subversif, qui entraîne que tous les fichiers ayant accepté les modifications de la fusion sont marqués de manière incorrecte en tant que conflits. Ce bogue a été corrigé, mais beaucoup de personnes ne semblent pas encore avoir mis à jour pour obtenir le correctif. Plus de détails ici:

https://bugs.eclipse.org/bugs/show_bug.cgi? id = 312585

Rappelez-vous qu’avec svn, il est relativement facile de rétablir l’arborescence modifiée dans une arborescence modifiée. Disposez simplement d'un espace de travail vierge sur la branche de destination de la fusion et exécutez la commande de fusion pour importer les modifications depuis la branche source de la fusion, puis synchronisez votre espace de travail et vous obtiendrez votre fenêtre de comparaison éclipse habituelle affichant tous les fichiers de fusion modifiés et les conflits.

Si, pour une raison quelconque, vous ne pouvez pas résoudre les conflits, vous pouvez revenir au projet et revenir à un état minimal, sinon vous effectuez la fusion sur place et une fois que vous avez terminé, vous pouvez vous engager. Notez que vous n’avez pas besoin de commettre, une fois que vous avez fini de gérer les conflits, vous pouvez également revenir à la vue dev, vérifier que le code est compilé, exécuter vos tests unitaires, etc., puis synchroniser à nouveau et valider (une fois les conflits localement localisés). résolus, ils ne reviendront pas)

la dernière fois que j'ai regardé, lorsque vous utilisez la commande de fusion subclipse, il écrasera le fichier fusionné (en utilisant des marqueurs de conflit pour afficher les zones en conflit) et placera les côtés gauche et droit d'origine de la fusion au même endroit. il ne faut rien mettre dans des répertoires différents.

En règle générale, il est préférable de valider toutes les modifications de fusion dans un seul commit et de ne conserver que les modifications de fusion dans le commit afin que vous puissiez annuler la fusion ultérieurement si nécessaire.

L'outil de fusion d'OpenCollabNet pour subclipse est très soigné. Il existe de nombreux types de fusion disponibles et la fusion que je viens d'effectuer avec elle de manière transparente. Je le recommande.

La capacité d’archivage est l’un des éléments qui ne synchronisent pas la vue dans Eclipse. Dans la vue Synchronisation d'équipe, je peux afficher toutes mes modifications et résoudre les conflits. Il serait donc plutôt intuitif de procéder à l'enregistrement immédiatement, au lieu de revenir à l'affichage Java et de procéder à l'enregistrement.

J'ai atterri ici car je cherchais un moyen de fusionner un éditeur de fusion externe (KDIFF3), mais de démarrer la fusion à partir d’éclipse. Je n'étais pas satisfait des réponses fournies ci-dessus. Alors voici comment configurer kdiff3 en tant qu’éditeur de fusion et de diff pour SVN dans eclipse:

allez dans Windows - > Préférences & # 8594; Équipe - & Gt; SVN - & Gt; Visualiseur Diff Ajouter une nouvelle configuration (bouton d'ajout): Extension ou type MIME: * - si vous le souhaitez, vous pouvez spécifier différents types MIME pour différents éditeurs. Je n'ai donc pas besoin de cela, donc l'alquantor.

Diff : Chemin du programme C: \ Program Files \ KDiff3 \ kdiff3.exe (ou quel que soit votre éditeur de fusion - sélectionnez le chemin de Windows, n'hésitez pas à ajouter une version de Linux dans les commentaires ou à modifier cette réponse.)

Arguments: $ {base} $ {mine} $ {leur}}

Fusionner : Chemin du programme C: \ Program Files \ KDiff3 \ kdiff3.exe

Arguments: $ {base} $ {mine} $ {leur}} -o $ {fusionnée}

Cela fonctionnera probablement aussi pour d'autres éditeurs de fusion, mais avec une syntaxe d'argument différente (essayez de nous le faire savoir :)).

L'utilisation est comme d'habitude (équipe - > conflits d'édition) pour la fusion et la comparaison - > foo pour la vue diff.

A bientôt

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