Hgweb и хук группы изменений не работают - PullRequest
0 голосов
/ 26 ноября 2011

Я использую hgweb для публикации своих локальных репозиториев.

/ project_path / имя_проекта / .hg / .hgrc имеют:

[hooks]
changegroup.bitbucket  =  hg push ssh://hg@bitbucket.org/user/repo

Когда я использую hg serve , все хуки группы изменений работают нормально, но когда яЯ использую hgweb через nginx с fcgi, это не работает вообще.Мне нужны эти функции для создания резервных копий.

Ответы [ 2 ]

2 голосов
/ 27 ноября 2011

Это в основном похоже на Доверие .

Mercurial необходимо доверять файлу hgrc перед его анализом / запуском.Если ваш /project_path/project_name/.hg/.hgrc файл принадлежит вам, то когда вы запускаете hg serve с Mercurial, запущенным, как вы его проанализировали / использовали.Однако nginx работает от своего собственного пользователя, вероятно, nginx, который не доверяет файлам, принадлежащим вам, поэтому при запуске Mercurial эти файлы игнорируются (см. Примечание).

Эта доверительная ссылка Mercurial дает лучшуюобъяснение и разговор о том, как сказать «nginx доверяет X», но если это однопользовательская система или вы хотите, чтобы все доверяли вам, вы можете просто добавить блок доверия в системный глобальный файл /etc/mercurial/hgrc, говорящий, что все доверяют X.

Примечание: на самом деле он не просто игнорирует эти файлы, он помещает предупреждение в STDERR, который в apache-land вы найдете в вашем error.log, но в nginx land никто, похоже, никогда не находил эти предупреждения такЯ понятия не имею, куда их кладет nginx.

0 голосов
/ 26 ноября 2011

Полагаю, у вас возникла проблема с аутентификацией. При запуске hg serve из командной строки ваши учетные данные ssh предоставляются ssh-agent в фоновом режиме.

Однако это не работает при запуске hgweb в качестве службы, поскольку в фоновом режиме не работает ssh-agent. Если вы введете ssh-agent, у вас не будет возможности ввести пароль для вашего ключа ssh.

Bitbucket использует ключи ssh для аутентификации вас, поэтому вы не можете просто добавить свой пароль к вышеуказанной команде hg push.

Одним из возможных решений было бы не использовать bitbucket в качестве резервной копии, а использовать другой ртутный сервер, который позволяет вводить простой пароль в командной строке.

Боюсь, я не смогу вам в этом помочь.

...