5

我正在尝试安装 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!

有谁知道是什么问题?

4

3 回答 3

7

我遇到了同样的问题,对我来说这是安装 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/

于 2010-04-21T03:09:42.060 回答
2

非常感谢兰迪在这里揭露了确切的问题。

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

您可以手动初始化 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
于 2012-12-03T18:39:45.780 回答
0

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

  1. 你必须把你正在克隆的仓库(不仅仅是目的地)
  2. 就像 push 一样,你必须在 hgadmin 之前使用两个斜杠:

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

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

示例失败(缺少源代码库)

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

示例成功

 $ hg clone . ssh://John@127.0.0.1//home/John/delme
于 2010-04-01T20:21:04.457 回答