Git 有任何 Commit / Push / 更新, 想要自動寄信通知, 要如何設定?
前置準備 - 環境
- 系統: Debian / Ubuntu Linux
- Repository Path: /var/cache/git/project.git # /path/to/your/repository.git
- 變更需寄送到的 Email: [email protected]
Git 寄信所需的 hook 與 script 如下:
- /var/cache/git/project.git/hooks/post-receive.sample
- /usr/share/doc/git-core/contrib/hooks/post-receive-email
Git 更新自動寄信通知的設定步驟
- chmod a+x /usr/share/doc/git-core/contrib/hooks/post-receive-email
- ln -sf /usr/share/doc/git-core/contrib/hooks/post-receive-email /var/cache/git/project.git/hooks/post-receive
- 到此 Commit 變更就會自動寄信了, 不過, 要寄去哪邊, 信件標題等等該怎麼設定, 於下述設定.
設定 要寄到哪個 Email 步驟 (git config hooks.mailinglist)
- cd /var/cache/git/project.git
- git config --add hooks.mailinglist "[email protected]"
- 到此即可.
- 檢查: vim config # 會看到下述
[hooks]
mailinglist = [email protected]
設定信件標題的 Prefix (git config hooks.emailprefix "[prefix-title]")
- cd /var/cache/git/project.git
- git config hooks.emailprefix "[project-name]"
- 到此即可.
- 檢查: vim config # 會看到下述
[hooks]
mailinglist = [email protected]
emailprefix = [project_name]
註: /usr/share/doc/git-core/contrib/hooks/post-receive-email 裡面有更多參數可以增加, 如下述:
- hooks.mailinglist
- hooks.announcelist
- hooks.envelopesender
- hooks.emailprefix
- hooks.showrev
信件標題出現 "[project_name] UNNAMED PROJECT branch, master, updated." 設定
"UNNAMED" 代表 Project description 沒有設定, 設定步驟如下:
- vim /var/cache/git/project.git/description
Unnamed repository; edit this file 'description' to name the repository.
- 改成
Project-name
- 註: 此 UNNAMED PROJECT 得判斷方法為: projectdesc=$(sed -ne '1p' "$GIT_DIR/description")
你好:
請問這個email的hook設定適用於http的repository嗎?
我是用ubuntu架設server,並按照描述設定server上repository的hook,
接著把server上的repository clone到本地端,
再把資料加上後做push,但是沒有收到mail,
我有測試sendmail,可以運作,也嘗試在post-receive輸出訊息,
不過都沒有任何反應,是不是有什麼地方需要注意的?
謝謝~
都適用, 你可以先試試看, 在那個 repository 直接先 local commit.
如果 local commit 都沒有辦法收到 post-receive 的訊息, 那就是設定或 post-receive 的問題囉~
你好:
我重新建一個local的repository,然後進入.git目錄中設定hook,
commit之後還是無法喚起post-receive(沒有發mail,只有輸出export的資訊到文字檔),
請問要如何設定hook才會work?
謝謝~
就照我的文章設定(檔名要對), 然後, 記得要讓他可以執行 (+x), 再來就是測試看看囉~