2010-04-12 5 views
4

J'ai été un utilisateur de UltraCompare Pro depuis sa sortie, et je pense que c'est un outil de comparaison et de fusion très complet. Cependant, depuis que j'ai regardé de plus près DVCS, j'ai trouvé qu'il manipule des fusions à trois voies différemment que (la plupart?) D'autres outils là-bas. Je me demande donc pourquoi et si je manque quelque chose à cause de ça.Fusion à trois - différentes philosophies?

Dans UltraCompare, il existe trois panneaux de fusion (appelés base, local et autre). Toutes les actions de fusion se produisent dans ces panneaux. En pratique, cela signifie que je fais mon travail sur le carreau central (local), en fusionnant les changements de la droite (autre) ou peut-être de l'ancêtre commun à gauche (base). Le volet du milieu est modifié pendant la session, puis enregistré - et validé à la suite de la fusion. Le quatrième volet (fenêtre de sortie) contient uniquement des informations sur le résultat diff.

Screenshot UC http://www.ultraedit.com/assets/images/feature_map/uc/three_way_text.png

Dans d'autres outils, il semble que les trois volets existent que dans un état de lecture seule, et que le quatrième, volet inférieur (sortie) est l'endroit où toute la fusion se produit. Quelles sont les raisons d'avoir une fenêtre de fusion supplémentaire? Est-il plus facile de suivre tous les changements? Ou est-ce juste parce que tout le monde a toujours fait comme ça, alors nous copions ce comportement? Quel est ton opinion là-dessus?

Screenshot kdiff3 http://hginit.com/i/04-kdiff3-after.png

Je ne suis pas sûr que il existe une meilleure ou la réponse correcte, donc je n'ai pas encore fait cette CW question, mais je vais céder la parole à votre opinion ici.

Répondre

6

Cela me semble évident, vous pourriez très bien vouloir garder une version «locale» inchangée visible lorsque vous apportez vos modifications.

original  local   other   merged 

       bar= foo+1 bar= foo+2  bof= foo+2 
              zot= foo+1 
...   ...   ...    ... 
print foo  print bar  print foo+1  print bar?? 

Les deux local et other ont introduit une nouvelle variable bar. Fusionner le premier changement à bof/zot, prendre une tasse de thé, revenir et essayer de fusionner le print. Attendez, quel était bar dans local? Si le local original n'est pas là, cette information a disparu, et vous êtes en train de chercher un autre éditeur de texte pour savoir ce qu'il s'est passé.

Ceci est un exemple inventé, mais ce genre de chose peut facilement se produire pour n'importe quel ensemble de changements que vous ne pouvez pas garder dans votre tête et faire d'un seul coup. En général, un 3WM a toujours deux éléments variables, changez A et changez B. Pour reproduire toutes les informations, vous avez besoin de quatre vues pour toutes les permutations possibles: 0 (l'original), A, B, et AB (le fusionner).

+0

Ne me regarde pas artificiellement. Merci! –

3

Personnellement, j'aime l'outil gratuit de fusion force (p4merge). Il dispose également de 4 fenêtres - le haut du milieu pour l'original (avant la branche), à ​​gauche pour la branche de destination, à droite pour la branche source et la partie inférieure est modifiable. J'aime cela mieux que votre option 1, car les 3 fichiers originaux peuvent contenir des informations importantes qui peuvent influencer la fusion.

2

Il existe essentiellement deux façons d'afficher les différences entre deux fichiers:

  • Deux panneaux côte à côte
  • Un panneau

Graphiquement:

aaa aaa 
bbb ··· 
··· ccc 
ddd ddd 

et

Certains programmes utilisent le premier (par ex. WinMerge) et certains programmes permettent de choisir (par exemple TortoiseMerge ou Google Project Hosting). C'est probablement une question de goût, mais je trouve la seconde plus intuitive lorsque vous voulez suivre les changements. Cependant, vous avez besoin de deux panneaux lorsque vous voulez modifier les modifications. Lorsque fusionne trois voies fusionne, les différentes dispositions proviennent de cela. Ultra compare utilise l'approche à panneau unique pour afficher les changements de sorte que vous obtenez deux panneaux plus un troisième panneau à éditer. D'autres programmes utilisent l'approche à deux panneaux pour afficher les modifications de sorte que vous obtenez trois panneaux plus un quatrième pour les modifications.

Encore une fois, je crois que c'est juste une question de goût.

4

Project: Merge est un outil de comparaison et de fusion que j'ai écrit pour XML. J'ai regardé l'approche standard à 4 volets et l'ai presque instantanément écartée comme étant un moyen très coûteux d'afficher des données. Un point amplement prouvé dans les captures d'écran ci-dessus où presque tous les panneaux montrent exactement les mêmes données plusieurs fois.

J'ai donc développé une approche de volet unique pour afficher tous les fichiers d'entrée et montrer lequel d'entre eux contribue à la sortie. (Même si les différences sont lors de la comparaison de fichiers.) Bien que je n'ai pas autorisé l'édition de texte complètement libre (principalement en raison de la gestion et de la référence des noeuds XML), certaines parties de la sortie de fusion peuvent être modifiées plus ou moins serait dans un éditeur de texte régulier. (Les raccourcis clavier de mon éditeur suivent de près ceux de Visual Studio en ce qui concerne la navigation.) Notamment les données de caractères, les commentaires et les valeurs d'attributs. Vous pouvez également couper et coller des nœuds XML dans leur intégralité. (. Mais il est évident que sous forme de texte à des applications externes)

La capture d'écran ci-dessous montre une fusion à trois voies avec la plupart des changements qui apparaissent dans le fichier « gauche », et un conflit non résolu en dessous de la modification sélectionnée:

alt text

+0

J'aime vraiment cet outil! Vaut vraiment le détour! – pablo

Questions connexes