Supposons que vous et votre ami avez tous les deux extrait un fichier et y avez apporté des modifications. Vous avez supprimé une ligne au début et votre ami en a ajouté une à la fin. Ensuite, il a validé son fichier et vous devez fusionner ses modifications dans votre copie.
Si vous faisiez une fusion bidirectionnelle (en d'autres termes, un diff), l'outil pourrait comparer les deux fichiers et voir que la première et la dernière lignes sont différentes. Mais comment saurait-il que faire des différences? La version fusionnée doit-elle inclure la première ligne? Doit-il inclure la dernière ligne?
Avec une fusion à trois, il peut comparer les deux fichiers, mais il peut également comparer chacun d'eux avec la copie d'origine (avant que l'un de vous ne la modifie). Ainsi, il peut voir que vous avez supprimé la première ligne et que votre ami a ajouté la dernière ligne. Et il peut utiliser ces informations pour produire la version fusionnée.
Cette diapositive d'une présentation perforce est intéressante:
la source
J'ai écrit un article très détaillé à ce sujet . Fondamentalement, vous ne pouvez pas suivre les suppressions / ajouts bidirectionnels, très, très improductifs.
la source
Une fusion à trois voies dans laquelle deux ensembles de modifications d'un fichier de base sont fusionnés au fur et à mesure de leur application, par opposition à l'application de l'un, puis à la fusion du résultat avec l'autre.
Par exemple, avoir deux changements où une ligne est ajoutée au même endroit pourrait être interprété comme deux ajouts, et non comme un changement d'une ligne.
Par exemple
le fichier a a été modifié par deux personnes, l'une ajoutant l'orignal, l'autre ajoutant la souris.
Maintenant, si nous fusionnons les ensembles de modifications au fur et à mesure que nous les appliquons, nous obtiendrons (fusion à 3 voies)
Mais si nous appliquons b, alors regardez le changement de b à c, il semblera que nous changeons simplement un `` u '' en un `` o '' (fusion à 2 voies)
la source