git提交patch,並傳送郵件列表

2021-07-22 05:43:44 字數 3164 閱讀 9107

一. 先配置git send-mail 的 smtp伺服器:

1. 安裝git-email:

# apt-

get install git git-core git-email

修改gitconfig檔案:vim ~/.gitconfig

[color]

ui = auto

[commit]

template = ~/.commit_template

[user]

name = ***

email = ***@***.com

[alias]

pretty = log --branches --remotes --tags --graph --oneline

--decorate

[sendemail]

smtpencryption = tls

smtpserver = smtp.gmail.com

smtpuser = *****.****@gmail.com

smtpserverport = 587

smtppass = abcdef

suppresscc = all //will suppress all auto cc values

confirm = always

#to =

*****.****@gmail.com

//specify the primary recipient

#cc =

s***[email protected]

//cc list

2. then editthe 

.git/hooks/pre-commit

fileto contain only the following two lines:

#!/bin/sh

exec git diff --cached | scripts/checkpatch.pl --no-signoff - || true

二. 好了,下面就是提交的步驟了。

1. 按功能分類提交commit ,提交之前先執行指令碼 ./scripts/cleanfile xx.

1)加-s選項,自動signed-off-by. 

2) git commit--amend --author " *** zhang "(新增實際的author,如果author是本人,則不要寫)

3)commit message第一行要是patch的主題(包括patch的從屬子系統,和概述),第二行是patch的詳細描述。

4)如果想修改其中的乙個commitmessage:

a)gitformat-patch -n --cover-letter(有必要的話,將測試結果和基於的主線版本寫在0000-cover-letter.patch中的詳細描述中)

b)gitreset到那個commit,如要更改或新增某個檔案,git add; 如要刪除某個commit的檔案,(git resethead^ file),然後 commit --amend

2. 生成patch:

1)git format-patch -2 --cover-letter//2表示從head的commit開始,向前生成兩個commit的patch。--cover-letter會生成乙個0000-cover-letter.patch,格式和commitmessage類似,第一行是patchset的主題,第二行描述這組patchset的詳細資訊,它就是郵件中的【patch0/n】。

2)git format-patch -numbered --cover-letter--subject-prefix="patch v2" (如果不是第一版  

patch需要新增版本號,以v2為例)

3. 檢查patch:

./scripts/checkpatch.pl0001-nfs-add-a-pr_info.patch

(不用檢查0000-cover-letter.patch

)4. 發郵件列表:

git send-email *.patch

如果想要編輯patch郵件內容,加--annotate選項。

$ git send-email*.patch

/tmp/59yd80mjvb/0000-cover-letter.patch

/tmp/59yd80mjvb/0001-clone-patch-test-001.patch

/tmp/59yd80mjvb/0002-revised-text.patch

3 files to edit

zh**.****@gmail.com//輸入發件人郵箱

emails will be sent from: [email protected]

who should the emails be sent to?

z***@gmail.com //輸入收件人郵箱

message-id to be used as in-reply-to for the first email?

for_test//隨便輸入乙個id

附:標準的patch格式

the canonical patch subject line is:

subject: [patch 001/123] subsystem: summary phrase

the canonical patch message body contains the following:

- a "from" line specifying the patch author.

- an empty line.

- the body of the explanation, which will be copied to the

permanent changelog to describe this patch.

- the "signed-off-by:" lines, described above, which will

also go in the changelog.

- a marker line containing simply "---".

- any additional comments not suitable for the changelog.

- the actual patch (diff output).

參考:

dede 提交表單 傳送郵件

第一步 要到dede後台設定好郵箱的資料,並且確定所用的郵箱開啟了smtp 第二步 找到 plus diy.php在 cce query insert into id ifcheck addvar values null,0 addvalue cce 下加入以下 cce mailtitle 提交表單...

MySQLdump備份並傳送郵件

概述 文件中使用smtp協議,利用qq郵箱傳送郵件,其中客戶端授權碼是在開啟qq郵箱smtp服務是官方給予的,所以要牢記!1 配置smtp linux yum install y mailx 修改配置檔案 vi etc mail.rc 在末尾追加如下內容並儲存 set from x qq.com 設...

如何利用git製作和提交patch

不過在git中,我們沒有必要直接使用diff和patch來做補丁,這樣做既危險又麻煩。git提供了兩種簡單的patch方案。一是用git diff生成的標準patch,二是git format patch生成的git專用patch 我們可以首先用git diff製作乙個patch。本文示例的工作目錄...