0

これは、変更の正確なタイミングがわからない並列変更状況でのバージョン管理に関連しているため、ファイルの 2 つの変更されたバージョンを同時に受け取ると想定しています。問題を単純化します。

T と U という 2 つの変更されたバージョンを持つ文字列 S があります。diff を使用して S と T の違いを確認できます。S 上の T で作られたパッチを PT と呼びましょう。Uについても同じで、PUになります。ここで、PT と PU を 1 つのパッチにマージして、安全な方法で、典型的なプログラミング ライン レベルではなく、「ワード」レベルで PT と PU の間の競合を検出できるようにしたいと考えています。

質問:

1- 2 つのパッチをマージするアルゴリズムはありますか?

2- T と U の間の競合を検出するにはどうすればよいですか?

3- 対立に対処するための共通の方針は何ですか? 私にとっての解決策の 1 つは、競合が発生した場合に、常にバージョンの 1 つ (T など) から変更を選択することです。

私が探していることを行うためのツールはありますか?

4

2 に答える 2

0

私はこれを行う実装を知りませんが、行内の違いを検出して表示するマージツールを使用することで良い助けを得ることができます。KDiff3はそのようなツールです。unsigned次の例では、と変更の両方をマージしint nます。これは、マージ出力を手動で編集することによって行われますが、ツールを使用すると、この操作が非常に簡単になります(コードの変更を理解することが唯一の難しい部分になります)。

KDiff3スクリーンショット

于 2012-05-23T10:54:52.140 に答える
0

私が考えることができる単語レベルの競合解決ツールはありません。あなたはいつも線を比較します。

ファイルの種類に合わせてカスタムドライバーを作成できます。これはgit属性を介して行われると思います。ここで、マージが非早送りマージである場合は、好きなことを行うことができます。

于 2012-05-22T21:30:46.903 に答える