Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用户推送到mercurial存储库会导致其他用户出现http 500错误_Mercurial_Corrupt - Fatal编程技术网

用户推送到mercurial存储库会导致其他用户出现http 500错误

用户推送到mercurial存储库会导致其他用户出现http 500错误,mercurial,corrupt,Mercurial,Corrupt,我有一个windows托管的mercurial存储库,UserA、UserB和UserC有权推送到该存储库。UserA可以愉快地推/拉等…但一旦UserC推…UserA开始接收以下错误: 中止:HTTP错误500:.hg\store\data/\u web/\u mvc.\u站点地图。i:访问被拒绝 唯一的“修复”方法是对远程存储库进行核攻击并重新初始化 有人有过这类问题的经验吗 更新: 存储库位于服务器上的驱动器上,IIS位于其上。用户在本地连接。Mercurial wiki的设置非常正确。我

我有一个windows托管的mercurial存储库,UserA、UserB和UserC有权推送到该存储库。UserA可以愉快地推/拉等…但一旦UserC推…UserA开始接收以下错误:

中止:HTTP错误500:.hg\store\data/\u web/\u mvc.\u站点地图。i:访问被拒绝

唯一的“修复”方法是对远程存储库进行核攻击并重新初始化

有人有过这类问题的经验吗

更新:
存储库位于服务器上的驱动器上,IIS位于其上。用户在本地连接。Mercurial wiki的设置非常正确。

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

有几种常见的方法可以避免这种情况,所有这些都是服务器管理员的工作,而不是推送用户的工作。要么:

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

在unix环境中,使用“粘性组位”和“umask”可以轻松实现前者。在windows上,可能还有一种更简单的方法,它只在一半的时间内工作

提供有关mercurial服务器的更多详细信息。它是如何设置的。用户如何访问它…为了清楚起见,我更新了这个问题。这是一个权限问题,当C推送他添加的文件时,他没有正确的权限,这意味着web服务器无法访问这些文件。tonfa继续他的活动,将正确的答案放在评论中,这样人们就不能选择它们了。;)好吧,但是为什么呢?UserC是否需要对其本地存储库执行任何操作?UserA推送的文件似乎没有问题,UserA推送后,UserB和UserC可以很好地推送。每个人都在使用HTTP接口,所以这很奇怪,为什么它似乎不能正常工作。我所做的和似乎正在做的是将.hg及其子文件夹的所有者更改为服务器的用户组。非常感谢……我发誓通过HTTP和单个IIS用户就可以了,但显然不行。这是一个模糊的回忆,但我认为Mercurial使用.hg/store目录本身的权限作为它创建的任何新文件的权限(与*nix上的umask相反),因此,如果.hg/store最初是使用非组友好的perm创建的,那么这可能会有所不同。这也许可以解释为什么您要更正.hg子文件夹修复了一些问题。不管怎样,很高兴你现在能去。