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 zu exit 0? Beachten Sie, dass für den Programm-exit-codes 0 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?

InformationsquelleAutor foven | 2015-11-18
Schreibe einen Kommentar