loginfo.rb:自動寄送修改記錄信件

在CVS主機的Repository內有一個特殊的CVS控制目錄:CVSROOT,此目錄內存放著許多控制CVS操作行為的小檔案,或許可以簡化的稱為 CVS的Event handler,例如:loginfo是在commit、輸入Log message後會讀取的檔案。

loginfo內除了註解(井號開頭)外的每一列都會被CVS程式讀取,依開頭的樣式來決定此次commit的檔案是否要執行其後的命令。例如:

# 井號開頭是註解行
模組樣式    命令  [參數1 [參數2 [...參數n]...]]

模組樣式是使用正規運用式(Regular Expression)來示符合要執行的是那些模組,例如:

^inetpub 表示以inetpub開頭的模組(目錄)
ALL 表示所有模組都符合
DEFAULT 由可執行的第一列開始都不符合的,最後會執行DEFAULT列的指令

模組樣式後面接的是要執行的命令。有一個相當好用的指令是Rob Partington寫的loginfo.rb,一支用來產生mail的Ruby程式,將修改人、修改時間、修改程式等訊息寄給需要通知的相關人等。loginfo.rb的使用說明如下:

# Usage: loginfo.rb CVSROOT USER 'CVS-LOG-STRING' MAIL_ADDRESSES
#     [-d HELO_DOMAIN] [-s SMTP_SERVER] [-p SUBJECT_PREFIX]
#     [-S SENDER_ADDRESS] [-R REPLY_TO_ADDRESS] [-x X_HEADER_PREFIX]
#     [-w CVSWEB_URL] [-C PATH_TO_CVS] [-qJ]
#
# -d    specify the domain to use in the SMTP session and in the mail header
#     (default: FQDN of the host)
# -s    specify the SMTP server to mail via
#     (default: "localhost")
# -S    specify the sender address for the mail
#     (default: USER + "@" + HELO_DOMAIN)
# -R    specify the reply-to address for the mail
#     (default: none)
# -p    specify the prefix for the mail subject (which will be surrounded
#     by `[' and `]')
#     (default: "cvs")
# -q    be quiet
# -x    specify the prefix for the CVS informative headers
#     (default: "X-")
# -w    specify the URL of the CVSweb with two @'s, one for a path, and
#     the other for a query (e.g. "'http://a.b/cvsweb.cgi@?cvsroot=xyz&@'")
#     (default: none - no CVSweb links will be added)
# -C    specify the full path to cvs
#     (default: "/usr/bin/cvs")
# -J    enable Japanese support (send mail in the JIS encoding)
#     (default: disabled)

使用範例:

# 把inetpub與其子目錄內檔案的commit都寄通知給紅色字體的電子郵件帳號
# %s 是輸入的log message
^inetpub $CVSROOT/CVSROOT/loginfo.rb $CVSROOT $USER %s adam@hotmail.com,bill@gmail.com,cathy@pchome.com.tw -s mail.box.com.tw -S cvs_logingo@mail.box.com.tw

要使用loginfo.rb當然要安裝Ruby環境;另外,以上指令都是在Linux上執行的,Windows環境需要做些小修改。在Windows中有一個叫做CVSMailer的Delphi程式,也可以用來寄送修改記錄,但我幾年前測試時始終無法正常運行,您也可以試看看。

如果想要對程式版本間的修改做更詳細的記錄與追蹤的話,可以自行撰寫程式,將修改程式、Log訊息等寫入資料庫,則日後就能使用SELECT敘述做查詢了。

##

您可能也會有興趣的類似文章

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *