【问题标题】:Mercurial changes the file's owner after updateMercurial 在更新后更改文件的所有者
【发布时间】:2014-03-20 16:27:35
【问题描述】:

我有一个由 mercurial 控制的 php webapp。它在 /var/www/directory/ 中。这些文件归用户和组“www-data”所有。在我进行一些更改后,这些文件将归 root.root 所有。

那是因为 hg 是由 root 运行的?这是一个远程服务器,我只有root访问权限,如何解决这个问题?我不想在每次拉取后手动和递归地在目录中运行 chown ,也是因为有些子目录不属于 www-data 。

不知道我做的对不对,试着用修改hgrc

[trusted]
users = www-data
groups = www-data

没用

【问题讨论】:

  • 你不能创建另一个用户并像那样运行 hg 吗?
  • 目的是什么?如果我使用新用户,文件将归新用户所有。还是有问题。以及如何以用户身份运行 hg?也许我不明白。请解释一下
  • 我不知道您要实现什么目标,也不知道您如何以 root 身份运行 hg。
  • 因为它是远程租用服务器,我只有 root 访问权限。因此,当我运行 hg pull 或 hg update 我是 root 时,我不希望来自 root 拥有的提交结果中的新文件,因为 apache 无法获取 root 拥有的文件,只有 www-data 或 som 其他用户这个群里面。根当然不在其中
  • 在开发环境中使用和安装 mercurial 的最佳方式是什么?

标签: php mercurial hgrc


【解决方案1】:

root 运行时由 root 创建的新文件 hg 将归 root 所有。您可以使用粘性组位来设置组,但您被困在 root 作为用户。

你可以很容易地在 repo 的 .hg/hgrc 中添加一个钩子。比如:

[hooks]
post-pull = chown -R user:www-data .hg

您说过要排除一些目录,但您也可以在挂钩中执行此操作。

【讨论】:

  • 好的,我定义了 2 个 hookw,一个用于整个树,一个用于不同的目录。但更新后,不是拉。我称它们为 post-update.whole 和 post-update.otherdir,并且将整个目录称为 .hg。谢谢
  • 啊,我没看到你在谈论工作目录文件。大多数人在以用户 X 的身份推送然后不能以用户 Y 的身份拉动时遇到这些问题,这就是 .hg 中的所有权。你是对的,如果你感兴趣的是工作文件,那么 post-update 就是你的人。
猜你喜欢
  • 1970-01-01
  • 2011-01-14
  • 2016-07-20
  • 2014-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多