无法通过 http 克隆 mercurial (hg) 存储库

Posted

技术标签:

【中文标题】无法通过 http 克隆 mercurial (hg) 存储库【英文标题】:Can not clone mercurial (hg) repository via http 【发布时间】:2010-10-23 07:59:35 【问题描述】:

我无法通过 http 克隆我的存储库:

abort: 'http://MYREPO' 似乎不是 hg 存储库!

首先,我通过 hg init MYREPO 创建了一个新的 repo,然后添加了一些文件并提交。

我的 repo 的目录受密码保护,但没有任何问题的迹象,我尝试了两种克隆方法: (在我的本地机器上)

hg 克隆http://MYREPOmy_repo

hg 克隆http://user:password@MYREPOmy_repo

repo dir的权限为:drwxrwxr-x

我可以毫无问题地在我的远程机器上克隆这个存储库(同一个存储库)。

可能有什么问题?

【问题讨论】:

【参考方案1】:

奇怪的是,使用 ssh 进行克隆需要一个不直观的额外正斜杠。

这适用于我在 ssh 在端口 43211 上运行的主机上

hg clone ssh://example.com:43211//repos/myRepo ./myRepo

端口号后面的双斜杠有效,但那里的单斜杠导致“.hg not found”错误

【讨论】:

hg help urls 用一个斜线表示您可以访问您的主页,用两个表示您的根目录。【参考方案2】:

更新:

您似乎对存储库和主机名感到困惑

如果运行“hg serve”,“hg clone http://USER@HOST:8000”,其中主机可以是您机器的 IP 或主机名(在 linux 上键入“主机名”或尝试“ping localhost”)。您可以通过将 --port #### 传递给 hg serve 来将默认端口从 8000 更改。

如果您想通过 ssh 执行此操作,请“hg clone ssh://USER@HOST//PATH/TO/YOUR/REPOSITORY”。假设您在主目录中创建了一个名为 MYREPO 的存储库,那么您将执行以下操作:“hg clone ssh://USER@HOST/~/MYREPO”

你只能通过 http 克隆你的 repo 是通过 http 为 repo 提供服务的东西。 Mercurial 为您提供了一个内置的 http 服务器。在您的存储库中运行“hg serve”,然后尝试从另一个位置(或另一个命令外壳)克隆它。如果你只想要一个本地克隆,你不需要使用http(“hg clone”)。

另外,请尝试“hg help clone”和“hg help serve”了解详情。

【讨论】:

【参考方案3】:

啊... .htaccess 配置需要小心。就我而言,我需要将“hgwebdir.cgi”添加到克隆路径中......不过感谢您的回答!

SSH 似乎合乎逻辑,但不知何故,我无法与本地用户以外的用户一起使用它:

hg 克隆 ssh://MY_REMOTE_USER@MYREPO 远程:中止:这里没有 Mercurial 存储库(未找到.hg)!

【讨论】:

【参考方案4】:

besszero 是对的,但是如果您仍然要使用用户名和密码,为什么不使用 SSH 进行克隆呢?

hg clone ssh://machine_ip//your/repo/location your_repo

如果您不想为 mercurial 的 http 服务器打开另一个端口并且不需要 hgweb 功能,也更安全,流量也是加密的。唯一的缺点是您必须登录才能结帐,但 HTTP 不能用于推回更改,至少在我的经验中不是。

【讨论】:

以上是关于无法通过 http 克隆 mercurial (hg) 存储库的主要内容,如果未能解决你的问题,请参考以下文章

使用 Apache 和 Windows 通过 HTTP 推送我的 Mercurial 存储库

两个 Mercurial 回购。在远程机器上——一个可以通过 ssh 克隆;另一个,不是

来自分支的 Mercurial 克隆

如何从 Mercurial 克隆中删除工作副本?

Mercurial 中止:索引 ... 已损坏

从 C# 克隆 Mercurial 存储库?