2007年7月19日 星期四

[文件] send-pr 的基本介紹

發信人: chinsan.bbs@bbs.ilc.edu.tw (我只是小小新手唷), 看板: FreeBSD
標 題: [文件] send-pr 的基本介紹
發信站: 山水蘭陽 (Sat Dec 3 23:01:26 2005)
轉信站: ptt!ctu-reader!news.nctu!ilcbbs


====== 授權方式 ======
姓名標示-非商業性-相同方式分享 2.5 (Attribution-NonCommercial-ShareAlike 2.5)
http://creativecommons.org/licenses/by-nc-sa/2.5/


====== 前言 ======
感謝 nung 大長輩在 MSN 上再次提醒了我的欠稿 XD
(本來答應要寫份關於 send-pr 的文件,結果寫的蠻簡陋)

如果沒有他的提醒,我可能一直都沒丟出這份文件..
此外,再次感謝他對我在 LDAP 上的教導 :)


====== send-pr 簡介 ======
/usr/bin/send-pr 這支 shell script在 *BSD 環境中相當好用,怎麼說呢?
它的應用範圍:
就 ports 而言,可以透過 send-pr 將做好的新 port 、送 patch
或是問題狀況回報總部。
當然囉.. www, docs, i386, ia64 等不同領域的問題也都可以透過 send-pr 來完成。

另外,還有其他方式的 send-pr
www介面的 send-pr
http://www.freebsd.org/send-pr.html

圖形介面的 send-pr
sysutils/gtk-send-pr

當然,也可以複製一份 shell script,然後修改成自己想要的方式。


====== send-pr 使用 ======
send-pr 會先用你的 $EDITOR 進入PR樣本來編輯,通常會有下面這樣

(略過前面一堆東西,先從 header 介紹起)
To: FreeBSD-gnats-submit@freebsd.org

From: chinsan
Reply-To: chinsan
通常發信的 From 跟 Reply-To 都填一樣就好,
前面是名字,後面先加空白,再把 <> 括號內填入可收信的 e-mail
(這裡純舉例,不要真的填 chinsan =.=!)
Cc:
如果 port 有 maintainer 的話,則順便這邊填上他的 email
也可以用 send-pr -c 該maintainer的 e-mail

X-send-pr-version: 3.113
X-GNATS-Notify:

(以下開始進入 send-pr 的 body)
>Submitter-Id: current-users
>Originator: chinsan
^^^^^^^ 填自己名字或全名。

>Organization:
看要不要填『單位』,有填沒填無所謂
也可以設定 $ORGANIZATION 省得每次填 send-pr 要重填一次
另外,
1. 用 <> 括號括起來的文字都是那欄資料的描述文字,
2. 真正要寫的部分,不要寫在 <> 括號內,
<> 括號內的字只是說明給自己看而已
3. <> 括號跟裡面的文字都可以砍掉,或不砍都可以
4. 通常可不可以填多行會有註明 (multiple lines)
而 (one line) 就是只能寫一行。
5. 以下所有出現 <> 括號的地方都是該欄的說明文字,
請不要把字填在 <> 括號內。

>Confidential: no
^^ 通常用 no 就可以了,也就是公開的

註:
除非你找到重大漏洞,在該重大漏洞獲得解決前,
有需要用到"保密",以免他人一起遭殃

>Synopsis:
這邊就是該問題報告的『標題』,
標題要下得簡潔有力,並且請填 1 行就好。
似乎很多人都會先看這邊寫什麼,如果亂填一通或是文不對題
那就會被人連看都不看就 close 掉。

通常像是 ports 的話,Synopsis 會以類似下面的命名規則:
[性質] 分類/該 port 名稱: 簡潔描述本 PR 內容、目的
性質:通常有 [NEW PORT]、[PATCH]、[UPDATE]、[MAINTAINER]等等
分類:該 port 位於 /usr/ports 內的分類目錄名稱,
比如 gcin 位於 /usr/ports/chinese/gcin ,
所以就是 chinese

>Severity: 請在 non-critical 或 serious 或 critical 三者選一
看問題嚴重性,通常都是 non-critical,
如果不嚴重卻填很緊急(critical),那就蠻 xxoo...

>Priority: 請在 low 或 medium 或 high 三者選一
問題的處理態度是否需要優先或普通或不急慢慢來,
通常無關 security 的小 bug、update 填 low 就好。

>Category: 問題有下面這幾種分類:
advocacy, alpha, amd64, bin, conf, docs, gnu, i386, ia64,
java, kern, misc, ports, powerpc, sparc64, standards,
threads, www
通常 ports 的問題就填 ports 就好,
www 類的就填 www。kernel 類的填 kern,自己找適合的問題歸類就好

