GitHub 上的 IPython#
注意
這完全複製自舊的 IPython wiki,目前正在開發中。本開發指南的許多資訊已過時。
GitHub 工作注意事項
里程碑#
所有已確認的問題都應有一個里程碑。
問題在沒有里程碑的情況下絕不應關閉。
所有拉取請求都應有一個里程碑。
所有已關閉的問題都應標記為下一個釋出里程碑、下一個向後移植里程碑或無操作。
只有在以下情況下,未解決的問題才可能沒有里程碑:
需要更多澄清(標籤:
needs-info
)
通常,將有四個里程碑包含未解決的問題
下一個次要版本。此里程碑包含應為下一個次要版本向後移植的問題。有關向後移植的資訊,請參見下文。
下一個主要版本。這應該是所有問題的預設里程碑。隨著釋出的臨近,問題可以明確地推遲到下一個版本 + 1。
下一個主要版本 + 1。只有我們確信不會包含在下一個版本中的問題才歸入此里程碑。此里程碑在釋出之前應基本為空。
願望清單。這是我們目前沒有計劃解決的問題的里程碑。
其餘的里程碑是針對不需要任何操作的已開啟或已關閉問題的無操作
並非實際問題(例如問題、討論等)
現有問題的副本
已關閉,因為我們不會修復它
當一個問題以無操作關閉時,這意味著該問題將不會被修復,或者它根本不是一個問題。
關閉問題時,它應始終具有以下里程碑之一:
下一個次要版本,因為問題已解決
下一個主要版本,因為問題已解決
無操作,因為問題將不會被解決,或者它是重複/非問題。
通常:如有疑問,請標記為下一個版本。當我們接近給定版本時,我們總是可以推遲。
標籤和問題#
問題一旦被確認,就應始終貼上標籤(對於仍在澄清或可能是重複或根本不是問題的問題,則不必要)。
一些重要的標籤
needs-info
:問題需要提交者提供更多資訊才能取得進展bug
:引發錯誤或發生意外行為enhancement
:非錯誤性的改進backport-X.Y.Z:此問題的任何修復都應向後移植到維護分支。向後移植以里程碑表示,從 2.1 開始。
prio-foo
:用於對問題進行排名的優先順序級別——非必要,但 prio-high/low 對於明確提升/降低問題很有用,尤其是在臨近釋出時。ClosedPR
:此問題是關於因過期而關閉的 PR 的提醒。sprint-friendly
:明顯或簡單的修復,其中
所有已確認的問題都應至少有一個bug
或enhancement
標籤,並標記有任何受影響的元件(例如parallel
、qtconsole
、htmlnotebook
),或特定的錯誤來源(例如py3k
或unicode
),如果我們有適當的標籤。
sprint-friendly
標籤可能是新貢獻者開始的最佳位置。
拉取請求#
所有工作都透過拉取請求提交。
只要有值得討論的程式碼,就可以提交拉取請求。拉取請求跟蹤分支,因此您可以在提交 PR 後繼續工作。審查和討論可以在工作完成之前很久就開始,討論越多越好。最壞的情況是 PR 被關閉。
已停滯的拉取請求應關閉(請參閱[[我們關於關閉 PR 的政策|開發:關閉拉取請求]])
拉取請求應始終針對主分支(向後移植 PR 在下面描述)。
拉取請求應在可行的情況下進行測試
錯誤修復應包括迴歸測試
新行為至少應進行最少程度的演練
Travis在測試IPython和拉取請求方面做得相當好,但手動執行測試可能更有意義(可能使用我們的test_pr
指令碼),特別是對於影響IPython.parallel
或Windows的PR。
開啟問題#
開啟新問題時,請採取以下步驟:
在GitHub和/或Google上搜索您的問題,以避免重複報告。對錯誤訊息進行關鍵詞搜尋最有用。
如果可能,請嘗試更新到主分支並重現您的問題,因為我們可能已經修復了它。
嘗試包含一個最小可重現的測試用例
包含相關的系統資訊。從以下輸出開始:
python -c "import IPython; print(IPython.sys_info())"
並根據問題包含任何相關的包版本,例如matplotlib、numpy、Qt、Qt繫結(PyQt/PySide)、tornado、網路瀏覽器等。
向後移植#
我們應該保留一個
A.x
維護分支,用於從主分支向後移植修復。該分支應稱為
A.x
,例如2.x
,而不是2.1
。這樣,每個釋出系列只有一個維護分支。當一個問題被確定適合向後移植時,應將其標記為
A.B
里程碑。任何解決向後移植問題的拉取請求也應獲得相同的里程碑。
補丁透過將拉取請求補丁應用於維護分支(目前使用backport_pr指令碼)向後移植到維護分支。