我在推送到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: ...
答案 0 :(得分:52)
答案 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/.hgrc
和repo/.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)