>Class: <[sw-bug|doc-bug|change-request|update|maintainer-updae]>
以 ports 方面的 PR 為例:ports 的安裝問題通常填 sw-bug
升級 update
新增/移除 change-request
port maintainer 自己提的就填 maintainer-update

>Release: FreeBSD 4.11-STABLE i386
這邊是 send-pr 自動幫你產生的(uname -rsm),不用改

>Environment:
System: FreeBSD bbs.ilc.edu.tw 4.11-STABLE FreeBSD 4.11-STABLE #0: Sat Jan 29
這邊也是會自動抓 uname -a 的訊息,
如果要補充使用環境也可以在這邊填(可多行)

>Description:
請精準描述問題狀況,把問題講清楚、說明白,並把相關所有出現的訊息附上

>How-To-Repeat:
這邊附上如何讓問題重新產生(操作程序、執行動作),也可把相關疑似有問題
的程式碼貼出來

>Fix:
如果知道怎麼修正的話,就在這邊可填上說明或程式碼。
不知道就請跳過。
如果有 patch 的話,請用 attatchment 附檔方式,
也就是 send-pr -a 你放patch的地方,這樣 send-pr 的 Fix: 這區
就會幫你弄好了

* * *
FreBSD PR 的 feedback 期限是 1 個月
maintainer feedback 期限是 2 週
reply,followup 要順便 CC 給 bug-followup@freebsd.org

* * *

此外如果不太會傳統的 send-pr 或者機器 policy 不開 MTA
也有網頁式介面 http://www.freebsd.org/send-pr.html
不過若用網頁回報方式,它不會認 TAB 跟 spacing 的區別而都弄成 spacing
如果堅持要用 Web 來送 code 的話,那麼建議先壓成檔案,然後附上可取得該檔的 URL
還有,最下方有個防止惡搞機器人的簡易確認機制。


* * *

send-pr 之後就會在你填的 Originator 那欄的 Email Address 收到確認信
會有如下資料,告知 GNAT 已經收到了,而你的 PR 編號為 ports/78996
可以透過信中 URL 來察看狀態

來源: FreeBSD-gnats-submit@FreeBSD.org
收信: chinsan
日期: Fri, 18 Mar 2005 20:10:02 GMT
標題: Re: ports/78996: [MAINTAINER] chinese/gcin: update to 0.8.9

Thank you very much for your problem report.
It has the internal identification `ports/78996'.
The individual assigned to look at your
report is: freebsd-ports-bugs.

You can access the state of your problem report at any time
via this link:

http://www.freebsd.org/cgi/query-pr.cgi?pr=78996

>Category: ports
>Responsible: freebsd-ports-bugs
>Synopsis: [MAINTAINER] chinese/gcin: update to 0.8.9
>Arrival-Date: Fri Mar 18 20:10:02 GMT 2005


====== send-pr 補充事宜 ======
FreBSD PR 的 feedback 期限是 1 個月
maintainer feedback 期限是 2 週
reply,followup 要順便 CC 給 bug-followup@freebsd.org


====== send-pr 的另外一種運用方式 : send-pr + ssmtp ======

如果機器沒反向DNS解析的話...該怎麼辦呢?

因為垃圾郵件太多,FreeBSD 的 mailing list 主機做了些限制:
一定要從可以做反向DNS解析(具 RDNS record)的機器發出的信才接收。

這部分請參考 dryice 的 send-pr + ssmtp 解法:
http://www.douzhe.com/docs/jh/5/231360.html


====== patch檔 跟 new port 的 shar 檔 如何產生? ======

- diff/patch 篇: 大致以 "diff -ruN 舊 新"產生

- shar 的時機: 通常是 new port (要新增port)才會用到的
指令類似:
shar `find 該port的目錄 -print` > /path/to/your.shar

我自己作法通常都是像這樣:
shar `find dokuwiki -print` > ~/dokuwiki.shar
send-pr -a ~/dokuwiki.shar -c 長輩的e-mail

關於 diff/patch 以及 shar ,將在日後的 Porter Handbook 中譯有進一步解說


==
以上是我之前 send-pr 的經驗啦 :p
可參考 http://tinyurl.com/6j2kg
aka http://www.freebsd.org/doc/en_US.ISO8859-1/articles/
problem-reports/article.html

不知道有沒有其他長輩要補充? :Q


--
靜中見真境,淡中識本然
--
◢◣ - ● -
◢██◣◢◣ ` Origin: 宜蘭資教.山水蘭陽 telnet://yilan.twbbs.org
~~ ﹌ ~﹌ ﹉ From : 220-135-110-151.HINET-IP.hinet.net

沒有留言: