我们所有的开发人员都可以通过ssh登录我们的登台服务器。
当他们在登台服务器上运行任何hg
命令时,它会使他们成为更新/新文件的所有者。我需要这些文件归用户/组www-data所有。
我尝试将sudoers文件编辑到此
Cmnd_Alias WWW_DATA_CMDS = /usr/bin/svn, /usr/bin/hg
%developers ALL=(www-data) NOPASSWD: WWW_DATA_CMDS
正如你所看到的,我们在服务器上也有SVN(我们正在从SVN转移到HG),这个设置适用于SVN,如果我们运行SVN命令它创建文件为www-data
如何为Mercurial工作?
答案 0 :(得分:2)
首先要明白这里没有魔法。 Mercurial始终以其运行的用户创建文件,故事结束。它不会尝试(甚至没有许可)做任何其他事情。
这意味着如果你只通过sudo运行hg,并且现有文件的权限是正确的,那么它将在这里做你想做的事。
但这也意味着如果用户在没有sudo的情况下运行hg,并且他们拥有正确的权限,他们就会搞得一团糟。 Mercurial满足于让你做任何Unix权限模型允许的事情。
有三种方法可以解决这个问题:
这最后的工作原理如下:
这将确保用户每次在项目中创建文件时,都会对组中的其他人进行读/写。