2010年2月2日 星期二

使用 gmail 做為 git-email (git-send-email) 的 smtp server

git-send-email 是用 email 寄出一系列 patch檔的工具,對於大量使用 email 做為連絡工具的開發社群來說,是不可多得的好東西。

其實 man page 已經寫的非常詳細了,這裡只是做一些簡單的筆記。
有些命令列的參數是可以寫進 config file 裡的,可以減少每次都要下指令的麻煩。尤其是 smtp server 的部份(同時也是本文的重點)。

這裡要先提一下 gmail 的 smtp 設定。smtp server 是 smtp.gmail.com,必須要使用 ssl 加密,登入用的帳號是完整的 email 位址。

這些資料分別對應了 git-send-email 的 --smtp-server --smtp-encryption --smtp-user 等設定。
幸運的是,這些也是可以使用 config file 來設定的項目,不需要每次都手動輸入。

git config sendemail.smtpencryption "ssl"
git config sendemail.smtpserver "smtp.gmail.com"
git config sendemail.smtpuser "your@email.address"
git config sendemail.smtppass "your password"

git-send-email 的用法是 git send-email [選項] PATCH檔案、特定目錄、或是指定的版本

若是指定檔案,他會把檔案內容當作 email 寄出;指定目錄時會把目錄下的所有檔案都放在信件內文寄出;若是指定版本,則會將 patch 當成內文寄出。指定版本的方式與其他 git 工具都相同,這也是最主要的用途。

在預設情況下,會使用 git var -l 時顯示的 GIT_COMMITTER_IDENT 的值當成寄件者(From 標籤),Cc 標籤是 committer,subject 則是 commit log 及 patch 編號,同時也會設定 In-Reply-To 標籤,使這一系列的 email 能成為一串 thread。

比較常用的選項有
  • --bcc 為 bcc 標籤增加一個收信者
  • --cc 為 cc 標籤增加一個收信者
  • --compose 寄信前先打開編輯器,讓你可以為這一系列的 patch 輸入一些介紹的文字,做為信件內文的一部份
  • --from 更改 From 標籤
  • --subject 更改 Subject 標籤,只能與 --compose 一起使用
  • --to 增加一個收件者
  • --no-signed-off-by-cc 預設情況下會把 commit log 中 Signed-off-by 標籤和 Cc 標籤也都加入 email 收件者中,這個選項可以取消這個動作
  • --supress-cc 不要把特定種類的 email 加入 Cc 標籤,詳細的類別可以查看 man page;較常用的有 author - 作者,也就是 commiter,self - 自已,all - 不自動增加 Cc 標籤