Нет такого репозитория hgadmin при установке mercurial-server.

Я пытаюсь установить 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!

Кто-нибудь знает, в чем проблема?


person Vladimir Parfinenko    schedule 01.04.2010    source источник
comment
Где на сервере хранится репозиторий hgadmin?   -  person dave4420    schedule 01.04.2010
comment
Небольшое примечание: вы уверены, что ищете mercurial-server? Это не the mercurial-server (его нет), и он просто добавляет некоторые функции удаленного администрирования к существующим параметрам ssh, которые проще сделать на сервере, если у вас есть доступ к оболочке. Страница PublishingRepositories в mercurial wiki предлагает множество более простых опций, чем mercurial-server, которые, вероятно, делают то, что вы хотите. Конечно, в mercurial-server нет ничего плохого, я просто вижу, что многие люди начинают идти по этому пути, думая, что это сервер для mercurial, когда это не так.   -  person Ry4an Brase    schedule 01.04.2010
comment
Какую ОС/дистрибутив/версию вы устанавливаете и как вы пытались ее установить? Был ли Mercurial установлен до того, как вы начали?   -  person Paul Crowley    schedule 04.05.2011
comment
Какую ОС/дистрибутив/версию вы устанавливаете и как вы пытались ее установить? Был ли Mercurial установлен до того, как вы начали?   -  person Paul Crowley    schedule 04.05.2011


Ответы (3)


У меня была такая же проблема, и для меня это была проблема с установкой репозитория hgadmin. Когда я установил пакет, я получил ошибки от python о том, что пакет mercurial не был установлен. Я предполагаю, что это произошло, когда mercurial-server попытался инициализировать репозиторий hgadmin. Итак, когда я пошел проверять репозиторий hgadmin, там не было каталога .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/

person Randy Syring    schedule 21.04.2010
comment
Спасибо, спустя почти год все еще помогает. - person pestaa; 06.03.2011

Большое спасибо, Рэнди, за то, что подробно описал здесь проблему.

Я боролся с той же проблемой и нашел альтернативный подход к ее решению (без необходимости очистки и переустановки).

Вы можете инициализировать репозиторий hgadmin вручную и установить хуки, достигнув того же эффекта, что и при обычной установке. Однако вам нужно сделать это как пользователь «hg».

Процедура

Команды работали в моей среде (Ubuntu 10.04.4/Hg 1.4.3)

Сначала инициализируйте репозиторий mercurial в /var/lib/mercurial-server/repos/hgadmin :

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

Тогда единственное отличие, которое я обнаружил в нормально инициализированном репозитории hgadmin (которое я развернул на виртуальной машине для сравнения), — это перехватчики в файле .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
person Ad N    schedule 03.12.2012

Вы уверены, что ваш синтаксис команды клонирования верен? Я вижу как минимум две ошибки в нем:

  1. Вы должны поместить репо, которое вы клонируете (а не только место назначения)
  2. Так же, как и для push, вы должны использовать две косые черты перед hgadmin:

Пример FAILING (отсутствует исходный репозиторий и используется только один символ "/" перед словом "home").

 $ hg clone ssh://[email protected]/home/John/delme

Пример FAILING (отсутствует исходный репозиторий)

 $ hg clone . ssh://[email protected]/home/John/delme

Пример УСПЕШНО:

 $ hg clone . ssh://[email protected]//home/John/delme
person SyntaxT3rr0r    schedule 01.04.2010