如何将文本合并在一起?像版本控制系统会吗?

时间:2011-11-11 15:07:09

标签: ruby-on-rails ruby version-control merge text-manipulation

维基百科说这很不错:http://en.wikipedia.org/wiki/Merge_(revision_control)#Three-way_merge

但是如何实现呢?或者是否有任何针对我的Ruby on Rails的宝石/插件?

我的情况:
•我有基础文本
•来自人A的变更 •来自人B的变化 •两个更改都应包含在内,而不是覆盖其他更改

我可以指出的任何方向?谢谢!

2 个答案:

答案 0 :(得分:1)

我认为您应该再次查看merge3 gem [source]

这个小例子解释了它:

require 'rubygems'
require 'merge3'

start = <<TEXT
This is the baseline.
The start.
The end.
TEXT
changed_A = <<TEXT
This is the baseline.
The start (changed by A).
The end.
TEXT
changed_B = <<TEXT
This is the baseline.
The start.
B added this line.
The end.
TEXT

result = Merge3::three_way(start, changed_A, changed_B)

puts result

它生成的输出是:

This is the baseline.
The start (changed by A).
B added this line.
The end.

我不确定它是如何处理合并冲突的,因为它应该处理文件的3向合并,它似乎是基于行的。如果这是一个问题(因为您的示例尝试比较简单字符串),您可以在每个字符之间添加换行符。

希望这有帮助。

答案 1 :(得分:0)

如果您要存储希望能够合并的版本化文本,那么听起来您有一个完美的用例来调用版本控制系统。将文本存储在文件中并调用VCS进行版本控制操作(也许Git或Grit gems会有所帮助)。