2013-07-23 2 views
0

내 기본적인 커밋 후 스크립트는 실행되지 않습니다. 그러나 사전 커밋 스크립트에는 아무런 문제가 없습니다.포스트 커밋 커밋하지 않음

첫째,

-rw-r--r-- 1 apache apache 3426 Jul 23 09:02 pre-commit 
-rw-r--r-- 1 apache apache 2106 Jul 23 08:38 post-commit 

Pre-commit 파일 내용을 해당 파일에 대한 권한 :

REPOS="$1" 
TXN="$2" 
exit 2 

잡은 오류

Some of selected resources were not committed. 
svn: Commit failed (details follow): 
svn: Commit blocked by pre-commit hook (exit code 255) with no output. 
svn: MERGE of '/post-commit-tests/trunk': 409 Conflict (http://mydomain.com) 

Post-commit 파일 내용

,536,913,632 10
REPOS="$1" 
REV="$2" 
exit 2 

오류가 발생하거나 걸리지 않습니다.

Eclipse에서 http를 통해 코드를 확인/커밋하고 있습니다.

업데이트 # 1

후 커밋 가진 후 실행 된 사전 커밋 스크립트 (.tmpl 다시 이름) 사용할 수 없습니다.

포스트 커밋의 종료 코드를 클라이언트가 승인해야합니까?

업데이트 # 2

새로운 권한 : 여기

-rwxr-xr-x 1 apache apache 2114 Jul 23 10:19 post-commit 

내가 커밋 할 때 여전히오고없이 겪고있어,

# !/bin/bash 

# 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" 
echo "my message" 1>&2 
exit 2 

을 커밋 포스트의 전체 파일입니다 Eclipse에서 오류가 발생했습니다. 그러나 ./post-commit을 실행하면 예상대로 출력됩니다.

업데이트 # 3

SVN : 1.6 아파치 : chmod +x pre-commit post-commit : 당신은 실행 가능한 스크립트를 만들 필요가 DAV

+0

Google에서 도움을 받으려면 파일의 실제 콘텐츠를 게시해야합니다.게시 한 커밋은'ls' 출력 결과보다 훨씬 짧습니다. – Matteo

+0

@Matteo 코멘트 표시를 건너 뛰었습니다. 그 밖의 모든 것이 있습니다. – TekiusFanatikus

+0

27 문자의 코드에 대해 거의 3KB의 주석이 있습니까? – Matteo

답변

0

를 사용하여 2.2 .

종료 코드

사전 커밋 훅은 커밋 전에 검사를 수행하는 데 사용됩니다

+0

이 문제가 해결되지 않았습니다. – TekiusFanatikus

0

은 몇 가지 문제가 있습니다. documentation에서 : pre-commit 후크 프로그램이 0이 아닌 종료 값을 반환하면

, 커밋 중단, 커밋 트랜잭션이 제거되고, 어떤 클라이언트에게 다시 정렬 화되어 표준 에러에 인쇄.

당신은 항상 커밋 중단 Subversion을 말할 것이다

exit 2 

사전 커밋 완료합니다. 커밋이 없으므로 커밋 후 훅은 실행되지 않습니다.

권한

또한 두 스크립트가 실행되어야합니다 :

chmod +x pre-commit post-commit 

-rw-r--r--들이 읽기 (그리고 소유자에 의해 작성)하지만 실행되지 않을 수 있다는 것을 의미한다.

오두막

스크립트를 호출해야하는 인터프리터 지정하는 시작 부분에 Shebang이 없습니다. 당신의 갱신에 대한 답변이 documentation도 1

예,

#!/bin/sh 

업데이트 :

경우는 사후 커밋 커밋, 후크가 0이 아닌 종료 상태를 반환하지 않습니다 이미 완료 되었기 때문에 중단되어야한다. 그러나 stderr에 인쇄 된 후크가 클라이언트에 마샬링되어 후크 오류를 쉽게 진단 할 수 있습니다.

코드는 클라이언트로 전송되지 않지만 표준 오류를 적용하면됩니다. 예를 들어 :

echo "my message" 1>&2 

업데이트 2

당신은 여전히 ​​오두막의 시작 부분에 # 누락하지만 난 그것을 복사 & 붙여 넣기 문제입니다 가정합니다.

exit 2을 갖는 문서에 지정된대로 이 아닌은 커밋의 낙태를 유발합니다. 통과 할 것입니다 (커밋을 차단하려면 pre-commit 후크에서 커밋을 차단해야합니다). 당신이 이 아니기 때문에은 표준 오류에서 아무것도 반환하지 않습니다. 클라이언트는 아무것도 표시하지 않습니다.

오류 상태 수익률을 사전에 커밋 경우에 발생하지 않습니다 당신의 post-commit 스크립트

+0

post-commit을 테스트 할 때 pre-commit이 비활성화되었습니다. – TekiusFanatikus

+0

그러면 그렇게 말 했어야합니다. 지정한대로 exit 2를 사용하면 커밋 후 커밋이 실행되지 않습니다. – Matteo

+0

원래 질문에서이 문제를 해결했습니다. 업데이트 # 1을 참조하십시오. – TekiusFanatikus

0

post-commit

echo "Error! Something went wrong after your commit!" 1>&2 

같은 것을 추가 (당신의 첫 번째 업데이트에 내 대답의 내용을 참조).

+0

post-commit을 테스트 할 때 pre-commit이 비활성화되었습니다. – TekiusFanatikus

관련 문제