.NET用のまともなテキスト差分/マージエンジンはありますか? [閉まっている]
質問
要件:
- 無料、できればオープンソース
- .NETマネージlangの1つで実装
Googleはこれらを見つけました:
- 汎用の再利用可能な差分 codeprojectのアルゴリズム
- C#のO(ND)差分アルゴリズム
- C#/。NETのDiff / Merge / Patchライブラリ(Joshua Tauberer作) >
編集:
アプリは使用せず、ライブラリのみにしてください。
解決
GoogleのDiff /パッチ/マッチ。 .NETから機能します。
更新、2010年10月17日: Google Diff / Patch / MergeコードはC#に移植されました。 COMコンポーネントは引き続き機能しますが、.NETから来ている場合は、.NETポートを直接使用します。
他のヒント
「Generic-Reusable Diff Algorithm in C#」」と思うCodeproject上のdiff / patch / mergeの.NET-Engineとして見つけることができます。自分でプロジェクトを作成しましたが、ほとんどのシナリオで私のニーズに合っています。アルゴリズムがパッチファイルを必要以上に大きくした場合、1つまたは2つの最悪のシナリオがあります。しかし、ほとんどの場合、私にとってはうまく機能します(サイズが> 30 MBのテキストファイル)。
現在、別のCodeproject-Projectをテストしています。 http:// www.codeproject.com/KB/applications/patch.aspx パッチを適用するためにMicrosoftのDLLを使用しているので、面白そうです。しかし、これらのDLLは管理されておらず、このプロジェクトはその一種のラッパーにすぎません。しかし、おそらくそれはあなたを助けることができます
編集:
別のプロジェクト DiffPlex が見つかりました: http://diffplex.codeplex.com/
これは、
GitSharpには、meyers diffに基づくdiffエンジンが含まれています。 Diff.Sectionsコレクションに基づいたシンプルなwpf diffビューアを実装するデモをご覧ください: http://www.eqqon.com/index.php/GitSharp#GitSharp.Demo
これまでの回答のどれも(おそらくGitSharp参照を除く)が3方向のマージを扱っていないため、最近Tony Garnock-Jonesのjavascript diff3実装を移植した人を助ける場合( synchrotron プロジェクト、Hunt and McIlroy 1976に基づく)C#へ。
これは、diffおよび3者間マージメソッドの単純な単一ファイルポートですが、標準のアルゴリズムであり、これまでのところ非常にうまく機能しています: https://gist.github.com/2633407