當然是通過hooks來實現了,對應post-receive,指令碼也是已經隨git-core安裝就有了的:/usr/share/doc/git-core/contrib/hooks/post-receive-email
,不過這個指令碼用到了sendmail,我想好多機器上都沒配這個東東吧,好在有好心人在這個指令碼的基礎上進行了完善,可以用msmtp發信了,看來我以前換用msmtp配mutt太正確了,另外msmtp也確實比sendmail小巧多了。
$ cd test.git/hooks/
$ mv post-receive post-receive.origin
$ ln -s ../../gittools/post-receive-email post-receive
$ ln -s ../../gittools/functions
然後修改倉庫裡的config檔案,注意不是客戶端的:
[hooks "post-receive-email"]
mailinglist = [email protected], [email protected]
announcelist =
envelopesender = [email protected]
sendmail = /usr/bin/msmtp
其中:
還有個環境變數$user_email
,也是個發信人,不過是顯示在郵件from:
裡的。如果要設定郵件裡的from:
,需要自己修改post-receive-email或在其之前執行的指令碼,設定環境變數:
export user_email="git "
這一版修改中作者還去掉了原來的emailprefix
設定引數,固定為用倉庫裡description
檔案的內容加上
替代。
最後,在git(git伺服器執行使用者)使用者的home下放乙個.msmtprc
,配置發信認證資訊:
defaults
tls_trust_file /etc/ssl/certs/ca-certificates.crt
account gmail
host smtp.gmail.com
port 465
auth on
tls on
tls_starttls off
account [email protected] : gmail
# from must be same as from: in mail, exclude name, only mail address
# because maybe msmtp select account using from
from [email protected]
user "[email protected]"
password my_passwd
account default : [email protected]
現在就可以測試push,看自動發信是否正常了。如果提示functions
語法錯誤,比如:
hooks/functions: 213: syntax error: bad for loop variable
可以把這兩個指令碼第一行的#!/bin/sh
改為#!/bin/bash
。
注意msmtp呼叫的是提交動作所屬使用者的.msmtprc
,從本機提交和遠端ssh進來可能用的就不是乙個.msmtprc
了。
參考
git退回後提交
修改了幾個版本並提交到了remote端,然後通過reset退回到其中乙個版本,繼續修改後直接push,提示錯誤 由於接觸git不深,所以網上找到的解決方案是直接pull再push,嘗試後仍然報錯。經過排查,是因為reset 操作引起的。因為reset 修改後push到伺服器,這時候head是節點1 ...
實現Git提交後自動郵件通知的功能配置
一 安裝配置msmtp 1 安裝msmtp wget 5 msmtp 1.6 5.tar xztar xvf msmtp 1.6 5.tar xzcd msmtp 1.6 5.configure prefix usr local msmtp make make install2 配置msmtp cd...
Git提交錯誤後如何回退
git reset commit 在使用git的時候需要維護乙個自己的分支模型,推薦使用 總體說來有一下兩點 下面這個是我們專案中的網路提交圖 這只是簡單介說了一下分支模型,具體的介紹可以參考上面給出的鏈結。如果在提交的過程中直接在master上做了修改,或者不小心把master合併到了develo...