Dans le cadre d'un projet plus vaste, je veux pouvoir prendre deux corps de texte et les transmettre à un algorithme de fusion qui renvoie soit un résultat fusionné automatiquement (dans les cas où les changements ne sont pas contradictoires) potentiellement) produit un document texte unique avec les modifications en conflit mises en évidence. Fondamentalement, je veux juste une manière programmatique de faire ce que chaque système de contrôle de source sur la planète fait intérieurement, mais j'ai du mal à le trouver. Il y a des tonnes de GUI visuelles pour faire ce genre de chose qui dominent mes résultats de recherche, mais aucun d'entre eux ne semble rendre facilement accessible l'algorithme de fusion de base. Est-ce que tout le monde s'appuie sur un algorithme/une bibliothèque commune et bien comprise et que je ne connais pas le nom, alors j'ai du mal à le chercher? Est-ce que c'est un peu mineur sur diff et je devrais chercher des bibliothèques diff au lieu de bibliothèques de fusion?Comment fusionner par programmation des fichiers texte avec des conflits potentiels (ala git ou svn, etc.)?
Les bibliothèques Python seraient très utiles, mais je peux vivre avec le surcoût de l'interfaçage avec une autre bibliothèque (ou une solution de ligne de commande) si je le dois; cette opération devrait être relativement peu fréquente.
Les fusions automatiques ne sont pas sûres, car elles ne comprennent pas l'intention du programmeur (pluriel); Il n'y a pas de garantie qu'un fichier "fusionné" fonctionne et encore moins fonctionne comme prévu par quelqu'un. Les systèmes de contrôle de la source en sortent en supposant implicitement que l'utilisateur va de nouveau essayer de nouveau (bien que cela se produise est une autre question). Comment utiliseriez-vous les résultats d'une fusion automatique? –
Dans ce cas, je ne fusionne pas de code, je suis en train de synchroniser des fichiers texte qui peuvent avoir été modifiés alors qu'ils sont déconnectés du serveur. Lorsque le client hors ligne se reconnecte, j'ai besoin de comparer leur version locale avec la version du serveur. Les vrais conflits non fusionnables seront rares en raison de la conception de l'application, mais ils se produiront occasionnellement et j'ai juste besoin de savoir quand ils se produisent. Je ne m'attends pas à ce que l'auto-fusion soit parfaite, juste pour m'avertir quand elle échoue et me laisser dégrader gracieusement sans perdre le contenu du serveur ou du client dans le processus. – drewww
Des questions comme celles-ci sont la raison pour laquelle j'aime StackOverflow. La qualité de la communauté ici est incroyable! – ehfeng