Проблема с автоматическим обновлением Mercurial - PullRequest
2 голосов
/ 22 мая 2010

Мы начинаем использовать Mercurial для контроля версий.Мы настроили файл конфигурации HGRC для автоматического обновления после отправки в «центральный» репозиторий.На некоторых ПК мы получаем сообщение об ошибке:

warning: changegroup hook exited with status -1

HGRC выглядит так:

[ui] 
username=ADMIN
verbose=true

[hooks]
changegroup = hg update >&2

Позже мы выполняем обновление вручную, и все работает правильно.

Ответы [ 2 ]

3 голосов
/ 06 ноября 2011

У меня была очень похожая проблема. Теперь это наконец работает:

changegroup = cmd / c hg update

Полужирный cmd / c вызывает cmd.exe, который будет запускать обновление hg так, как мы этого хотим, но теперь значение выхода из cmd.exe будет равно 0.

Более длинная история:

setup: win 2008 server.
Mercurial 1.9.3
hgwebdir через обычный http, его внутренняя сеть

ошибка: моя ошибка была, к счастью, не -1 , как в вашем случае, но
"предупреждение: перехват группы изменений со статусом 1 "
В любом случае обновление не было выполнено.

Я обнаружил, что могу поставить хуки либо в .hgrc, либо в hgweb.config, проблема была одна и та же здесь или там. Наконец, я поместил его в hgweb.config, как показано ниже, так что все репозитории имеют автоматическую фиксацию, что намного лучше, чем постоянно иметь эту свободную ветку. Основная причина, по которой я хотел выполнить автоматическую фиксацию, заключается в том, что в репозиториях на сервере vcs & build теперь установлена ​​последняя версия, что часто упрощает задачи администратора.

[web]
push_ssl = False allow_push = *

[коллекции]
c: \ Dev \ Reps = c: \ Dev \ Reps

[ui]
debug = true

[hooks]
changegroup = cmd / c hg update

2 голосов
/ 22 мая 2010

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

Есть ли у вас веб-сервер IIS, управляющий вашими репозиториями Mercurial?

(из потока:)

Из опыта работы с Mercurial / IIS, я бы порекомендовал попробовать:

  • (a) Работает ли выполнение простой не-HG команды? Разрешения на cmd.exe будут влияют на внешние обработчики Python.
  • (b) Работает ли простой хук типа 'python -c "import sys; sys.exit(0)"'?
  • (c) Если вы зайдете так далеко, можете ли вы подтвердить, что процесс выполняется как пользователь, который, как вы думаете, работает как с хуком, который делает что-то вроде:
import win32api
username = win32api.GetUserName()
(write username to a file so you can read it)
...