【发布时间】:2012-06-11 11:40:29
【问题描述】:
请帮助我了解 Mercurial 与 ACL 的结合背后的机制。
我们的团队使用 Mercurial 作为版本控制系统。设置非常简单:两个开发人员(一个 linux,一个 windows),远程 repo(linux)。每次,windows 用户 W 签入修改并且 linux 用户 L 想要在之后拉取,都会显示以下错误消息(取决于更改的文件) :
pulling from ssh://user@domain.com searching for changes adding changesets transaction abort! rollback completed abort: stream ended unexpectedly (got 0 bytes, expected 4) remote: abort: Permission denied: /repopath/.hg/store/data/paper/tmp.txt.i
这是因为文件访问是由 linux 的 ACL 列表处理的。使用setfacl 命令更正ACL 权限后,一切顺利,L 能够拉取。即使 W 使用正确的权限克隆 repo,.hg 目录中的(新的/修改的)文件也具有错误的(默认)权限。 repo 的父文件夹具有正确的权限集,所以我不知道这些权限是从哪里继承的。
有人遇到过类似的问题吗?提前谢谢!
【问题讨论】: