0

我有一个由 Mercurial (project main) 控制的项目版本。该项目sub通过main指向sub. 符号链接将添加到main的存储库中。

问题是 Mercurial 没有检测到对目标文件的更改sub,没有将符号链接标记为“M”(已修改)。

情况如下例所示:

创建、初始化和提交初始 repos:

$ 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' insub但不在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 检测符号链接目标的变化?

4

2 回答 2

1

你不能。出于安全原因,Mercurial 从不遍历符号链接。

于 2015-01-15T13:42:25.557 回答
0

-s您可以通过在创建时省略参数来使用硬链接ln

我建议附加.hardlink明确并修改您ls突出显示硬链接

在 Windows 机器上,我使用 Link Shell Extension实用程序使用了相同的方法;我捐赠给了作者,你也应该这样做:)。

在此处输入图像描述

于 2018-10-17T15:20:51.760 回答