Shell Script Post Commit Hook, der einfach date> /tmp/post-commit.log macht, wird nichts in die Protokolldatei geschrieben

1357
Jason

Ich habe svn Server mit Apache 2 auf Ubuntu 10 installiert

Ich habe eine post-commit.sh mit einer einzigen 2-Zeilen Code erstellt

Repository / hooks / post-commit.sh:

#!/bin/sh date > /tmp/post-commit.log 

nichts wird in diese Datei geschrieben Kann jemand bitte helfen?

1

2 Antworten auf die Frage

1
Daniel Beck

Von hier :

Name

post-commit - Benachrichtigung über ein erfolgreiches Commit.

Beschreibung

Der Post-Commit-Hook wird ausgeführt, nachdem die Transaktion festgeschrieben und eine neue Revision erstellt wurde. Die meisten Benutzer verwenden diesen Hook, um beschreibende E-Mails über das Commit zu versenden oder ein anderes Tool (z. B. einen Problem-Tracker) über das Commit zu informieren. Einige Konfigurationen verwenden diesen Hook auch, um Sicherungsprozesse auszulösen.

Die Ausgabe und der Beendigungswert, die vom Hook-Programm nach dem Festschreiben zurückgegeben werden, werden ignoriert.


Was Sie wollen, ist ein Pre-Commit-Hook (irgendwie offensichtlich, wenn Sie über diese Namen nachdenken):

Name

pre-commit - Benachrichtigung kurz vor dem Abschluss des Commits.

Beschreibung

Der Pre-Commit-Hook wird ausgeführt, bevor eine Commit-Transaktion zu einer neuen Revision befördert wird. Normalerweise wird dieser Hook zum Schutz vor Commits verwendet, die aufgrund von Inhalt oder Standort nicht zulässig sind (z. B. muss Ihre Site möglicherweise festlegen, dass alle Commits für eine bestimmte Zweigstelle eine Ticketnummer vom Bug-Tracker enthalten oder dass die eingehende Protokollnachricht keine ist -leeren).

Wenn das Pre-Commit-Hook-Programm einen Exit-Wert ungleich Null zurückgibt, wird der Commit abgebrochen, die Commit-Transaktion entfernt und alles, was an stderr gedruckt wird, wird an den Client zurückgeleitet.


Stellen Sie außerdem sicher, dass die Skriptdatei ausführbar zu machen, und verwenden Sie den genauen Namen pre-commitoder post-commit, dh ohne Dateinamenerweiterung!

@ Jason Hast du es ausführbar gemacht? `chmod + x repository / hooks / post-commit.sh`? Versuchen Sie auch, die Dateinamenerweiterung `.sh 'zu entfernen. Ich bin mir nicht sicher, ob dies funktioniert. Daniel Beck vor 13 Jahren 1
richtig musste die .sh entfernen Jason vor 13 Jahren 0
Zitat 1: Das `post-commit`-Skript selbst gibt nichts aus. Die Ausgabe von "Date" wird intern umgeleitet. grawity vor 13 Jahren 0
@ grawity Er leitet manuell in eine Datei um. Während "stdout" und "stderr" wahrscheinlich verworfen / umgeleitet werden, glaube ich nicht, dass diese Ausgabe entfernt wird. Andernfalls haben diese Skripts Schwierigkeiten, etwas zu tun. Daniel Beck vor 13 Jahren 0
1
Arcege

Benennen Sie das Skript in um repository/hooks/post-commit. Das sollte keine Erweiterung im Dateinamen sein. Lesen Sie die repository/hooks/post-commit.tmplDatei für weitere Informationen (insbesondere den ersten Absatz, in dem es heißt:

Der Post-Commit-Hook wird nach einem Commit aufgerufen. Subversion führt diesen Hook aus, indem ein Programm (Skript, ausführbare Datei, Binärdatei usw.) mit dem Namen ' post-commit ' aufgerufen wird.