2010-05-21 7 views
2

Nous commençons à utiliser Mercurial pour le contrôle à la source. Nous avons configuré le fichier de configuration de HGRC pour faire une mise à jour automatique après avoir poussé vers le référentiel "central". Avec certains PC nous obtenons ce msg d'erreur:Problème de mise à jour automatique Mercurial

warning: changegroup hook exited with status -1 

hgrc ressemble à ceci:

[ui] 
username=ADMIN 
verbose=true 

[hooks] 
changegroup = hg update >&2 

Plus tard, nous effectuons la mise à jour manuellement et tout fonctionne bien.

+0

Note: Nous utilisons mercurial sous Windows et en tirant en utilisant l'adresse réseau (\\ serveur \ repo ...), ne pas utiliser l'option HTTP – Ezequiel

Répondre

2

Il peut être associé à l'utilisateur actually executing the hook, qui n'est peut-être pas celui qui a les privilèges corrects.

Avez-vous un serveur Web IIS gérant vos dépôts Mercurial?

(du fil :)

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

Salut, non, nous synchronisation en utilisant le système de fichiers, ne pas utiliser la option http. Merci pour votre commentaire. – Ezequiel

+0

@Ezequiel: compris. Pourtant, cela ressemble à un problème, dû soit à l'utilisateur qui exécute le hook, soit au chemin dans lequel il est exécuté. – VonC

+0

D'accord, c'est presque toujours un problème de permission. –

3

J'ai eu une question très simmilar. Cela fonctionne enfin maintenant:

changegroup = cmd /c hg update

cmd/c gras provoque cmd.exe pour se reproduire, qui exécutera la mise à jour de hg comme nous le voulons, mais maintenant la valeur de sortie de cmd.exe sera 0.

Plus longue histoire:

mise en place: win 2008 server.
Mercurial 1.9.3
hgwebdir via plaine http, son réseau interne

erreur: mon erreur était plaisamment pas le -1 comme dans votre cas, mais
« avertissement: crochet changegroup sorti avec le statut "
Quoi qu'il en soit, la mise à jour n'a pas été effectuée.

J'ai découvert que je peux mettre les crochets dans .hgrc ou dans hgweb.config le problème était le même ici ou là. Je l'ai finalement mis dans hgweb.config comme ci-dessous, donc tous les dépôts sont auto-validés, ce qui est bien mieux que d'avoir cette branche lâche tout le temps. La principale raison pour laquelle je voulais la validation automatique est que les respositories sur le serveur de build vcs & maintiennent maintenant la dernière version qui rend les tâches d'administration souvent plus simples.

[web]
push_ssl = False allow_push = *

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

[ui]
debug=true

[hooks]
changegroup = cmd /c hg update

Questions connexes