Git 提交後自動發email

2021-06-10 03:15:12 字數 1906 閱讀 4920

當然是通過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...