Mercurial推送,中止:授权失败
Posted
技术标签:
【中文标题】Mercurial推送,中止:授权失败【英文标题】:Mercurial push, abort: authorization failed 【发布时间】:2010-10-31 02:40:07 【问题描述】:我在推送到 mercurial 存储库时遇到问题:
$ hg push
pushing to https://user:***@hg.domain.com/X_repo
searching for changes
abort: authorization failed
可以通过网络浏览器访问相同的 URL(具有相同的凭据)。另外,我在没有将 usr+pass 嵌入 URL 的情况下进行了尝试。
HTTPS 配置正确,我尝试了 Basic 和 Digest auth -- 没有运气。
拉(通过 HTTP)工作正常。
我正在使用 hgwebdir 为我的 repo 提供服务。
我还应该检查什么?
我发现了这个:http://code.google.com/p/support/issues/detail?id=2580 就我而言,这不是随机的,它每次都会发生。
我的虚拟主机配置的相关部分:
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: ...
【问题讨论】:
【参考方案1】:奇怪的是,您可以运行 hg outgoing
而不是 hg push
,因为我的理解是它们都以相同的方式进行身份验证。
很遗憾,我不是 hgweb 专家。请发送邮件至Mercurial list (mercurial@mercurial-scm.org) 和/或通过 IRC 在线 (#mercurial
irc.freenode.net
)。那里会有更多的人来帮助你。 IRC 特别好,因为这些东西更容易交互式调试。
【讨论】:
感谢您的建议。实际上我已经尝试过 IRC —— 没有运气:/ 我会尝试使用邮件列表。【参考方案2】:问题原来是 repo dir 权限。 chown www-data
解决了...
【讨论】:
别忘了你的 .hg/hgrc 的 [web] 部分也需要 allow_push $ sudo chown -R wwwrun:www /srv/www/htdocs/hg/reposfrom mercurial-scm.org/wiki/HgWebDirStepByStep 第 7 节,适合那些不太擅长 linux 的人。 对于使用 Ubuntu 的用户:sudo chown -R www-data:www-data /var/hg/repos 即使我把船主放到 'www-data' 我仍然有问题:密码:发送 [=================== ================================================== ==========>] 6/6 01终止:授权失败 要检查系统上的 apache 用户,请查看 /etc/passwd【参考方案3】:以防万一它可能对某人有所帮助-我出于未知原因遇到此错误,所有权限都正常,只需重新启动 apache 即可解决。
【讨论】:
【参考方案4】:如果有人想让它在本地机器上运行,那么
将此添加到服务器 REPO/.hg/hgrc
即可完成工作:
[web]
allow_push = *
push_ssl = false
如this site 所述。
【讨论】:
我已经测试了 allow_push = * 或 仍然给我验证失败【参考方案5】:对于那些使用 TortoiseHg 推送到 Web 服务器的用户(另一台 PC 上的另一个未经授权的用户):
在 TortoiseHg 中:File - Settings - (Either globally or just for the current repository - tabs)
然后是 Server
设置。
网络服务器
Push Requires SSL - No
Allow Push - *
这通过 UI 执行与上面lukmdo
的答案相同的操作(编辑 hgrc 文件)。
【讨论】:
【参考方案6】:这发生在我更改我的 bitbucket 密码后,然后虽然我使用 SourceTree 管理我的密码并且我在全球范围内更改了它,但是一个 repo 将我的旧密码硬编码在 REPO/.hg/hgrc
中更改了线路并且一切正常
【讨论】:
【参考方案7】:我的问题有点不同。密码更改触发了它......我有一个repo/.hgrc
和一个repo/.hg/hgrc
。不知道为什么,但这些是相互矛盾的。
作为记录,我发现的最简洁的方法是保留一个全局配置文件(在 Windows C:\Users\<user>\mercurial.ini
或 Linux /home/<user>/.hgrc
上),其中包含适用于所有存储库(配置文件、插件/扩展、存储库)的所有配置等),然后每个回购,只需使用类似的东西:
[paths]
default = https://path/to/remote/repo
# any other repo-specific config
为什么我有另一个特定于 repo 的 mercurial 配置文件,我不知道 - 现在一切都已清理并运行良好。
【讨论】:
我遇到了同样的问题:P【参考方案8】:我的解决方案! 如果您使用的是 Windows 操作系统,则需要编辑文件夹属性。读/写权限。
非常重要!! 不要忘记关闭网络服务器,编辑文件夹属性并再次打开网络服务器 tortoiseHG
【讨论】:
以上是关于Mercurial推送,中止:授权失败的主要内容,如果未能解决你的问题,请参考以下文章
Mercurial https 克隆:“中止:错误:(...)错误的版本号”
Mercurial hg 克隆错误 - “中止:错误:名称或服务未知”