我有一个由Mercurial控制的项目版本(项目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检测更改'目标
答案 0 :(得分:1)
你不能。对于security reasons,Mercurial永远不会遍历符号链接。
答案 1 :(得分:0)
使用-s
创建时,可以通过省略ln
参数来使用硬链接。
我建议附加.hardlink
以便明确,并将ls
修改为highlight hardlinks。
在Windows机器上,我使用了相同的方法 Link Shell Extension实用程序;我捐赠给作者,您应该这样做:)。