2008-08-11 3 views
51

필자는 checkin (commit) 메일이 다른 사람들이 코드베이스/저장소에서 수행하고있는 작업을 추적하는 데 매우 유용하다는 것을 항상 발견했습니다. 각 커밋에서 배포 목록을 전자 메일로 보내려면 SVN을 어떻게 설정해야합니까?Subversion (SVN)이 체크 인에서 이메일을 보내도록하려면 어떻게합니까?

Windows에서 클라이언트를 실행하고 Linux에서 Apache Subversion 서버를 실행하고 있습니다. 다양한 플랫폼에 대한 아래 답변은 다른 사람들에게 유용 할 것입니다.

답변

1

어떤 플랫폼을?

Mac OS X의 경우 msmtp을 설치하고 저장소에 후크 (post-commit) 스크립트를 작성했습니다. .msmtprc 파일은 svn (또는 www) 사용자에 대해 설정해야합니다.

REPOS="`echo $1 | sed 's/\/{root of repository}//g'` " 
REV="$2" 
MSG=`/usr/local/bin/svn log -v -r HEAD https://localhost$REPOS` 

/usr/local/bin/msmtp {list of recipients} <<EOF 
Subject: SVN-Commit $REPOS#$REV 
MIME-Version: 1.0 
Content-Type: text/plain; charset=utf-8 
Content-Transfer-Encoding: 8Bit 

$MSG 
EOF 

사용자의 요구에 {root of repository}{list of recipients} 특정합니다. 스웨덴 (åäö)에는 몇 가지 특수 문자가 있기 때문에 UTF-8을 사용했습니다.

0

Subversion 소스에 포함 된 Perl로 작성된 (큰) 예가 있습니다 (viewed here 일 수 있음).

+0

링크입니다 (효과적으로) 파손 (가 일반 페이지로 리디렉션). –

19

는 독립 Subversion Notify 도구 에서보세요 (Windows 만!) 그것은에서와 훨씬 더 커밋 이메일로 전송 할 수있다!

+1

SubVersionNotify는 정말 멋진 작은 도구입니다. 나를 위해 완벽하게 일했습니다. 감사. – NLV

1

포스트 커밋 후크에 관련된 질문이 here입니다. 개인적으로 커밋 한 이메일이 꽤 빨리 내받은 편지함에 과부하가 걸릴 수 있으므로 RSS 피드를 얻을 수있는 메시지를 보내려합니다.

1

Seconding @Matt Miller RSS 피드.

완전한 저장소 메시지 및 개별 저장소/개별 태그/폴더의 RSS 피드를 제공하는 WebSVN이라는 유용한 도구가 있습니다. 업데이트를 실행하고 편집기를 열지 않고도 파일 기록 및 커밋/diff를 빠르게 볼 수있는 훌륭한 웹 인터페이스입니다.

1

다른 누군가가 '어떤 플랫폼'이라고 말했습니까? Windows에서는 'blat'을 사용했습니다. blat은 사후 커밋과 다른 배치 파일과 함께 공짜 명령 줄 SMTP 메일러입니다.

게시물이 같은 모습을 커밋 :

copy d:\subversion\repos\RTS\hooks\Commitmsg.txt %temp%\commit.txt 
copy d:\subversion\repos\RTS\hooks\subjbase.txt %temp%\subject.txt 
svnlook info -r %2 %1 >> %temp%\commit.txt 
echo Revision %2 >> %temp%\commit.txt 
svnlook changed -r %2 %1 >> %temp%\commit.txt 
svnlook author -r %2 %1 >> %temp%\subject.txt 
c:\utils\blat %temp%\commit.txt -t <[email protected]> -sf %temp%\subject.txt -server ServerName -f "SVN Admin <[email protected]>" -noh2 

SVN 후크를 작성에서 가장 큰 잡았다는 점이다

call d:\subversion\repos\rts\hooks\mail %1 %2 

그리고 mail.bat이처럼 보였다 (그냥 다른 배치 파일을 호출) 기본적으로 환경 설정이 없을 수도 있습니다. EXE 경로 나 임시 경로 등은 없습니다. 아마도 최근의 SVN 빌드에서 개선되었을 수도 있지만.

1

one과 비슷한 사후 커밋 스크립트를 사용합니다.

멋진 HTML 이메일을 전송합니다. 빨간색으로 제거 된 코드를 강조 표시하고 파란색으로 추가 된 코드를 강조 표시하여 일부 업데이트했습니다.

