私の混乱は、ここから取られた次のステートメントから生じます:
互いに競合するパッチをプルする場合(たとえば、ファイルの同じ部分を変更する場合)、Darcsは競合を検出し、リポジトリコンテンツにマークを付けます。次に、ユーザーが問題を解決できるようにします。
これは私が見ているものと矛盾しているように見えたので、darcs2.5.2を使用して次のワークフローを作成しました。
- repofooを作成します。
- fooに空でないファイルを作成し、それを記録します。
- fooをbarにクローンします。
- fooのファイルを削除し、記録します。
- バーのファイルに別の行を追加して記録します。
- fooからbarにプルし、競合通知を取得します。
これらの手順を実行darcs whatsnew
した後、私はバーで実行し、2つの「パッチプリミティブ」が表示されました。
- 「fooの空でないファイル」をすべて削除するハンクですが、追加されてバーに記録された行については言及されていません。
- ファイルを削除するrmfile。
私の質問は次のとおりです。バーに追加および記録された行についての言及がないのはなぜですか?
バーで実行するdarcs revert
と、すべてが理にかなっています。ここから抜粋したこのステートメントのように、競合するパッチの影響を受けていない「空でないファイル」が表示されます。
コマンドdarcsrevertは、競合マークを削除し、競合するパッチの前の状態に戻ります。
しかし、実行するdarcs mark-conflicts
と、プル後と同じ状態に戻ります。上記の2つの「パッチプリミティブ」があり、追加されてバーに記録された行についての言及はありません。
参考/複製のために、ここにコマンドラインからの私の完全なワークフローがあります:
$ mkdir foo
$ cd foo/
foo$ darcs initialize
foo$ touch shopping
foo$ vi shopping <-- add a couple of lines
foo$ darcs add shopping
foo$ darcs record
addfile ./shopping
Shall I record this change? (1/2) [ynW...], or ? for more options: y
hunk ./shopping 1
+cake
+pie
Shall I record this change? (2/2) [ynW...], or ? for more options: y
What is the patch name? Added shopping
Do you want to add a long comment? [yn]n
Finished recording patch 'Added shopping'
foo$ cd ..
$ darcs get foo/ bar
$ cd bar/
bar$ vi shopping <-- add another line
bar$ darcs record
hunk ./shopping 2
+beer
Shall I record this change? (1/1) [ynW...], or ? for more options: y
What is the patch name? Added beer
Do you want to add a long comment? [yn]n
Finished recording patch 'Added beer'
bar$ cd ../foo
foo$ rm shopping
foo$ darcs record
hunk ./shopping 1
-cake
-pie
Shall I record this change? (1/2) [ynW...], or ? for more options: y
rmfile ./shopping
Shall I record this change? (2/2) [ynW...], or ? for more options: y
What is the patch name? Removed shopping
Do you want to add a long comment? [yn]n
Finished recording patch 'Removed shopping'
foo$ cd ../bar
bar$ darcs pull
Pulling from "../foo"...
Mon Nov 14 19:26:44 GMT 2011 dukedave@gmail.com
* Removed shopping
Shall I pull this patch? (1/1) [ynW...], or ? for more options: y
Backing up ./shopping(-darcs-backup0)
We have conflicts in the following files:
./shopping
Finished pulling and applying.
bar$ darcs whatsnew
hunk ./shopping 1
-cake
-pie
rmfile ./shopping