【问题标题】:"No such repository hgadmin" while installing mercurial-server.安装 mercurial-server 时“没有这样的存储库 hgadmin”。
【发布时间】:2010-04-01 17:12:48
【问题描述】:

我正在尝试安装 mercurial-server。将我的密钥添加到keys/root 并刷新身份验证后,我尝试克隆 hgadmin-repo 但出现以下错误:

$ hg clone ssh://hg@<domain>/hgadmin
remote: mercurial-server: no such repository hgadmin
abort: no suitable response from remote hg!

有人知道是什么问题吗?

【问题讨论】:

  • hgadmin 存储库存储在服务器的哪个位置?
  • 请注意,您确定要查找“mercurial-server”吗?我不是 the mercurial-server(没有),它只是在现有的 ssh 选项中添加了一些远程管理功能,如果您有 shell 访问权限,这些功能在服务器上更容易完成。 mercurial wiki 上的 PublishingRepositories 页面提供了许多比 mercurial-server 更简单的选项,它们可能可以满足您的需求。当然,mercurial-server 并没有什么问题,我只是看到很多人开始沿着这条路走,认为“它是 mercurial 的服务器”,而实际上并非如此。
  • 您安装的是什么操作系统/发行版/版本,您是如何尝试安装的?在您开始之前安装了 mercurial 吗?
  • 您安装的是什么操作系统/发行版/版本,您是如何尝试安装的?在您开始之前安装了 mercurial 吗?

标签: mercurial mercurial-server


【解决方案1】:

我遇到了同样的问题,对我来说这是安装 hgadmin 存储库的问题。当我安装包时,我从 python 收到错误,说没有安装 mercurial 包。我假设当 mercurial-server 尝试初始化 hgadmin 存储库时发生了这种情况。所以当我去检查 hgadmin respistory 时,没有 .hg 目录:

root@myshost:/var/lib/mercurial-server/repos# cd hgadmin/
root@myshost:/var/lib/mercurial-server/repos/hgadmin# ls -a
.  ..

为了解决这个问题,我做了:

easy_install mercurial
sudo apt-get purge mercurial-server
sudo rm -rf /var/lib/mercurial-server
sudo apt-get install mercurial-server

然后继续这里的指示:

http://kurtgrandis.com/blog/2010/03/20/gitosis-for-mercurial/

【讨论】:

  • 谢谢,差不多一年后它仍然有帮助。
【解决方案2】:

非常感谢 Randy 在此处揭露确切的问题。

我遇到了同样的问题,并找到了解决它的替代方法(无需清除和重新安装)。

您可以手动初始化 hgadmin repo 并安装 hooks,达到与正常安装相同的效果。不过,您需要将其作为“hg”用户。

程序

这些命令适用于我的环境(Ubuntu 10.04.4 / Hg 1.4.3)

首先在/var/lib/mercurial-server/repos/hgadmin中初始化一个mercurial存储库

$ sudo su hg
$ cd ~/repos/hgadmin/
$ hg init

然后,我发现与正常初始化的 hgadmin 存储库(我部署在 VM 中进行比较)的唯一区别是 .hg/hgrc 文件中的挂钩。所以打开文件:

$ vim .hg/hgrc

并粘贴此确切内容:

# WARNING: when these hooks run they will entirely destroy and rewrite
# ~/.ssh/authorized_keys

[extensions]
hgext.purge =

[hooks]
changegroup.aaaab_update = hg update -C default > /dev/null
changegroup.aaaac_purge = hg purge --all > /dev/null
changegroup.refreshauth = python:mercurialserver.refreshauth.hook

【讨论】:

    【解决方案3】:

    您确定您的克隆命令语法正确吗?我看到其中至少有两个错误:

    1. 您必须将要克隆的 repo 放入(不仅仅是目标)
    2. 和push一样,hgadmin前必须加两个斜杠:

    示例 FAILING(缺少源代码库并且在 'home' 之前仅使用一个 '/')

     $ hg clone ssh://John@127.0.0.1/home/John/delme
    

    示例 FAILING(缺少源代码库)

     $ hg clone . ssh://John@127.0.0.1/home/John/delme
    

    示例成功

     $ hg clone . ssh://John@127.0.0.1//home/John/delme
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多