+0

안녕하세요 마크 당신은이 스크립트를 추가하는 방법을 조언 해주세요. 정확히 같은 스크립트를 통해 자세한 메일을받을 수 있습니다. 이제 SVN을 사용하고 있으며 거북이 SVN 브라우저를 통해 저장소에 액세스 할 수 있습니다.이 스크립트를 구현하는 방법을 알려주십시오. – user1633823

+0

@ user1633823 메일 수신을 시작할 수도 있습니다. 설치 지침을 따르기 만하면됩니다. 하지만 기본적으로 스크립트는 svn 서버가 실행중인 후크/포스트 커밋 디렉토리에 복사하여 실행 가능하게 만듭니다. –

1

buildbot을 사용할 수 있습니다. 체크인 할 때마다 임의의 조치를 취할 수있는 도구입니다. 완전한 기능을 갖춘 연속 통합 시스템이지만 전자 메일 만 원하면 확실하게 처리 할 수 ​​있습니다. 그것은 SVN을 포함한 다양한 SCM을위한 플러그인을 가지고 있습니다.

1

특정 Subversion 브랜치의 "hooks"디렉토리에는 시작을위한 9 개의 템플릿 파일이 있습니다.

요점 : 이름이 바뀌기 전까지는 파일을 실행하지 않습니다. unix에서 post-commit.tmpl을 실행하려면 "post-commit"으로 이름을 변경하십시오. Windows에서는 "post-commit.bat"또는 "post-commit.exe"로 이름을 바꿉니다. 서브 버전은 이 아니며은 "post-commit.tmpl"또는 "postcommit.sh"등과 같은 이름으로 파일을 실행합니다.

또한 파일이 Subversion을 실행하는 동일한 사용자에 의해 실행 가능해야합니다.

0

svn-mod-email 패키지가 here으로되어 있는지 확인하십시오. svn-mod-email은 데비안 아카이브로 제공되는 SVN 전자 메일 알림 관리를위한 강력한 도구입니다. 설치, 구성 및 사용이 쉽습니다.

1

VisualSVN 서버에는 유용한 커밋 전자 메일 알림 후크 VisualSVNServerHooks.exe이 있습니다. 색깔있는 diff를 지원하고 커밋이 특정 저장소 경로에 영향을 미친 경우에만 커밋 알림을 보낼 수 있습니다.

"Configuring Email Notifications in VisualSVN Server"을 참조하십시오.

2

1) sudo를 사용하여 SVN 서버에 svnnotify 설치

3) 열기 포스트

2)) svn의 웹 사이트에 후크를 커밋 포스트 (읽을 당신의 repo의 후크를 포스트 커밋 사용 경향을-수 - 후크 파일을 커밋하고 다음 코드를 붙여 넣어 smtp 서버를 사용하여 전자 메일을 보냅니다. sendmail을 구성 할 필요가 없기 때문에 smtp를 사용하는 것은 간단합니다.

4) \ (줄 바꿈) 다음에는 여유 공간이 없어야합니다.

#!/bin/sh 

REPOS="$1" 
REV="$2" 
TO="[email protected]" # who will receive the notifications 
FROM="[email protected]" # what will be in "FROM" fields 


/usr/bin/svnnotify \ 

--repos-path "$REPOS" \ 
--revision "$REV" \ 
--to $TO \ 
--from $FROM \ 
--reply-to $FROM \ 
--smtp "YOUR.SMTP.MAIL.COM" \ 
--subject-prefix "[svn commit]" \ 
--attach-diff -a \ 
--header 'Message generated on Subversion Check-in.' \ 
--footer 'OpenSource Team. ' \ 
--svnlook "/usr/local/bin/svnlook" \ 
--handler HTML::ColorDiff # make diff pretty 
1

나는 3 단계로 리눅스 서버에 그것을했다 :

  1. 메일 링리스트 ([email protected])을 만들고 목록에 사람을 추가 할 수 있습니다.

  2. 편집 /path_to_your_svn/svn/hooks/svn-notify/mailer.conf

    • to_addr = [email protected]
    • from_addr = % (저자)의 @의 XY합니다.COM
    • commit_subject_prefix = [XY-SVN은]
  3. /path_to_your_svn/svn/hooks/post-commit 파일에 다음 행을 추가
    /path_to_your_svn/svn/hooks/svn-notify/mailer.py commit "$REPOS" "$REV" /path_to_your_svn/svn/hooks/svn-notify/mailer.conf
관련 문제