Python 如何以编程方式合并具有潜在冲突(alagit或svn等)的文本文件?

Python 如何以编程方式合并具有潜在冲突(alagit或svn等)的文本文件?,python,command-line,text,merge,diff,Python,Command Line,Text,Merge,Diff,作为更大项目的一部分,我希望能够获取两个文本体并将它们交给合并算法,该算法返回自动合并结果(在更改不冲突的情况下)或抛出错误,并(可能)生成一个突出显示冲突更改的单文本文档 基本上,我只想用一种编程的方式来完成地球上每个源代码控制系统内部的工作,但我很难找到它。在我的搜索结果中,有很多视觉图形用户界面可以用来做这类事情,但它们似乎都无法轻松访问核心合并算法。是不是每个人都依赖于一些常见的、很好理解的算法/库,而我只是不知道它的名字,所以我很难找到它?这只是对diff的一些小调整,我应该寻找dif

作为更大项目的一部分,我希望能够获取两个文本体并将它们交给合并算法,该算法返回自动合并结果(在更改不冲突的情况下)或抛出错误,并(可能)生成一个突出显示冲突更改的单文本文档

基本上,我只想用一种编程的方式来完成地球上每个源代码控制系统内部的工作,但我很难找到它。在我的搜索结果中,有很多视觉图形用户界面可以用来做这类事情,但它们似乎都无法轻松访问核心合并算法。是不是每个人都依赖于一些常见的、很好理解的算法/库,而我只是不知道它的名字,所以我很难找到它?这只是对diff的一些小调整,我应该寻找diff库而不是合并库吗


Python库将是最有用的,但如果有必要,我可以忍受与其他库(或命令行解决方案)接口的开销;这种操作应该相对较少

您签出difflib了吗


您可能正在搜索像3路合并这样的合并算法,您可以在许多开源项目中找到,例如在bazaar VCS()。

自动合并是不安全的,因为它们不了解程序员(复数)的意图;“合并”文件的工作方式是不可靠的,更不用说按照某人的意图工作了。源代码管理系统通过隐式地假设用户将以某种方式重新测试(尽管是否会发生是另一个问题)来逃避这一点。如何使用自动合并的结果?在这种情况下,我不是在合并代码,而是在与服务器脱离接触时同步可能已修改的文本文件。当脱机客户端重新连接时,我需要将其本地版本与服务器版本进行比较。由于应用程序的设计,真正的不可合并冲突很少发生,但它们偶尔会发生,我只需要知道它们何时发生。我并不期望自动合并是完美的,只是在它失败时通知我,让我优雅地降级,而不会在过程中丢失服务器或客户端内容。这里的社区质量太棒了!这看起来很强大,但在我看来,它实际上无法完成流程的合并部分,只是差异部分。我可能可以在SequenceMatcher上构建一个合并系统,但这似乎是一个很大的进步。如果你愿意,你可以从meld中找到合并代码。啊,是的,我想这正是我需要的神奇短语!我将不得不深入研究这些不同的版本,看看什么是容易从上下文中提取/抽象的,但是第一次通过看起来很有希望。谢谢