代码之家  ›  专栏  ›  技术社区  ›  Webjedi

按用户推送到Mercurial存储库会导致其他用户出现HTTP 500错误

  •  2
  • Webjedi  · 技术社区  · 15 年前

    我有一个Windows托管的Mercurial存储库,用户A、用户B和用户C有权将其推送到。用户A可以很高兴地推/拉等…但是一旦用户C推…用户A开始收到以下错误:

    中止:HTTP错误500:.hg\store\data/\u web/\u mvc.\u sitemap.i:访问被拒绝

    唯一的“修复”是对远程存储库进行核弹和重新初始化。

    有没有人对这类问题有经验?

    更新: 存储库位于服务器上的驱动器上,IIS位于该驱动器的顶部。用户在本地连接。安装程序在Mercurial wiki中非常正确。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Ry4an Brase    15 年前

    我把Tonfa的答案写在这里,再加一点信息。这是完全正常的,实际上就是文件系统的工作方式。当您的用户使用直接磁盘访问进行推送时,他们正在创建属于自己的新文件。除非采取措施确保其拥有的文件也可由其合作者写入,否则随后的推动者(以及取决于您默认权限的推动者)将被告知他们无法访问新创建的文件。

    有几种一般的方法可以避免这种情况 所有这些都是服务器管理员的工作,而不是推送用户的工作 . 或者:

    • 更改权限,使所有新文件自动添加为允许所有合作者读/写访问的权限
    • 使每个人都只使用HTTP接口进行推/拉操作,这样所有读/写操作都由同一(IIS)用户完成。

    在Unix环境中,前者使用“粘性组位”和“umask”很容易实现。在Windows上,可能还有一种更简单的方法,只工作了一半时间。;)

    推荐文章