設定 Git Commit 更新 自動寄信通知

Git 有任何 Commit / Push / 更新, 想要自動寄信通知, 要如何設定?

前置準備 - 環境

  • 系統: Debian / Ubuntu Linux
  • Repository Path: /var/cache/git/project.git # /path/to/your/repository.git
  • 變更需寄送到的 Email: project-commit@lists.example.com

Git 寄信所需的 hook 與 script 如下:

  • /var/cache/git/project.git/hooks/post-receive.sample
  • /usr/share/doc/git-core/contrib/hooks/post-receive-email

Git 更新自動寄信通知的設定步驟

  1. chmod a+x /usr/share/doc/git-core/contrib/hooks/post-receive-email
  2. ln -sf /usr/share/doc/git-core/contrib/hooks/post-receive-email /var/cache/git/project.git/hooks/post-receive
  3. 到此 Commit 變更就會自動寄信了, 不過, 要寄去哪邊, 信件標題等等該怎麼設定, 於下述設定.

設定 要寄到哪個 Email 步驟 (git config hooks.mailinglist)

  1. cd /var/cache/git/project.git
  2. git config --add hooks.mailinglist "project-commit@lists.example.com"
  3. 到此即可.
  4. 檢查: vim config # 會看到下述

    [hooks]
    mailinglist = project-commit@lists.example.com

設定信件標題的 Prefix (git config hooks.emailprefix "[prefix-title]")

  1. cd /var/cache/git/project.git
  2. git config hooks.emailprefix "[project-name]"
  3. 到此即可.
  4. 檢查: vim config # 會看到下述

    [hooks]
    mailinglist = project-commit@lists.example.com
    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 沒有設定, 設定步驟如下:

  1. vim /var/cache/git/project.git/description

    Unnamed repository; edit this file 'description' to name the repository.

  2. 改成

    Project-name

  3. 註: 此 UNNAMED PROJECT 得判斷方法為: projectdesc=$(sed -ne '1p' "$GIT_DIR/description")

相關網頁


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 My_Note-Unix 並標籤為 , , 。將永久鏈結加入書籤。

設定 Git Commit 更新 自動寄信通知 有 4 則回應

  1. Hayami 說道:

    你好:
    請問這個email的hook設定適用於http的repository嗎?
    我是用ubuntu架設server,並按照描述設定server上repository的hook,
    接著把server上的repository clone到本地端,
    再把資料加上後做push,但是沒有收到mail,
    我有測試sendmail,可以運作,也嘗試在post-receive輸出訊息,
    不過都沒有任何反應,是不是有什麼地方需要注意的?
    謝謝~

    • Tsung 說道:

      都適用, 你可以先試試看, 在那個 repository 直接先 local commit.
      如果 local commit 都沒有辦法收到 post-receive 的訊息, 那就是設定或 post-receive 的問題囉~

  2. Hayami 說道:

    你好:
    我重新建一個local的repository,然後進入.git目錄中設定hook,
    commit之後還是無法喚起post-receive(沒有發mail,只有輸出export的資訊到文字檔),
    請問要如何設定hook才會work?
    謝謝~

發表迴響