2016-11-09 10 views
0

Ich löschte post-commit.tmpl und in post-commit-Datei, hier ist der Code:Wie man Post-Commit-Skript in SVN festlegen, um geänderte Dateien zu aktualisieren?

#!/bin/sh 

export LANG=en_US.UTF-8 
SVN_Path=/root/svn/myblog 
WEB_Path=/home/app/myblog 
echo `date "+%Y-%m-%d %H:%M:%S"` 
$SVN_Path update --username xxx --password yyy $WEB_Path --no-auth-cache 

# POST-COMMIT HOOK 
# 
# The post-commit hook is invoked after a commit. Subversion runs 
# this hook by invoking a program (script, executable, binary, etc.) 
# named 'post-commit' (for which this file is a template) with the 
# following ordered arguments: 
# 
# [1] REPOS-PATH (the path to this repository) 
# [2] REV   (the number of the revision just committed) 
# 
# The default working directory for the invocation is undefined, so 
# the program should set one explicitly if it cares. 
# 
# Because the commit has already completed and cannot be undone, 
# the exit code of the hook program is ignored. The hook program 
# can use the 'svnlook' utility to help it examine the 
# newly-committed tree. 
# 
# On a Unix system, the normal procedure is to have 'post-commit' 
# invoke other programs to do the real work, though it may do the 
# work itself too. 
# 
# Note that 'post-commit' must be executable by the user(s) who will 
# invoke it (typically the user httpd runs as), and that user must 
# have filesystem-level permission to access the repository. 
# 
# On a Windows system, you should name the hook program 
# 'post-commit.bat' or 'post-commit.exe', 
# but the basic idea is the same. 
# 
# The hook program typically does not inherit the environment of 
# its parent process. For example, a common problem is for the 
# PATH environment variable to not be set to its usual value, so 
# that subprograms fail to launch unless invoked via absolute path. 
# If you're having unexpected problems with a hook program, the 
# culprit may be unusual (or missing) environment variables. 
# 
# Here is an example hook script, for a Unix /bin/sh interpreter. 
# For more examples and pre-written hooks, see those in 
# the Subversion repository at 
# http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and 
# http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ 

# REPOS="$1" 
# REV="$2" 

# mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf 

Leider nichts in meiner Projektdatei passieren wird (Projektpfad ist/home/app/myblog) nach Ich übertrage meinen modifizierten Code auf den Server. Aber wenn ich diese Datei in der Befehlszeile ausführen, werde ich diese Informationen erhalten:

2016-11-09 16:32:10 
./post-commit: line 9: /root/svn/myblog: Is a directory 

Zwischenzeit, in der Folge Pfad:/root/svn/myblog/db/revprops/0, kann ich alle begehen finden Logfiles . Ich denke, es bedeutet, dass die geänderten Dateien auf den Server übertragen werden, richtig?

Ich benutze CentOS, Express.

Also, könnte mir jemand dabei helfen? Danke!!

Antwort

0

2016-11-09 16:32:10 ./post-commit: line 9: /root/svn/myblog: Is a directory

den Code Nach sollte $SVN_Path auf die Kommandozeilen-Client svn Subversion zeigen. Aber es zeigt auf ein Verzeichnis /myblog statt:

SVN_Path=/root/svn/myblog

Sie sollten $SVN_Path anpassen, um svn Client auf dem Computer zu zeigen.

Zwischenzeit, in der Folge Pfad:/root/svn/myblog/db/revprops/0, kann ich alle Log-Dateien finden begehen. Ich denke, es bedeutet, dass die geänderten Dateien sind Server verpflichtet, richtig?

Post-Commit-Hooks laufen nach das Commit ist gemacht. Also, ja, das Commit hat es ins Repository geschafft. Der Haken lief jedoch wegen des Tippfehlers in $SVN_Path nicht.

+0

Vielen Dank für Ihre Antwort. Ich habe $ SVN_PATH geändert und svn auf dem Server neu gestartet, aber nichts hat sich geändert. Ich habe zugesagt und keine Aktualisierung im Projektpfad. Und ich habe versucht, modifiziertes Post-Commit-Skript in der Befehlszeile auszuführen, ich bekomme immer noch folgendes: ./post-commit: Zeile 9:/root/svn: Ist ein Verzeichnis. Gibt es etwas, was ich vermisst habe? –

+0

@HenryYong der Pfad ist immer noch ungültig. '/ root/svn' ist keine ausführbare Datei. Finden Sie den tatsächlichen Pfad zu 'svn' auf Ihrem System: http://unix.stackexchange.com/questions/28555/how-to-find-applications-path-from-command-line – bahrep

+0

Ich habe den tatsächlichen Pfad gefunden, der ist/usr/bin/svn. Aber es funktioniert immer noch nicht. In der Befehlszeile habe ich das jetzt: Übersprungen '/ home/app/myblog' Zusammenfassung der Konflikte: Übersprungene Pfade: 1 –

Verwandte Themen