Mercurial の copy コマンド

Mercurial の copy の動作、複製ファイルへの自動的な変更反映について確認します。

orig リポジトリを作成し、file を追加します。

$ hg init orig
$ cd orig
$ echo "This is a file" > file
$ hg add
$ hg ci -m "add a file"
$ cat file
This is a file

orig リポジトリをクローンして fork リポジトリを作成します。

$ cd ..
$ hg clone orig fork

fork リポジトリで file をコピーして copy-file を追加します。

$ cd fork
$ hg copy file copy-file
$ hg ci -m "add a copy file"
$ cat copy-file
This is a file

orig リポジトリの file に新しい行を追加します。

$ cd ../orig
$ echo "This is a new line" >> file
$ hg ci -m "add a new line"
$ cat file
This is a file
This is a new line

fork リポジトリから orig リポジトリを pull します。

$ cd ../fork
$ hg pull ../orig 
../orig から取り込み中
変更点を探索中
チェンジセットを追加中
マニフェストを追加中
ファイルの変更を追加中
1 のチェンジセット(1 の変更を 1 ファイルに適用)を追加(+1個のヘッド)
(ヘッド一覧表示は 'hg heads'、マージ実施は 'hg merge')

マージします。

$ hg merge
copy-file と file を copy-file にマージ中
ファイル状態: 更新数 1、マージ数 1、削除数 0、衝突未解決数 0
(マージ結果の commit を忘れずに)
$ hg ci -m "merge"

file への変更は、コピー先の copy-file にも自動的に反映されました。

$ cat file 
This is a file
This is a new line
$ cat copy-file 
This is a file
This is a new line