Mercurial によってバージョン管理されているプロジェクトがあります ( project main
)。プロジェクトは、別のプロジェクト ( ) のいくつかのファイルを、 内のファイルを指すsub
シンボリック リンクによって参照 (使用) します。のリポジトリにシンボリック リンクが追加されます。main
sub
main
問題は、Mercurial が でターゲット ファイルに加えられた変更を検出せずsub
、シンボリック リンクを 'M' (変更済み) としてマークしないことです。
この状況を次の例に示します。
初期リポジトリを作成、初期化、およびコミットします。
$ mkdir crap
$ cd crap
$ mkdir main sub
$ cd sub
$ nano sub.txt
$ hg init
$ hg add sub.txt
$ cd ../main/
$ nano main.txt
$ ln -s ../sub/sub.txt ./sub.txt
$ ls -la
total 24
drwxrwxr-x 2 ruslan ruslan 4096 Jan 15 12:51 .
drwxrwxr-x 4 ruslan ruslan 4096 Jan 15 12:48 ..
-rw-rw-r-- 1 ruslan ruslan 20 Jan 15 12:51 main.txt
lrwxrwxrwx 1 ruslan ruslan 14 Jan 15 12:51 sub.txt -> ../sub/sub.txt
$ hg init
$ hg add main.txt sub.txt
$ hg commit -m "First"
$ cd ../sub
$ hg commit -m "Sub First"
$ hg status ./sub -A
C sub/sub.txt
$ hg status ./main -A
C main/main.txt
C main/sub.txt
でターゲットを変更してコミットしsub
ます。
$ nano ./sub/sub.txt
$ hg status ./sub -A
M sub/sub.txt
$ hg commit ./sub -m "Modified"
$ hg status ./sub -A
C sub/sub.txt
のステータスはmain
、ターゲットを参照するシンボリックリンクが「M」としてマークされていないことを示しています。
$ hg status ./main -A
C main/main.txt
C main/sub.txt
コミットせずに再度変更すると、sub
「M」sub
が表示されますが、表示されませんmain
:
$ nano ./sub/sub.txt
$ hg status ./sub
M sub/sub.txt
$ hg status ./main -A
C main/main.txt
C main/sub.txt
Mercurial にシンボリックリンクのターゲットの変更を適切に検出させるにはどうすればよいですか?