Quel est le meilleur outil de fusion à trois voies? [fermé]

272

Subversion, Git, Mercurial et autres prennent en charge les fusions à trois voies (combinant la mienne, la leur et la révision "de base") et prennent en charge des outils graphiques pour résoudre les conflits.

Quel outil utilisez-vous? Windows, Mac OS X, Linux, gratuit ou commercial, vous l'appelez.

Voici quelques-uns que j'ai utilisés ou entendu parler, juste pour démarrer la conversation:

(Je reconnais que c'est un peu comme le meilleur outil de diff , mais c'est différent en ce que je me concentre explicitement sur les outils de fusion à trois voies; WinMerge est hors de la liste, par exemple.)

Dan Fabulich
la source
4
En fait, WinMerge a une comparaison à 3 voies en l'utilisant avec les outils VCS, il vous suffit de passer 3 fichiers (gauche, droite, résultat) comme arguments à la ligne de commande et il fait le travail.
Zilvinas
3
Il est difficile de dire quel est le meilleur outil de fusion, car il dépend de facteurs subjectifs. Mais si vous cherchez une fonctionnalité qui marque la différence, essayez semanticmerge.com
Daniel Peñalba
29
Comment cette question peut-elle être classée comme non constructive? Il dispose de 182 upvotes, 123 étoiles et 11 réponses, de toute évidence beaucoup de gens pensent qu'il est constructif.
HelloGoodbye
3
@Shuklaswag Quel est le rapport avec ma question? Je me demandais pourquoi il était considéré comme "non constructif".
HelloGoodbye

Réponses:

167

KDiff3 open source, multiplateforme

Même interface pour Linux et Windows, algorithme très intelligent pour résoudre les conflits, expressions régulières pour résoudre automatiquement les conflits, intégrer avec ClearCase, SVN, Git, MS Visual Studio, fichier fusionné modifiable, comparer les répertoires

Son clavier de navigation est super: flèches ctrl pour naviguer dans les diffs, ctrl-1, 2, 3 pour faire la fusion.

Voir également https://stackoverflow.com/a/2434482/42473

entrez la description de l'image ici

sotto
la source
10
Plus d'avantages de KDiff3: même interface pour Linux et Windows, algorithme très intelligent pour résoudre les conflits, expressions régulières pour résoudre automatiquement les conflits, intégrer avec ClearCase, SVN et Git, fichier fusionné modifiable, comparer les répertoires.
neves
3
@ThomasS Ce n'est pas vrai, voir l' autre kdiff3réponse pour un exemple. kdiff3sera heureusement diff et fusionner des arborescences de répertoires entières et a fait pendant de nombreuses années! Certains outils (tels que git) peuvent uniquement le lancer par fichier, mais d'autres outils (tels que mercurial) vous permettront avec plaisir de différencier / fusionner des référentiels entiers.
Mark Booth
2
KDiff3 est terrible lorsque les changements locaux et autres diffèrent dans le nombre de lignes ajoutées; si vous ajoutez localement les lignes A, B et C, mais l'autre changement n'a ajouté que A et C, alors KDiff3 détermine que A a été ajouté, puis trouve B en conflit avec C, puis ajoute C de toute façon.
Neil
3
Quelqu'un a-t-il une opinion sur cette réponse en 2016?
Shadoninja
4
Il ne prend pas en charge depuis 2014
Ruslan K.
106

Je viens de consulter P4merge depuis que j'en ai entendu parler dans un autre article de blog:

entrez la description de l'image ici

Interface très lisse et GRATUITE! Je suis un fidèle utilisateur d'Araxis Merge, mais étant donné que c'est gratuit et génial, je vous encourage à le vérifier.

