可以與我分享這個腳本的任何內容嗎?任何人都有提交通知掛鉤腳本,將提交代碼發送電子郵件?
回答
默認的一個名爲commit-email.pl,當您安裝Subversion時會包含它。但是here是一個在紅寶石:
#!/usr/bin/ruby -w
# A Subversion post-commit hook. Edit the configurable stuff below, and
# copy into your repository's hooks/ directory as "post-commit". Don't
# forget to "chmod a+x post-commit".
# ------------------------------------------------------------------------
# You *will* need to change these.
address="[email protected]_DOMAIN.com"
sendmail="/usr/sbin/sendmail"
svnlook="/usr/bin/svnlook"
# ------------------------------------------------------------------------
require 'cgi'
# Subversion's commit-email.pl suggests that svnlook might create files.
Dir.chdir("/tmp")
# What revision in what repository?
repo = ARGV.shift()
rev = ARGV.shift()
# Get the overview information.
info=`#{svnlook} info #{repo} -r #{rev}`
info_lines=info.split("\n")
author=info_lines.shift
date=info_lines.shift
info_lines.shift
comment=info_lines
# Output the overview.
body = "<p><b>#{author}</b> #{date}</p>"
body << "<p>"
comment.each { |line| body << "#{CGI.escapeHTML(line)}<br/>\n" }
body << "</p>"
body << "<hr noshade>"
# Get and output the patch.
changes=`#{svnlook} diff #{repo} -r #{rev}`
body << "<pre>"
changes.each do |top_line|
top_line.split("\n").each do |line|
color = case
when line =~ /^Modified:/|| line =~ /^=+$/ || line =~ /^@@ /: "gray"
when line =~ /^-/: "red"
when line =~ /^\+/: "blue"
else "black"
end
body << %Q{<font style="color:#{color}">#{CGI.escapeHTML(line)}</font><br/>\n}
end
end
body << "</pre>"
# Write the header.
header = ""
header << "To: #{address}\n"
header << "From: #{address}\n"
header << "Subject: [SVN] #{repo} revision #{rev}\n"
header << "Reply-to: #{address}\n"
header << "MIME-Version: 1.0\n"
header << "Content-Type: text/html; charset=UTF-8\n"
header << "Content-Transfer-Encoding: 8bit\n"
header << "\n"
# Send the mail.
begin
fd = open("|#{sendmail} #{address}", "w")
fd.print(header)
fd.print(body)
rescue
exit(1)
end
fd.close
# We're done.
exit(0)
在你的svn庫的鉤子目錄,你會發現一個後commit.tmpl腳本。複製它以命名爲「提交後」並對其進行編輯以適應。通常它會運行subversion附帶的commit-email.pl腳本;那也需要編輯來設定你想要的東西。
由於某些原因,ruby腳本和默認鉤子腳本不適用於我。這可能是由於有些古怪的地方與我們的郵件服務器,但我會在這裏反正包括重要的部分:
#!/bin/sh
REPOS="$1"
REV="$2"
svnnotify --repos-path "$REPOS" --revision "$REV" --with-diff --to [email protected] --smtp mailserver.domain --from [email protected] -VVVVVVVVV -P "[repository_name]"
的-VVVVVVV部分顯示非常詳細的消息,如果你想在腳本之外測試命令。它應該在實際的腳本中被刪除。
當然,爲了這個工作,你需要安裝svnnotify。你可以通過首先安裝cpan來安裝,這應該與perl一起提供。然後你需要啓動cpan並安裝SVN :: Notify庫。
$ cpan
cpan> install SVN::Notify
請注意'$'和'cpan>'部分只是提示,您不需要輸入它們。
這個解決方案對我來說更具吸引力,因爲它提供了詳細的錯誤信息,這些錯誤信息有助於解決我提到的郵件服務器的這些問題。我們也有多個存儲庫,因此將整個程序/腳本複製到每個目錄中都是多餘的。你的旅費可能會改變。
頂部代碼塊中的文本應放置在名爲「post-commit」的文本文件中。該文件應位於/ path/to/svn/repos/repository_name/hooks並標記爲可執行文件。
#!/bin/ksh
#
# This is a custom post-commit for sending email
# when an svn repo is changed.
#
rcpts="[email protected], [email protected]"
repodir=$1
revision=$2
author=`/usr/bin/svnlook author -r $revision $repodir`
date=`/usr/bin/svnlook date -r $revision $repodir`
log=`/usr/bin/svnlook log -r $revision $repodir`
info=`/usr/bin/svnlook changed -r $revision $repodir`
repo=${repodir##*/}
subject="$repo svn updated by $author"
url="https://myserver.bar.edu/svn/$repo"
/usr/bin/mail -s "$subject" "$rcpts"<<EOM
repository: $url
date: $date
username: $author
revision: $revision
comment: $log
$info
EOM
試試這個
/usr/bin/svnnotify --revision "$REV" --repos-path "$REPOS" \ --subject-cx --subject-prefix "[Project:commit] " --max-sub-length 128 \ --with-diff --handler Alternative --alt HTML::ColorDiff \ --to '[email protected]' --from '[email protected]' --set-sender
- 1. 顛覆電子郵件提交通知沒有掛鉤
- 2. 提交按鈕,將提交表單併發送電子郵件?
- 3. 發送表單提交電子郵件
- 4. GitHub電子郵件提交代碼
- 5. 視覺SVN提交後掛機腳本發送郵件
- 6. Ajax Mandrill通過表單提交發送電子郵件
- 7. 通過提交按鈕發送電子郵件的問題
- 8. 預提交鉤子在提交文件
- 9. 通過電子郵件取消提交?
- 10. 電子郵件將不會發送聯繫表格提交(PHP)
- 11. 混帳:發送電子郵件沒有提交
- 12. 提交的交易電子郵件
- 13. 在表格提交後向管理員發送電子郵件通知
- 14. 任何人都知道如何通過GoDaddy電子郵件服務器發送與System.Net.Mail的SSL電子郵件
- 15. phonegap提交表格,如何發送到我的電子郵件
- 16. 從提交後掛鉤提交子模塊
- 17. 在表單提交中發送自動應答電子郵件腳本
- 18. Subversion提交後掛鉤
- 19. SVN預提交掛鉤
- 20. 提交掛鉤失敗
- 21. 自動回覆電子郵件給發件人/提交者
- 22. Git電子郵件掛鉤包含提交消息和更改的文件
- 23. 發送電子郵件至電子郵件提交一個PHP的形式
- 24. Git子模塊提交掛鉤
- 25. SVN客戶端發佈提交掛鉤
- 26. SVN提交後掛鉤將不會運行後提交
- 27. WooCommerce - 通過「save_post」掛鉤更新訂單時發送通知電子郵件
- 28. 預提交掛鉤獲取部分提交的文件列表
- 29. 在SVN後臺提交後臺發送電子郵件
- 30. 提交表格後自動發送電子郵件
我也不得不這樣做`CPAN>獲得後安裝的Net :: SMTP_auth` 「無法找到網/ SMTP_auth.pm在@INC」 – philfreo 2010-08-09 20:18:03