2011-01-05 2 views
2

J'utilise Mercurial SCM sur un réseau local en utilisant un dossier partagé normal au lieu de HTTP et je n'arrive pas à faire fonctionner le hook de mise à jour automatique.Mercurial changeset hook existe avec l'état -1

J'ai entré ce crochet comme detailed in the FAQ. Cela installe le crochet, mais quand je pousse quelque chose au dépôt distant, je reçois une erreur:

added 1 changesets with 1 changes to 1 files 
running hook changegroup: hg update >&2 
warning: changegroup hook exited with status -1 

Il est another stackoverflow question semblable à cela, mais il ne propose aucune solution autre que ce peut être une erreur d'autorisation quelque part.

Quelqu'un d'autre a-t-il eu ce problème et quelqu'un d'autre peut-il nous éclairer sur ce point ou me dire où commencer? Merci.

+0

Si vous êtes sur windows alors '> & 2' ne fonctionnera pas pour vous, c'est un shell-isme de bash. –

+0

@ Ry4an: Comme décrit dans http://support.microsoft.com/kb/110930, il est également possible pour Windows. –

+0

Je me souviens de nombreux utilisateurs de Windows ayant à supprimer cela pour le faire fonctionner int il passé, mais peut-être qu'ils avaient des versions moins capables de command.exe? Ou est-ce que mercurial invoque le hook sans l'exécuter à travers ce que redirige cette sortie? Je n'ai pas de système Windows sur lequel tester, mais j'ai vu des gens de Windows qui ont dû enlever ça pour faire fonctionner cette astuce particulière. –

Répondre

3

Est-ce que hg dans votre recherche standard PATH?

Remplacez votre configuration .hgrc par un script personnalisé, par ex.

[hooks] 
changegroup = /var/tmp/myscript.sh 

[ui] 
debug = true 

(unix) Dans quelque chose /var/tmp/myscript.sh d'écriture comme ceci:

#!/bin/sh 
set -e 
echo ---------- >>/tmp/myscript.log 
set >>/tmp/myscript.log 
echo --- >>/tmp/myscript.log 
pwd >>/tmp/myscript.log 
hg update >>/tmp/myscript.log 2>&1 

(unix) Ne pas oublier de marquer comme exécutable: chmod a+x /var/tmp/myscript.sh

(fenêtres) Le fichier batch correspondant myscript.bat est :

@echo off 
echo ------ >>%TEMP%\myscript.log 
set >>%TEMP%\myscript.log 
echo --- >>%TEMP%\myscript.log 
cd >>%TEMP%\myscript.log 
hg update >>%TEMP%\myscript.log 2>&1 

(fenêtres) De cou rse, la ligne au .hgrc est changegroup = \your\directory\myscript.bat. Exécutez la commande hg push pour reproduire le problème.

Vérifiez le contenu du fichier /tmp/myscript.log.

+0

Malheureusement j'utilise Windows. –

+0

Essayez le script __myscript.bat__. La sortie va à __% TEMP% __. –

Questions connexes