Mercurial push,abort:授权失败

时间:2009-06-03 19:40:24

标签: apache mercurial https apache2 repository

我在推送到mercurial存储库时遇到了问题:

$ hg push
pushing to https://user:***@hg.domain.com/X_repo
searching for changes
abort: authorization failed

可以通过Web浏览器访问相同的URL(具有相同的凭据)。另外,我尝试了它而没有将usr + pass嵌入到URL中。

HTTPS已正确配置,我尝试了基本和摘要身份验证 - 没有运气。

拉(通过HTTP)工作正常。

我正在使用hgwebdir来服务我的回购。

我还应该检查什么?

我发现了这个:http://code.google.com/p/support/issues/detail?id=2580 在我的情况下,它不是随机的,它每次都会发生。

我的vhost conf的相关部分:

  WSGIScriptAlias  /  /home/(...)/hgwebdir.wsgi

  <Directory /home/(...)>
    AuthType Basic
    AuthUserFile /(...)/basic-password
    AuthName (...)
    Require valid-user

    Order deny,allow
    Allow from all
  </Directory>

$ hg -v
Mercurial Distributed SCM (version 1.0.2)

奇怪的是,hg传出工作正常:

$ hg outgoing
comparing with https://hg.domain.com/X_repo
http authorization required
realm: ...
user: ...
password: 
searching for changes
changeset:   64:...
tag:         tip
user:        ...
date:        ...
summary:     ...

8 个答案:

答案 0 :(得分:52)

如果有人想让它在本地机器上运行那么 将此添加到服务器REPO/.hg/hgrc将完成工作:

[web]
allow_push = *
push_ssl = false

this site所述。

答案 1 :(得分:20)

问题原来是repo dir权限。 chown www-data解决了它......

答案 2 :(得分:3)

奇怪,您可以运行hg outgoing但不能运行hg push,因为我的理解是它们都以相同的方式进行身份验证。

不幸的是,我不是一名hgweb专家。请发送邮件至Mercurial list(mercurial@mercurial-scm.org)和/或联系IRC(#mercurial irc.freenode.net)。会有更多的人来帮助你。 IRC特别好,因为这些东西更容易交互式调试。

答案 3 :(得分:3)

对于那些使用TortoiseHg推送到网络服务器(另一台PC上另一个未经授权的用户)的人:

在TortoiseHg中:File - Settings - (Either globally or just for the current repository - tabs)然后是Server设置。 Web服务器

Push Requires SSL - No
Allow Push - *

这通过UI做同样的事情,就像lukmdo上面的回答一样(编辑hgrc文件)。

答案 4 :(得分:1)

以防它可能对某人有所帮助 - 我出于未知原因遇到了这个错误,所有权限都没问题,只是重启apache解决了它。

答案 5 :(得分:0)

在更改了我的bitbucket密码之后发生了这种情况,然后虽然我使用SourceTree来管理我的密码并且我将其更改为全球,但是我的旧密码在REPO/.hg/hgrc中使用硬编码更改了行并且所有工作再次

答案 6 :(得分:0)

我的问题有点不同。密码更改触发了它...我有repo/.hgrcrepo/.hg/hgrc。不知道为什么,但这些是相互矛盾的。

对于记录,我发现最干净的方法是保留一个全局配置文件(在Windows C:\Users\<user>\mercurial.ini或Linux /home/<user>/.hgrc上),其中包含适用于所有存储库的所有配置(配置文件,插件) / extensions,repos等),然后每个repo,只需使用类似的东西:

[paths]  
default = https://path/to/remote/repo

# any other repo-specific config

为什么我有另一个特定于repo的mercurial配置文件,我不知道 - 现在所有东西都被清理干净并且运行良好。

答案 7 :(得分:0)

我的解决方案! 如果您使用的是Windows操作系统,则需要编辑文件夹属性。读/写权限。

enter image description here

非常重要!! 不要忘记关闭Web服务器,编辑文件夹属性,然后再次打开Web服务器tortoiseHG