Mercurial推,中止:授权失败

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

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

通过Web浏览器可以访问相同的URL(具有相同的凭据)。 另外,我试了一下,没有将usr + passembedded到URL中。

HTTPS正确configuration,我尝试了基本和摘要authentication – 没有运气。

拉(通过HTTP)工作正常。

我使用hgwebdir服务我的回购。

我还应该检查什么?

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

我的虚拟主机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 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: ... 

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

 [web] allow_push = * push_ssl = false 

如本网站所述 。

问题原来是回购目录权限。 chown www-data解决了它…

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

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

 Push Requires SSL - No Allow Push - * 

这和lukmdo在上面的回答(通过编辑hgrc文件)通过UI完成了相同的事情。

奇怪的是,你可以运行hg outgoing而不是hg push因为我的理解是它们都以相同的方式validation。

不幸的是,我不是一个hweweb专家。 请邮寄到Mercurial列表 (mercurial@mercurial-scm.org)和/或上网IRC( irc.freenode.net #mercurial )。 将有更多的人来帮助你。 IRC特别好,因为这些事情更容易交互debugging。

以防万一它可能帮助别人 – 我遇到这个错误原因不明,所有权限都可以,只要重新启动Apache解决了它。

这发生在我改变了我的bitbucket密码后,然后,虽然我用SourceTree来pipe理我的密码,我改变它全球,一个回购然而我的旧密码在REPO/.hg/hgrc硬编码改变了行,所有的作品

我的问题有点不同。 密码更改触发它…而且我有一个repo/.hgrc和一个repo/.hg/hgrc 。 不知道为什么,但这些是冲突的。

为了logging,我发现的最简洁的方法是保留全局configuration文件(在Windows C:\Users\<user>\mercurial.ini或Linux /home/<user>/.hgrc )适用于所有的存储库(configuration文件,插件/扩展,回购等),然后每个回购,只是使用像这样的东西:

 [paths] default = https://path/to/remote/repo # any other repo-specific config 

为什么我有另一个特定于repo的mercurialconfiguration文件,我不知道 – 现在一切都清理干净了,并且工作得很好。