vcsrepo木偶模块不使用用户参数为mercurial

我有一个服务器,依靠puppet vcsrepo来更新本地mercurial仓库中的代码基于标签。

当我更改所需的标签时,使用vcsrepo“revision”参数,vcsrepo应该在repo上执行hg pull和hg update。

这一切工作正常。

不过,我已经创build了这个服务器的一个克隆来testing其他的东西,现在当我运行木偶更新时,我得到一个错误:

Not trusting file /var/hg/repo/.hg/hgrc from untrusted user *user*, group *group* 

发生这种情况是因为puppet以root身份运行,而hgrc文件则由用户拥有

vcsrepo中的用户参数应该是这样处理的:

 vcsrepo { '/var/hg/repo': ensure => present, provider => hg, source => 'ssh://****', user => 'user', owner => 'user', group => 'group', revision => '1.12' } 

hg命令应该以用户身份运行,以便满足mercurial中的Trust要求。

但它不工作。 克隆服务器有点复制原来的位。

我明白了这一点。

木偶作为根运行。 这意味着对于使用mercurial的vcsrepo,root用户需要信任正在更新的repo中拥有.hgrc文件的用户。

为了build立这种信任,你添加

 [trusted] user = 'user' 

到/root/.hgrc

当执行mercurial时,它的外观在$ HOME / .hgrc中用于信任关系。

在我现有的服务器上,puppet代理正在用cron执行,所以cron会把$ HOME看作/root/.hgrc

在克隆的服务器上,我以交互方式运行puppet更新,已经打开了一个root shell

 sudo bash 

但是,这保留了我的$ HOMEvariables与我的初始用户具有相同的值,所以mercurial在/root/.hgrc中找不到所需的受信任信息

当我build立一个根shell

 sudo -i 

正确的$ HOMEvariables被设置并且木偶更新工作。

vcsrepo中的'user'参数是指用于validationmercurial远程服务器的用户,而不是在本地服务器上运行进程的用户。