2

ウィキペディアは、これはかなり良いと言っています: http://en.wikipedia.org/wiki/Merge_(revision_control)#Three-way_merge

しかし、それをどのように実装しますか?または、それを処理するRuby on Rails用の宝石/プラグインはありますか?

私の状況:
• ベース テキスト
がある • 人物 A からの
変更 • 人物 B からの変更
• 両方の変更を含める必要があり、他方を上書きしない

私が指摘できる方向はありますか?ありがとう!

4

2 に答える 2

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

生成される出力は次のとおりです。

これがベースラインです。
開始 (A によって変更)。
Bはこの行を追加しました。
終わり。

マージの競合をどのように処理するかはわかりません。また、ファイルの 3 方向のマージを処理することになっているため、行ベースのようです。それが問題である場合(例では単純な文字列を比較しようとするため)、すべての文字の間に改行を追加できます。

お役に立てれば。

于 2011-11-17T14:15:36.137 に答える
0

マージできるようにしたいバージョン付きのテキストを保存している場合、バージョン管理システムを呼び出すのに最適な使用例があるように思えます。テキストをファイルに保存し、バージョン管理操作のために VCS を呼び出します (おそらく Git または Grit gem が役立つでしょう)。

于 2011-11-11T18:06:58.470 に答える