sudo
에 오류가 발생했습니다.
당신이하고 싶은 일이 입니다. 왜냐하면이 좋지 않기 때문입니다. 저장소가 얼마나 큰가? 얼마나 걸릴까요. 20 초? 2 분?
당신이 Subversion 사용자이고 변경 내용을 체크인하려고한다고 가정 해보십시오. 당신은 커밋을하고 갑자기 터미널이 정지 된 것처럼 보입니다. 아마도 20 초 동안, 아마 2 분 동안. 포스트 커밋 훅을 완료하는 데 필요한 모든 것. 이봐, 자네 생각에, 서브 버전은 너무 느리다 ...
더 좋은 방법은 crontab을 이용하는 것이다. 그리고 루트 권한으로 작업을 수행 할 수 있다면 확실히 crontab을 수행 할 수 있습니다.
마지막 Subversion 버전을 기록하십시오. 그런 다음 변경 사항을 감지하면 내보내기를 수행합니다. 간단한 스크립트로 구현하기 쉽고 내보내기를 기다리는 동안 Subversion을 정지시키지 않습니다.
그런데 어떤 사용자가 Subversion 서버 프로세스를 실행하고 있습니까? 그것은 후크를 실행하는 사용자입니다. /etc/sudoers
파일에 비밀번호가 필요하지 않은 사용자가없는 경우 커밋 완료 후크가 실패합니다. 또한, 서브 고리가 어떤 경로가 없기 때문에 그들은 sudo
명령을 찾을 수 없습니다, 당신은에있어 어떤 디렉토리로 접두사해야합니다. 아직
을, 당신은 그것을 얻더라도, 그것은 여전히 입니다 나쁜 생각.
다음은 원하는 작업을 수행 할 crontab을 만드는 방법입니다. 완전히 테스트되지 않았습니다. 나는 오늘 밤 시간이 없다. 그러나, 그것은 당신에게 아이디어를 줄 것입니다 :
#! /bin/bash
REPO_URL="http://...."
DIR=... #Where you want the export
LAST_REV_FILE=/var/run/svn.last.rev
SVN=/usr/bin/svn
SED=/usr/bin/sed
current_rev=$($SVN info $REPO_URL | $SED -n '/^Revision: /s/^Revision: //p')
if [ ! -f $LAST_REV_FILE ]
then
echo $current_rev > $LAST_REV_FILE
exit 0
fi
#You're here if there is a last.rev.file
last_rev=$(echo $LAST_REV_FILE)
[ $last_rev -ge $current_rev ] && exit 0
# New Revision
echo $current_rev > $LAST_REV_FILE
rm -rf $DIR
$SVN export $REPO_URL $DIR
왜냐하면 사후 커밋은 커밋시 트리거되지 않습니다. 문제가 무엇인지 알 수 있습니까? – fiatux
이것이 유닉스 인 경우, 포스트 커밋 스크립트는 실행 권한이 있어야하며 Subversion 서버를 실행하는 사용자가 실행할 수 있어야합니다. Windows 사용자는 post-commit.bat 파일을 호출해야하며 PATHEXT를 설정해야합니다. 테스트 할 때,'echo "POST COMMIT HOOK FAILED를 넣으십시오!" 2> & 1'을 사용하여 post-commit 후크가 실행되지만 실패 할 경우 인쇄합니다. –
그것은 유닉스 서버이며 나는 포스트 커밋에 chmod 777을 시도했다. 여전히 트리거되지 않습니다. – fiatux