2010-05-21 2 views
2

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

warning: changegroup hook exited with status -1 

HGRC выглядит следующим образом:

[ui] 
username=ADMIN 
verbose=true 

[hooks] 
changegroup = hg update >&2 

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

+0

Примечание: Мы используем ртутный на Windows, и вытягивать, используя адрес сети (\\ сервер \ репо ...), а не с помощью опции HTTP – Ezequiel

ответ

2

Он может быть связан с пользователем actually executing the hook, который может отличаться от тех, у кого есть правильные привилегии.

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

(из потока :)

From experience with Mercurial/IIS, things I'd recommend trying:

  • (a) Does running a simple non-HG command work? Permissions on cmd.exe will affect out-of-process python hooks.
  • (b) Does a simple hook like ' python -c "import sys; sys.exit(0)" ' work?
  • (c) If you make it this far, can you confirm that the process is running as the user you think it's running as, with a hook that does something like:
import win32api 
username = win32api.GetUserName() 
(write username to a file so you can read it) 
+0

Привет, нет, мы синхронизируются с помощью файловой системы, не используя http вариант. Спасибо за ваш комментарий. – Ezequiel

+0

@Ezequiel: понял. Тем не менее это выглядит как правильная проблема, связанная либо с пользователем, который выполняет крючок, либо по пути, в котором он выполняется. – VonC

+0

Согласен, это почти всегда вопрос разрешения. –

3

У меня был очень simmilar вопрос. Это, наконец, работает сейчас:

changegroup = cmd /c hg update

Смелый CMD/с приводит к cmd.exe на нерест, который будет выполнять обновление, как мы рт.ст. хотим его, но теперь значение выхода из cmd.exe будет 0.

Дополнительная информация:

setup: win 2008 server.
ртутный 1.9.3
hgwebdir с помощью простого HTTP, его внутренней сети

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

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

[web]
push_ssl = False allow_push = *

[collections]
c:\Dev\Reps = c:\Dev\Reps

[ui]
debug=true

[hooks]
changegroup = cmd /c hg update