Dan Esparza
la source
11
Il est disponible pour Windows, Mac, Linux, FreeBSD et Solaris 10
Grant Limberg
36
@Art: bien sûr, vous pouvez modifier le résultat de la fusion dans P4Merge. Je le fais tout le temps!
Sklivvz
9
p4merge n'est pas non plus "gratuit" pour les entreprises. La licence est limitée pour un usage commercial.
DH4
21
@ DH4 Je viens de recevoir un e-mail du support officiel de Perforce et P4Merge est gratuit pour un usage commercial (je travaille pour MS, il n'y a pas plus d'entreprise que ça;))
Ohad Schneider
4
Pas de prise en charge de la comparaison de dossiers dans P4merge. Cela aurait été un excellent ajout à P4Merge.
RuntimeException
95

Beyond Compare 3 Pro prend en charge la fusion à trois , et c'est un outil de fusion assez impressionnant. C'est commercial (mais ça vaut le coup, à mon humble avis) et est disponible sur Windows, Linux et Mac OS X.

Comme indiqué dans un commentaire, il est également peu coûteux.

Entrez la description de l'image ici

Remarque: Si aucun n'a de jeu de fusion, c'est-à-dire des marqueurs de fusion résidant dans le fichier de destination, Beyond Compare ne propose pas de comparaison / modification de fichier à trois. Beyond Compare dit que cette fonctionnalité est sur leur liste .

Remarque: la fusion à 3 voies est une fonctionnalité de l'édition Pro de Beyond Compare 3 uniquement

Joshua McKinnon
la source
16
+1 Beyond Compare vaut facilement le prix, surtout si vous considérez qu'il s'agit d'autres fonctionnalités.
jamiei
2
Bon, mais pas de support pour la sélection des dossiers
Michael Fitzpatrick
9
Michael, je ne sais pas ce que tu veux dire. Beyond Compare prend en charge les différents dossiers: scootersoftware.com/moreinfo.php .
Bruce Christensen
4
Il est clairement indiqué sur leur site Web - la réponse mise à jour de la version State Pro est une exigence pour la fusion à 3 voies
Joshua McKinnon
2
Beyond Compare 4 Pro a ajouté la prise en charge de la fusion de dossiers.
Chris Kennedy
76

Visionneuse de différences de fusion

Je n'ai eu que de bonnes expériences de travail avec Meld. Je l'utilise quand je dois faire des fusions de code désordonnées entre les branches. Il est simple à utiliser et possède une interface propre.

  • Open source
  • Linux, Windows et MacOS pris en charge
  • Différence de fichiers multiples
  • Assistance de comparaison à trois

Dans Ubuntu, l'installation est aussi simple que: sudo apt-get install meld

entrez la description de l'image ici

Elijah
la source
3
+1 Meld est un logiciel lisse, propre et "juste assez".
Trevor Bramble
15
Meld est défectueux et ses indices visuels sont trompeurs.
2011
6
Meld ne fonctionne même pas correctement avec git.
slikts
65
Meld, malheureusement, n'est PAS un outil de fusion à trois voies (même s'ils le disent sur la page d'accueil). Pour une fusion à trois, vous avez besoin de QUATRE fenêtres (le fichier de base). Mais j'adore la fusion, fonctionne très bien.
lzap
8
@lzap, en fait, la fusion était à trois voies, mais elle n'était pas documentée et il y a environ un mois, j'ai remarqué qu'ils avaient complètement supprimé la fusion à trois voies: is.gd/prKX5d Si vous vous en tenez à une version assez ancienne, vous êtes toujours dans la chance cependant.
Magnus
45

vimdiff. C'est bien. Tout ce dont vous avez besoin est une fenêtre de trois pieds de large.

entrez la description de l'image ici

