无法通过 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 存储库