svn: E165001: Commit blocked by pre-commit hook (exit code 255) with no output. Wie kann das gelöst werden?
Ich versuche zu konfigurieren svn mit Phabricator. Alles scheint zu funktionieren so weit, außer für die Begehung verpasst. Wenn ich versuche zu Begehen-code, bekomme ich die folgende Fehlermeldung:
svn: E165001: Commit blocked by pre-commit hook (exit code 255) with no output.
Nur klar zu sein, die betreffende Fehlermeldung wird ausgegeben, durch das client-Programm svn. Es scheint gesendet zu werden, von svnserve wenn es auf verschiedene Themen, wie z.B. nicht in der Lage zu führen Sie die Haken aus irgendeinem Grund. Es muss nicht zur Verfügung gestellt werden, indem der Haken.
Wenn ich das lösche ist der pre-commit-hook, die commits durchgehen wie erwartet.
Für Testzwecke habe ich einen extrem einfachen Haken, der aussieht wie dieser:
#!/bin/sh
echo "testing" >&2
exit 1
Bekomme ich die gleiche Fehlermeldung bei Verwendung dieser Haken als gut. Sollte dies der Fall sein, gibt es nicht viel Sinn zu versuchen zu lösen, für die ein komplizierteres Skript, bis diese getroffen werden, um zu arbeiten. Es könnte sehr gut sein, dass durch die Lösung für dieses Skript, das original wird so gut funktionieren. Ich habe Tests mit diesem Skript und alle, die ich gepostet haben in dieser Frage gilt auch für dieses Skript. Im Grunde, an diesem Punkt in der Zeit, das Skript, das ich vorgestellt habe, ist wirklich das script, das ich versuche, zu arbeiten.
Habe ich deaktiviert, die Phabricator-daemons, da sonst der pre-commit-Skript wird überschrieben durch Phabricator.
Den folgenden ist einigen Informationen, die ich denke, kann hilfreich sein bei der Lösung dieses, basierend auf dem, was ich gesehen habe geschrieben über diese Fehlermeldung bisher:
- Das repository ist im Besitz von phd, der Benutzer, der ausgeführt wird svnserve.
- Pre-commit-hook gesetzt ist, um lauffähig zu sein.
foven@phabricator:~$ sudo ls -la /var/repo/SVN/hooks/
total 60
drwxr-xr-x. 3 phd phd 4096 Nov 18 13:46 .
drwxr-xr-x. 6 phd phd 4096 Nov 18 11:27 ..
-rwxr-xr-x. 1 phd phd 2062 Oct 27 10:17 post-commit.tmpl
-rwxr-xr-x. 1 phd phd 1638 Oct 27 10:17 post-lock.tmpl
-rwxr-xr-x. 1 phd phd 2289 Oct 27 10:17 post-revprop-change.tmpl
-rwxr-xr-x. 1 phd phd 1567 Oct 27 10:17 post-unlock.tmpl
-rwxr-xr-x 1 phd phd 37 Nov 18 14:39 pre-commit
drwxr-xr-x. 2 phd phd 19 Nov 17 17:05 pre-commit-phabricator.d
-rwxr-xr-x. 1 phd phd 3426 Nov 12 15:59 pre-commit.tmpl
-rwxr-xr-x. 1 phd phd 2434 Oct 27 10:17 pre-lock.tmpl
-rwxr-xr-x. 1 phd phd 2786 Oct 27 10:17 pre-revprop-change.tmpl
-rwxr-xr-x. 1 phd phd 2122 Oct 27 10:17 pre-unlock.tmpl
-rwxr-xr-x. 1 phd phd 3163 Oct 27 10:17 start-commit.tmpl
- SELinux ist deaktiviert/auf permissive:
foven@phabricator:~$ sudo getenforce
Disabled
- Ich habe dos2unix auf der pre-commit-hook-Datei:
foven@phabricator:~$ sudo dos2unix /var/repo/SVN/hooks/pre-commit
dos2unix: converting file /var/repo/SVN/hooks/pre-commit to Unix format...
- Ich kann die hook-Skript von der Befehlszeile als Benutzer phd:
[phd@phabricator ~]$ /var/repo/SVN/hooks/pre-commit
testing
Sogar mit einer leeren Umgebung aus, die scheinbar Spiele wie svn hooks ausgeführt werden.
[phd@phabricator ~]$ env -i /var/repo/SVN/hooks/pre-commit
testing
- Es scheint, wie das Skript die shebang ist korrekt:
[phd@phabricator ~]$ which sh
/bin/sh
[phd@phabricator ~]$ ls -la /bin/sh
lrwxrwxrwx. 1 root root 4 Aug 18 09:37 /bin/sh -> bash
[phd@phabricator ~]$ which bash
/bin/bash
- Ich Begehen kann code, wenn der Haken wird gelöscht.
- Ich kann checkout-code.
Update
Basierend auf einer Diskussion in der #svn IRC-channel, ich habe versucht, die folgenden:
sudo svn mkdir file:///var/repo/SVN/TestFolder -m "Add test folder"
svn: E165001: Commit blocked by pre-commit hook (exit code 1) with output:
testing
So impliziert dies, dass der Haken bei der Arbeit und kann nicht sein Verschulden an alle. Noch nicht sicher, was das problem ist allerdings, also kann es nicht völlig ausschließen den Haken (könnte der Haken ist meistens in Ordnung, aber etwas geändert werden muss, damit es funktioniert mit dieser Konfiguration). Es scheint wahrscheinlich, dass das problem liegt woanders, wenn. Jede Hilfe ist willkommen.
- Ich lese die wall of text, aber ich weiß noch nicht, was die problematische Haken ist (Sie enthalten auch eine Stichprobe nicht-problematischen Haken...) Warum könnt Ihr Euch nicht nur nach den problematischen Haken, dass zu verlassen mit 255?
- Die Haken, die ich vorgeführt habe, ist auch problematisch. In anderen Worten, genau die gleiche Fehlermeldung wird angezeigt, wenn mit diesem Haken als mit dem original. Wenn dieses einfache Skript kann nicht gemacht werden, um zu arbeiten, es ist nicht sehr wahrscheinlich, dass ein komplizierter, man wird mehr Erfolg haben. Ich bin versucht, zu beseitigen so viele mögliche Fehlerquellen, während immer noch den Fehler verursacht. Ich werde versuchen, diese mehr klar in meiner Frage.
- Es funktioniert noch scheitern, wenn Sie ändern die
exit 1
zuexit 0
? Beachten Sie, dass für den Programm-exit-codes0
ist Erfolg und alle anderen exit-code (in der Regel) einen Ausfall in irgendeiner Form. - Gute Frage. Ja, es immer noch nicht, wenn Ausgang 1 wird geändert, um exit 0. Ich habe es mit exit 1, weil ich wollen, dass es zu scheitern, aber ich will es schlagen mit der exit-code gegeben und sorgen für die richtige Fehlermeldung. Es noch immer nicht, wenn auf 0 gesetzt ist immer noch nützlich, Kenntnisse obwohl.
- "Bekomme ich die gleiche Fehlermeldung bei Verwendung dieser Haken auch als" es ist einfach unmöglich, denn Sie verlassen mit 1, nicht 255 und Ausgang 0 (später) bedeutet "alles OK, passed" mit dem erfolgreichen commit
- Ich bin mir nicht sicher, was du meinst, dass es unmöglich ist? Ich bin damit einverstanden, dass, wenn das Skript korrekt funktioniert, würde es wieder mit exit-code 1. Mein Verständnis über andere Dinge, die ich gelesen habe, ist, dass 255 kann auf eine Vielzahl von Themen, wie z.B. die hook-Skript nicht ausführbar ist. 255 zurückgegeben werden kann, ohne das Skript selbst wieder. Ich bin nicht damit output-oben oder alles, das ist alles aus dem script, das ich vorgestellt.
- Nachdem er eine Menge Zeit mit der Suche in dieser, ich fühle mich, dass ich versucht habe beheben alle Ursachen von den 255 exit-code, die ich finden konnte, aber das problem tritt weiterhin auf. Ich hoffe, dass jemand mir sagen kann, ob es Ursachen, die ich nicht kenne oder wenn ich etwas verpasst haben in dem, was ich bisher ausprobiert habe.
- Nur um klar zu sein, die betreffende Fehlermeldung wird ausgegeben, durch das client-Programm svn. Es scheint gesendet zu werden, von svnserve wenn es auf verschiedene Themen, wie z.B. nicht in der Lage zu führen Sie die Haken aus irgendeinem Grund. Es muss nicht zur Verfügung gestellt werden, indem der Haken. Die Haken, die in diesen Fehlermeldungen ist die gleiche, die ich gepostet haben.
- Haben Sie gesehen: secure.phabricator.com/T4947
- Habe ich, aber SELinux ist deaktiviert, sollte nicht zu beseitigen, dass dieses als eine Möglichkeit?
- Auch, secure.phabricator.com/Q180 scheint, wie es könnte das gleiche Problem, aber keine Lösung gepostet wurde, es entweder.
- Ich habe das gleiche problem, und keiner dieser Vorschläge arbeiten für mich. Meine Haken auch funktioniert OK mit der file:// und https-Zugriff, es ist nur svnserve dieses problem aufweist. Haben Sie jemals herauszufinden, eine Lösung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weiß nicht, welche änderungen dos2unix tun, aber in meinem Fall war es beides, UTF-8 und LF-Pausen, das war die Frage.
Ich benutze den www-data als Besitzer der Datei und nicht die phpd-Benutzer.
Meinem Fall war, dass die erstellten/Bearbeiten Sie die Datei tru WinSCP und notepad++, ich benutzt windows mit CRLF Pausen und Codierung es auf Windows mit ANSI.
Ändere ich die Datei in UTF-8 und UNIX (LF Pausen), ändern Sie dann das Teil, war die Codierung falsch (;amp ;gth z.B.) nach der Codierung ändert.
Ich hatte genau dasselbe problem und betrachten, was könnte eine exit-code 255 (oder -1), habe ich festgestellt, dass eine der Operationen, die es versucht zu tun, nach der Verzweigung des Prozesses zum ausführen des hooks ist ein völlig nutzlos " - cd .". In meinem Fall, da der Aufruf von svnserve Ursprung in einem login von einem anderen Benutzer, wurde in der Folge sudo würde der Benutzer svnserve sollte ausführen, wie es nicht die Berechtigungen haben, auf cd zu dem Verzeichnis, es war in. Daher der Aufruf von "cd ." ist fehlgeschlagen, und der Prozess beendet wurde, ohne auch nur den Versuch zum ausführen von pre-commit-hook.
Ziemlich dunkel, da es keine Anzeichen dafür, dass die cwd hat nichts damit zu tun.
Ihnen nicht sagen, wie svnserve ausgeführt wird, in deinem Fall aber eine andere Sache zu prüfen ist, dass der Benutzer es läuft, wie die Berechtigungen zum Zugriff auf die cwd.
Habe ich svn-server eingesetzt, die auf Centos6.5, und verwenden Sie die client TortoiseSVN1.8.10 auf Win7. Beim ersten mal pre-commit-hook-Skript Hinzugefügt wird, wird die Meldung "Commit blocked by pre-commit hook (exit code 255) with no output" erscheint im client beim Begehen. Ich löste es in meinem Fall mit folgenden Maßnahmen:
$ cd /data/svn/Haken/
$ chmod +x ./pre-commit
Für mich nach der Untersuchung für eine Stunde, fand ich, dass ich noch nicht hatte
ksh
wie es verwendet wurde, im pre-commit Datei. Wenn ich es installiert, ging alles glatt.Das folgende ist meine Fehlermeldung:
, Wie ich das problem lösen:
Fand ich einige syntax-Fehler in der Datei, die ich Begehen wollen (index.php), und ich kann erfolgreich Begehen, nachdem ich der festen syntax-Fehler.
Überprüfen, ob es irgendwelche Fehler in Ihrem commit-Datei.
Viel Glück!