28

だから私はwikiタイプのサイトに取り組んできました。私が決めようとしているのは、2 人のユーザーが同時に編集している記事をマージするための最適なアルゴリズムは何かということです。

これまでのところ、関連のない 2 つの領域が編集された場合はドキュメントをマージするウィキペディアの方法を使用することを検討していますが、2 つのコミットが競合する場合は古い変更を破棄します。

私の質問は次のとおりです。元の記事と 2 つの変更がある場合、それらをマージし、発生した競合に対処するための最適なアルゴリズムは何ですか?

4

3 に答える 3

33

BillRitcherの優れた論文「ATrustworthy3-WayMerge」では、商用SCMパッケージで使用されている3方向のマージと巧妙なソリューションを備えた一般的な落とし穴について説明しています

3方向マージは、各バージョンからのすべての変更(重複していない)を自動的に適用します。秘訣は、ほぼ重複する領域をできるだけ多く自動的に処理することです。

于 2009-07-30T19:01:32.577 に答える
11

このペーパーには、疑似コードを使用した diff3 アルゴリズムの正式な分析があります: http://www.cis.upenn.edu/~bcpierce/papers/diff3-short.pdf

「A Formal Investigation of Diff3」というタイトルで、Yahoo の Sanjeev Khanna、Keshav Kunal、および Benjamin C. Pierce によって書かれています。

于 2012-11-22T19:56:34.723 に答える
2

率直に言って、私はdiff3に依存します。これはほとんどすべてのUnixディストリビューションにあり、Windows用の.EXEをいつでもビルドしてバンドルし、目的に合わせて使用​​できるようにすることができます。

于 2009-07-30T00:47:51.927 に答える