如何让hg在cygwin / windows上提示我的HTTP auth用户名/密码?

时间:2010-06-25 15:03:10

标签: mercurial push authentication

在家里,这完美无缺。我现在在另一台计算机上(使用cygwin)并且hg push不会提示输入用户名/密码:

user@localhost /cygdrive/d/repos/upthescala/viewprotect
$ hg push https://viewprotect.googlecode.com/hg/
pushing to https://viewprotect.googlecode.com/hg/
searching for changes
abort: http authorization required

以下是〜/ .hgrc的内容:

[http_proxy]
host=someproxy:8080

[ui]
username = My Name <myemail>

提前感谢任何建议!

注意:这似乎是一个cygwin问题。当我从Windows提示符(cmd.exe)尝试时,它按预期工作:

D:\repos\upthescala\viewprotect>hg push https://viewprotect.googlecode.com/hg/
pushing to https://viewprotect.googlecode.com/hg/
searching for changes
http authorization required
realm: Google Code Mercurial Repository
user: myemailaddress
password: *********

remote: Success.

- LES

3 个答案:

答案 0 :(得分:8)

这可能是因为使用了与Windows控制台子系统绑定的Mercurial版本。与Tortoise一起发布的二进制文件属于这一类。如果是这种情况,mercurial期望使用控制台子系统来提示输入凭据,但是从Cygwin shell运行时它找不到它。在我的情况下,安装和使用Cygwin版本的mercurial修复了问题,除了修复颜色输出。要检查您正在使用的版本,请运行'which hg'(但您可能已经知道)。

答案 1 :(得分:8)

添加安德鲁的评论:

  

安装并使用Cycurwin版本的mercurial修复了这个问题,

这也解决了我的问题,但它引起了另一个问题,花了我一些时间才弄明白。当使用Cygwin版本的hg时,在我运行hg status时,在TortoiseHG下克隆的所有文件都显示为已修改,但在我运行hg diff时没有显示任何差异。

问题是权限不匹配。在每个仓库中运行chmod 644 .* -R解决了这个问题。

答案 2 :(得分:6)

由于它是HTTP,您始终可以将用户名和密码放在URL中。这适用于使用http auth和任何浏览器的任何网站。

hg push https://myemailaddress:*********@viewprotect.googlecode.com/hg/

或者,较新的Mercurial版本可以使用auth section

顺便说一下,这是一个可怕的密码。你应该拿出比八星更好的东西。