2

数日前に Darcs をインストールしましたが、疑問があります。私は唯一のプログラマーであり、通常はアプリケーションの 2 つまたは 3 つのインスタンスに取り組み、新しい機能を作成しています。このインスタンスが同じソース コード ファイルを変更するため、問題が発生したため、それらを終了してメイン リポジトリに送信すると競合が発生します。これに対処する方法はありますか?メイン リポジトリにプッシュするときに、競合することなく複数のインスタンスに同じファイルを書き込むことはできますか? ありがとう

4

1 に答える 1

5

まず第一に、ファイルのさまざまな場所で変更が発生した場合、通常、マージ時に競合は発生しません。2 つのパッチが競合することなくマージできる場合、1 つはそれらが交換されていると言います。あなたの場合、ファイルの同じ部分を 2 つの異なるブランチで変更したことがあります。この場合、darcs は競合を起こす 2 番目のパッチを「プッシュ」することを許可しません。

このような競合を解決するには 2 つの方法がありますが、両方のパッチをローカルでマージして、作業リポジトリで競合を取得する必要があります。これを行うには、メイン リポジトリからパッチを取得するだけです。次に、問題のあるファイルを編集して競合を解決する必要があります。

最初の方法はシンプルで好ましい解決策です。まだメイン リポジトリにないパッチを「修正記録」する必要があります (「darcs amend-record」コマンドの使用法を参照してください)。

もう 1 つの解決策は、「darcs レコード」を呼び出して解決パッチを記録し、競合するパッチと解決パッチの両方をプッシュすることです。この解決策は履歴を複雑にする傾向があり、後の操作が長くなる可能性があります。ただし、ブランチが大量に分散されている場合、このソリューションが必要になります。

于 2009-05-12T11:53:14.647 に答える