2008-11-20 6 views
2

J'essaie d'implémenter quelques hooks, à la fois pré et post-fail cependant. Je reçois le même message d'erreur pour les deux lorsque je tente de commettre:Commit Hook Failure

 
'*-commit' hook failed (did not exit cleanly: apr_exit_why_e was 2, exitcode was 
-1073741515). with no output. 

exitCode -1073741515 semble être une position bizarre et un peu rapide de google-fu m'a fait ceci:

Traitement non en tant que DWORD hexadécimal, le code d'erreur que vous voyez est 0xC0000135. Ceci est Sev = 11, C = 0, R = 0, Facility = 0, Code = 0x0135.

La valeur 0xc0000135 peut être trouvée dans ntstatus.h avec la définition suivante

// 
// MessageId: STATUS_DLL_NOT_FOUND 
// 
// MessageText: 
// 
// {Unable To Locate Component} 
// This application has failed to start because %hs was not found. 
// Re-installing the application may fix this problem. 
// 
#define STATUS_DLL_NOT_FOUND    ((NTSTATUS)0xC0000135L) 

Ok, dll pas trouvé, ne devrait pas avoir raison trop difficile? J'ai une VM avec svn dessus qui est paisible avec ces hooks. Je lance donc Filemon.exe et Depends.exe sur les deux machines.

Je suis toujours en train de fouiller dans les logs de fichiers pour les deux serveurs, et dépend ne me donne pas de problèmes uniques avec n'importe quel exécutable que je peux penser être touché par un crochet de validation.

J'ai décidé de jeter un coup d'œil dans les journaux des événements, et Oh Boy! Le hook 'pré-commit' a échoué (ne s'est pas terminé proprement: apr_exit_why_e était 2, le code de sortie était -1073741515)

sans sortie. [409, # 165001]

Plus d'informations, ce [409, # 165001] est partout sur google, mais je ne trouve pas vraiment quelque chose d'utile.

Le hook appelle explicitement un exécutable avec trois paramètres.

C: \ SubversionNotify \ SubversionNotify.exe% 1% 2 -pre

J'ai même essayé d'utiliser des variables aussi bien.

SET REPOS=%1 
SET REV=%2 
C:\SubversionNotify\SubversionNotify.exe %REPOS% %REV% -pre 

Regarder dans les journaux de FileMon me montre qu'il ne fait jamais à SubversionNotify.exe

Il devient au point où je ne peux pas vraiment passer beaucoup plus de temps à essayer de mettre en œuvre cela, me aider SO , tu es mon seul espoir.

Spécifications serveur:

Windows XP, en cours d'exécution VisualSVN Server, dernière version.

Edit: Il semble que SubversionNotify jette l'exception, de retour à Depends.exe vérifier pour voir ce que dll échoue.

erreur est la suivante:

L'application n'a pas réussi à initialiser correctement (0xc0000135).

Que 0xC0000135 a été vu plus tôt, dll chasse ahoy!

Répondre

1

Je pensais pouvoir partager la solution ici, car j'en ai rigolé.

La SubversionNotify a été écrite dans .NET.
Le .NET Framework n'était pas installé sur le serveur.
La machine virtuelle l'a fait.

Je porte un bonnet de cancre maintenant.

3

Normalement, le problème avec les hooks de commit est qu'il n'y a ABSOLUMENT aucun environnement (donc pas de chemin), donc toutes les références doivent être douloureusement explicites. Habituellement, je finis par créer un petit fichier batch qui change de répertoire dans le bon répertoire et exécute la commande.

Edit:

CHANGEMENT DE RÉPERTOIRE À TRY C: \ SubversionNotify

Peut-être que vous manquez une dll d'exécution qui est nécessaire pour exécuter le programme. Rappel: Il n'y a PAS de chemin. Vous pouvez simuler ceci en définissant le chemin de RIEN dans une fenêtre de ligne de commande. définir PATH =.

Vérifiez que les commandes simples telles que le bloc-notes ne fonctionnent pas. Votre exe fonctionne-t-il alors? Découvrez où sont les DLL manquantes et créez un chemin au début du fichier batch.

+0

Le hook appelle explicitement un exécutable avec trois paramètres. C: \ SubversionNotify \ SubversionNotify.exe% 1% 2 -pre La question a été modifiée pour refléter cela. – Slipfish

+0

La modification du répertoire en C :: \ SubversionNotify m'affecte: 'Commit bloqué par le crochet de pré-validation (code de sortie 1) avec la sortie: Le nom du fichier, le nom du répertoire ou la syntaxe de l'étiquette de volume est incorrect – Slipfish

+0

SubversionNotify lance en fait l'exception , manquant une DLL, juste besoin de savoir ce que l'un. Heureusement, j'ai une VM qui semble fonctionner avec SubversionNotify. Comparez et contrastez le temps. Merci pour votre aide! – Slipfish

0

Merci d'avoir posté votre réponse. Si tu ne l'avais pas fait, j'aurais passé beaucoup plus de temps à essayer de le faire descendre et de me sentir encore plus stupide que maintenant. Juste soufflé une boîte et fait une installation de VisualSVN et SubversionNotify et ne pouvait pas comprendre pourquoi cela ne fonctionnait pas.

Questions connexes