2

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

但是如何实现呢?或者是否有任何适用于 Ruby on Rails 的宝石/插件可以为我处理这些问题?

我的情况:
• 我有基本文本
• 来自 A 人的
更改 • 来自 B人的更改
• 两个更改都应该包括在内,而不是覆盖另一个

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

4

2 回答 2

1

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

这个小例子解释了它:

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

它生成的输出是:

这是基线。
开始(由 A 更改)。
B 添加了这一行。
结束。

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

希望这可以帮助。

于 2011-11-17T14:15:36.137 回答
0

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

于 2011-11-11T18:06:58.470 回答