【发布时间】:2010-10-31 22:42:57
【问题描述】:
作为一个更大项目的一部分,我希望能够获取两个文本体并将它们交给一个合并算法,该算法返回一个自动合并的结果(在更改不冲突的情况下)或抛出一个错误和(可能)生成单个文本文档,突出显示冲突的更改。
基本上,我只是想要一种编程方式来完成地球上每个源代码控制系统在内部执行的操作,但我很难找到它。在我的搜索结果中,有大量用于执行此类操作的可视化 GUI,但似乎没有一个可以轻松访问核心合并算法。是否每个人都依赖一些常见且易于理解的算法/库,而我只是不知道名称,所以我很难搜索它?这只是对 diff 的一些小调整,我应该寻找 diff 库而不是合并库吗?
Python 库将是最有帮助的,但如果必须,我可以忍受与其他库(或命令行解决方案)交互的开销;这种操作应该比较少见。
【问题讨论】:
-
自动合并并不安全,因为它们不了解程序员(复数)的意图;无法保证“合并”文件可以正常工作,更不用说按某人的预期工作了。源代码控制系统通过隐含地假设用户会以某种方式重新测试(尽管这是否发生是另一个问题)来解决这个问题。您将如何使用自动合并的结果?
-
在这种情况下,我不是在合并代码,而是在同步可能在与服务器脱节时被修改的文本文件。当离线客户端重新连接时,我需要将它们的本地版本与服务器版本进行比较。由于应用程序的设计,真正不可合并的冲突很少见,但它们偶尔会发生,我只需要知道它们何时发生。我并不期望自动合并是完美的,只是在它失败时通知我,让我优雅地降级,而不会在此过程中丢失服务器或客户端内容。
-
这样的问题是我喜欢 StackOverflow 的原因。这里的社区质量非常棒!
标签: python command-line text merge diff