【发布时间】:2010-11-03 19:31:49
【问题描述】:
远程更新 Mercurial 存储库时,我收到来自推送后远程服务器上正在运行的 hg update 命令的以下错误。我在网上四处寻找一些帮助,但是没有找到任何有用的东西。在这一点上,我希望对导致此问题的原因有一些想法和/或见解。
错误就在下面。它发生在推送两个变更集时。一个变更集包括一个不相关的 index.html 文件更改。另一个变更集是一个合并,其中包括对 index.html 的更改以及两个图像文件的重命名。
levinaris@server01:/home/web/repository$ hg push 推送到 ssh://10.10.1.12//home/web/repository 搜索更改远程:添加更改集 远程:添加清单 远程:添加文件更改 远程:添加了 2 个变更集,其中 1 个更改为 1 个文件 远程:中止:不允许操作:/home/web/repository/html/images/image.gif 远程:警告:更改组挂钩以状态 255 退出
其他细节:
两个图像的大小都是 10385 字节。 (是的,这个错误发生在我有的两张图片上)
在尝试将存储库拉入 Windows PC 时,由于大小写冲突,这两个映像在已推送的变更集中和
hg updated 中更改了名称。-
目标服务器在/etc/mercurial/hgrc中有如下钩子:
[钩子] 更改组 = hg 更新
-
作为一种变通方法,我执行了以下操作:
- 已删除 image.gif。
- 删除了另一个产生错误的图像文件。
- 跑
hg update- 成功! - 跑
hg revert html/image/image.gif - 跑
hg revert html/image/otherimage.gif
此时,我正试图更好地了解此问题的原因,以便确保在我的环境中实现可靠、易于使用的实施。非常感谢您的帮助!
在钩子中使用hg --debug update后,我收到了这个输出:
其他权限信息:
2 个变更集中的所有 3 个文件都拥有 webuser:dev user:group 的 775 权限。
-
我的全局 hgrc 文件的网络用户受信任
[信任] 用户 = 网络用户
【问题讨论】:
-
可能有问题的文件存在权限问题?
-
基于调试输出,我不得不同意。我附加了有关服务器权限的详细信息。请让我知道您对如何解决此权限问题的想法。
-
此评论显示了一些混乱“2 个变更集中的所有 3 个文件对 webuser:dev user:group 具有 775 权限”。变更集中的文件没有文件权限(执行除外)或用户或组——这些元数据不被 mercurial 跟踪,因此它们不是变更集中文件的一部分。磁盘上的文件,无论是 .hg 还是工作目录中的文件,都将拥有所有权和权限,仅取决于谁在运行编写它们的 mercurial 命令。在您的示例中,这是“levinaris”,而不是网络用户。
-
这是有道理的。我指的是文件的权限,因为它们出现在 linux 服务器的文件系统上。当它声明“更新权限-> e”时,调试输出指的是什么?
-
(续)如果 levinaris 不是超级用户,该用户将无法创建 webuser:dev 文件或 chmod 文件。但是,您可以使用粘性组位将任何新文件上的组设置为“dev”,如果您的 umask 在 7775 创建内容,这可能就足够了。
标签: mercurial permissions