我有一个受版本控制的项目,例如/project
,.hgignore
位于/project/.hgignore
. 它的语法似乎是正确的,但问题是对于某些用户来说这个文件完全被忽略了,而其他用户仍然会对其进行解析。
说,跑步
su -l dipsy -c 'cd /project; hg status'
显示正确的结果而忽略了正确的文件,而
su -l laalaa -c 'cd /project; hg status'
还输出/project/.hgignore
.
我已经检查过的内容:
~/.hgrc
两个用户的文件相同,. 的输出也是相同的hg showconfig
。- 两个用户都可以读取
/project/.hgignore
和写入。
我错过了什么?
(以防万一:Debian Lenny,Mercurial 1.6.3)
//对不起,如果用户名看起来很愚蠢,它们不是真实的(:
-- 添加于 2010 年 11 月 26 日 --
PS。有什么方法可以启动 hg 并在处理.hgignore
-s 上获取调试输出?hg --debug status
并且hg status --debug
不要打印任何明智的东西。
-- 添加 2010-11026 --
调试hg status
(结果各不相同):
# su -l dipsy -c 'cd /project; strace hg status 2>&1 >/dev/null | grep hgignore'
open("/project/.hgignore", O_RDONLY|O_LARGEFILE) = 4
fstatat64(4, ".hgignore", {st_mode=S_IFREG|0664, st_size=214, ...}, AT_SYMLINK_NOFOLLOW) = 0
write(1, "M .hgignore\nM foo/bar/baz"..., 4096) = 4096
# su -l laalaa -c 'cd /project; strace hg status 2>&1 >/dev/null | grep hgignore'
write(1, "M .hgignore\nM foo/bar/baz"..., 4096) = 4096
调试hg status --ignore
(结果相同):
# su -l dipsy -c 'cd /project; strace hg status --ignore 2>&1 >/dev/null | grep hgignore'
open("/project/.hgignore", O_RDONLY|O_LARGEFILE) = 3
fstatat64(3, ".hgignore", {st_mode=S_IFREG|0664, st_size=214, ...}, AT_SYMLINK_NOFOLLOW) = 0
# su -l laalaa -c 'cd /project; strace hg status --ignore 2>&1 >/dev/null | grep hgignore'
open("/project/.hgignore", O_RDONLY|O_LARGEFILE) = 3
fstatat64(3, ".hgignore", {st_mode=S_IFREG|0664, st_size=214, ...}, AT_SYMLINK_NOFOLLOW) = 0
因此,/project/.hgignore
在运行时读取并在运行时hg status --ignore
跳过hg status
。怎么回事?