Paul Beckingham
la source
11
Il a fallu un certain temps pour comprendre que vous pouvez faire "gvimdiff -O branch1.txt base.txt branch2.txt merge.txt" et utiliser ctrl + w J pour déplacer le tampon de fusion vers le bas de l'écran. Est-ce ainsi que vous l'utilisez?
Wim Coenen
À peu près, sauf que j'utilise vim, pas gvim.
Paul Beckingham
7
downvote, ça ne résout pas vraiment les conflits, c'est juste diff.
piotr
3
vimdiff a maintenant une bonne gestion de git pour la fusion à 3 voies (c'est-à-dire 4 volets) - vim.wikia.com/wiki/…
Sonia Hamilton
8
@piotr vimdiff résout en effet les conflits. Vous utilisez la commande "diffg <bufferNum>" pour créer le fichier fusionné dans le volet inférieur. Le volet de fusion bout à bout est le tampon 1, les autres sont 2,3,4 en haut. Pour passer aux différences, utilisez [c et] c. Cette fonctionnalité est prête à l'emploi sur Debian Wheezy 7.7.
ikky
37

Fusion des engrenages source :

Multiplateforme, de véritables fusions à trois voies et c'est totalement gratuit pour un usage commercial ou personnel.

entrez la description de l'image ici

CMS
la source
1
J'utilise DiffMerge depuis des années et je l'ai aimé. Cependant, j'ai lu ce billet de blog où l'auteur examinait les outils de fusion et diff réduit la liste à DiffMerge et P4Merge. Il a fini par utiliser P4Merge simplement parce qu'il avait une interface plus agréable. Je viens de commencer à utiliser P4Merge aujourd'hui et je devrais être d'accord. En particulier, DiffMerge n'affiche pas bien les changements - il les montre comme une suppression et une insertion. Cela peut prêter à confusion s'il existe de nombreux changements rapprochés. P4Merge l'affiche mieux.
Simon Tewsi
1
Je vois que diffmerge n'est pas gratuit , cela coûte 19 $
erkfel
3
@erkfel, c'est incorrect. L'enregistrement est facultatif et le logiciel est gratuit: "SourceGear DiffMerge est un outil primé de diff et de fusion de fichiers qui aide les développeurs professionnels et les amateurs depuis 2007. SourceGear DiffMerge est autorisé à utiliser gratuitement. Cependant, en enregistrant DiffMerge vous aiderez à financer le développement, la maintenance et le support de nouveaux produits. Afin de remercier nos utilisateurs enregistrés et d'encourager les enregistrements supplémentaires, nous avons ajouté de nouvelles fonctionnalités dans la version 4.2 ... "(dans le texte du programme)
Muhd
1
Une chose que je trouve utile dans DiffMerge, par rapport à P4Merge (que j'utilise maintenant pour différencier et fusionner dans git), c'est qu'il s'intègre à l'Explorateur de fichiers Windows. En particulier, je peux me souvenir d'un fichier dans un dossier, puis comparer le fichier mémorisé à un autre dans un dossier différent. Je trouve cela utile peut-être une ou deux fois par mois, où je n'ai pas à déplacer deux fichiers dans le même dossier pour les comparer (par exemple, les scripts SQL ne sont pas sous contrôle de source).
Simon Tewsi
1
@SimonTewsi: P4Merge pour Mac ne nécessite pas que les fichiers se trouvent dans le même dossier. Il vous permet de parcourir le système de fichiers et de sélectionner les fichiers de base, premier et deuxième depuis n'importe où sur l'ordinateur.
Steve Samuels
32

Araxis Merge . C'est commercial, mais ça vaut vraiment le coup ... Il est disponible pour Windows et Mac OS X.

Entrez la description de l'image ici

Dave
la source
5
D'accord, c'est le meilleur que j'aie utilisé.
Dan Olson
1
Mon observation: son relativement lent lors de la manipulation de gros fichiers autour de 5 Mo.
Naga Kiran
3
+1 pour Araxis. L'un des rares outils que j'étais prêt à payer pour avoir un usage personnel. Tout le reste est encombré, déroutant et pâle en comparaison (jeu de mots voulu).
Dan Esparza
8
Après avoir utilisé Araxis pendant une longue période, mon entreprise est passée à KDiff3 pour les raisons suivantes: (1) Lorsqu'une fusion dans Araxis est annulée, le fichier est toujours marqué comme résolu dans TortoiseHg. (2) Araxis montre un mélange de la révision de base et du résultat de la fusion dans le volet "Résultat de la fusion" qui est souvent déroutant. (3) À partir de TortoiseHg, KDiff3 fusionnera automatiquement sans intervention de l'utilisateur s'il peut le faire. (4) L'algorithme de fusion de KDiff3 semble simplement faire un meilleur travail. Cependant, nous utilisons toujours Araxis comme outil de comparaison :)
Michael Platings
2
Comme mentionné dans les commentaires pour d'autres réponses, un outil de fusion à 3 voies approprié a 4 panneaux - base, local, distant et résultat . Araxis confond la base et le résultat, ce qui peut entraîner des problèmes.
neonblitzer
27

L'algorithme de résolution des conflits Kdiff3 est vraiment impressionnant.

Même lorsque la subversion indique un conflit, Kdiff3 le résout automatiquement. Il existe des versions pour Windows et Linux avec la même interface. Il est possible de l'intégrer à Tortoise et à votre shell Linux.

Il figure dans la liste de mes logiciels open source préférés. L'un des premiers outils que j'installe sur n'importe quelle machine.

Vous pouvez le configurer comme outil de diff par défaut dans Subversion, Git, Mercurial et ClearCase. Il résout également presque tous les conflits ClearCase. Dans Windows, il a une belle intégration avec l'explorateur Windows: sélectionnez deux fichiers et faites un clic droit pour les comparer, ou faites un clic droit pour `` enregistrer plus tard '' un fichier, puis sélectionnez-en un autre pour comparer.

Le fichier fusionné est modifiable. A des raccourcis clavier lisses.

Vous pouvez également l'utiliser pour comparer et fusionner des répertoires. Voir: Kdiff3 Comparaison des répertoires

Une fonctionnalité avancée consiste à utiliser des expressions régulières pour définir des fusions automatiques.

Mon seul ennui est qu'il est un peu difficile à compiler s'il n'est pas présent dans votre dépôt de distribution préféré.

neves
la source
3
Je suis d'accord sur l'algorithme de fusion. Il est incroyablement sophistiqué et semble étrangement «savoir» ce que vous voulez faire d'une manière que les autres outils ne peuvent pas. Il écrase régulièrement diff3 et Subversion (blarg), et peut même être utile avec une fusion Git.
kevinarpe
où sont les raccourcis clavier pour aller ensuite et choisir a / b / c?
mylord
@mylord: utilisez un petit retard d'avance automatique et les raccourcis Ctrl-1/2/3 pour sélectionner A / B / C pour de nombreux conflits.
neves
quelque chose a-t-il remplacé KDiff3 pour vous? Grand utilisateur, mais je me retrouve à voir s'il y a une meilleure alternative ces jours-ci
chrispepper1989
1
@ chrispepper1989, j'utilise toujours KDiff3 dans Git aujourd'hui. Je n'ai jamais trouvé d'application de fusion à 3 voies bien meilleure que KDiff3. P4Merge a une interface plus moderne, mais quand je l'ai testée, vous ne pouviez pas modifier le fichier fusionné (je pense que vous pouvez le faire maintenant).
neves
13

J'adore Ediff . Il est intégré à GNU Emacs .

Pour faire une différence à trois, utilisez ediff-files3(pour sélectionner trois fichiers) ou ediff-buffer3(pour sélectionner trois tampons déjà ouverts). Vous obtiendrez un écran ressemblant à ceci:

diff à trois voies dans emacs

Notez la mise en évidence de la différence de mots.

Vous pouvez frapper nou pd'aller à la page suivante / précédente diffs, tout en abcopiera la région de tampon un (le plus à gauche) à tampon b (celui du milieu), et de même pour d' autres combinaisons de deux lettres de a, b, c; rbrestaurera la région dans le tampon b. Frappez ?pour un menu d'aide rapide, ou lisez le manuel fin sur la fusion diff3 dans Emacs .

jcrossley3
la source
6
Autant que j'aime ediff, je ne vois que deux tampons ci-dessus ... une fusion à 3 voies est censée avoir 3 ou 4 fenêtres: les trois étant fusionnées (local, distant et leur base d'ancêtre commune), et la sortie de fusion finale . Il ne semble y avoir une fusion à 3 voies dans ediff (appelé ediff-merge-with-ancestor) mais je ne suis pas sûr si elle dispose de 3 vitres ou 4, ainsi que la capture d' écran ci-dessus reflète pas.
ShreevatsaR
Modifié pour afficher un diff à trois voies @ShreevatsaR
unhammer
@unhammer Merci, c'est mieux, mais il n'affiche que 3 fenêtres, il n'est donc pas clair qu'il s'agit d'un véritable diff à 3 voies (qui aurait 4 fenêtres; voir le kdiff3 et d'autres exemples). Si ce qui est montré dans la capture d'écran est la fusion des trois éléments, où est la sortie?
ShreevatsaR
Vous modifiez de manière destructive un (ou plusieurs!) Des tampons. C'est pourquoi j'ai mentionné que abcopier la région du tampon a vers le tampon b. Je ne pense pas qu'il existe ediffencore de version à quatre fenêtres . (Je sais emergeutilise un tampon de sortie dédié à la place, mais emerge-files-with-ancestorne montre pas l'ancêtre, ne l' utilise que pour deviner la version correcte en voyant celle qui est d'accord avec l'ancêtre.)
unhammer
11

Ultracompare . Il est vraiment bon, gère bien les gros fichiers (plus de 1 Go), est disponible pour Windows / Mac / Linux, et c'est commercial, mais ça vaut le coup.

Capture d'écran d'UltraCompare Professional sous Windows

MrTelly
la source
Je ne sais pas comment le configurer pour prendre en charge la fusion à 3 voies ... Peut-il afficher un fichier de base au milieu, 2 fichiers modifiés à gauche et à droite, donc je peux voir ce qui est modifié dans les deux fichiers en fonction de la base fichier et ont le résultat fusionné de 2 fichiers modifiés en bas? J'utilise UltraCompare 17.0
Ricky
1
Un peu de recherche sur Google a trouvé cette ultraedit.com/support/tutorials-power-tips/ultracompare/… - parle de fusion à 3 dans l'étape 6 de fusion avancée.
MrTelly
11

Diffuse est un outil de fusion à trois voies facile à utiliser. Il prend en charge toutes les plates-formes et systèmes de contrôle de version que vous avez mentionnés, et il peut comparer plus de trois fichiers en même temps.

entrez la description de l'image ici

Jordan Ryan Moore
la source
2
Et il prend même en charge la comparaison de N fichiers en même temps! Cela est pratique si vous devez comparer des fichiers de configuration de nombreuses applications homogènes.
Pius Raeder
J'utilise Diffuse pour mes comparaisons de plus de trois fichiers
mohas
6

xxdiff si vous êtes en terre Linux.

Entrez la description de l'image ici

Mark Harrison
la source
4

Le résumé est que j'ai trouvé que ECMerge était un excellent produit, bien que commercial. http://www.elliecomputing.com/products/merge_overview.asp

entrez la description de l'image ici

Je suis également d'accord avec MrTelly que Ultracompare est très bon. Une fonctionnalité intéressante est qu'il comparera les documents RTF et Word, ce qui est pratique lorsque vous finissez par programmer en Word avec les vendeurs et qu'ils ne gèrent pas correctement leurs documents.

Steve Midgley
la source
Le premier lien ne fonctionne pas, il renvoie 500 erreurs. Si la ressource a été déplacée, veuillez ajuster l'URL.
Sergey P. aka azur
@ SergeyP.akaazure - désolé pour ça. Mon blog a disparu - j'ai supprimé le lien ..
Steve Midgley