Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

提交補丁

本頁描述了向Android開放源代碼項目(AOSP)提交補丁的完整過程,包括使用Gerrit查看和跟踪更改。

先決條件

對於貢獻者

與服務器進行身份驗證

上傳到Gerrit之前,您需要建立一個密碼來識別您的服務器身份。請按照密碼生成器頁面上的說明進行操作。您只需要這樣做一次。有關其他詳細信息,請參見使用身份驗證

開始回購分支

對於您打算進行的每個更改,請在相關的Git存儲庫中啟動一個新分支:

repo start NAME .

您可以在同一存儲庫中同時啟動多個獨立分支。分支NAME在您的工作區中是本地的,不包含在Gerrit或最終的源代碼樹中。

做出改變

修改源文件(並請對其進行驗證)之後,將更改提交到本地存儲庫:

git add -A
git commit -s

在提交消息中提供有關更改的詳細說明。此描述已推送到公共AOSP存儲庫,因此請遵循以下準則來編寫變更列表描述:

  • 以單行摘要(最多50個字符)開頭,後跟空白行。 Git和Gerrit使用此格式進行各種顯示。

  • 從第三行開始,輸入一個較長的描述,該描述必須以不超過72個字符的格式進行自動換行。描述變更解決的問題以及解決的方式。第二部分在實現新功能時是可選的,儘管很理想。

  • 簡要說明任何假設或背景信息,這些假設或背景信息可能會在其他貢獻者使用此功能時很重要。

這是一個示例提交消息:

Short description on first line

More detailed description of your patch,
which is likely to take up multiple lines.

repo init期間提供的唯一更改ID以及您的姓名和電子郵件將自動添加到您的提交消息中。

上載到Gerrit

將更改提交到您的個人歷史記錄後,使用

repo upload

如果您在同一個存儲庫中啟動了多個分支,則係統會提示您選擇要上傳的分支。

成功上傳後,Repo為您提供Gerrit上新頁面的URL。訪問此鏈接可在審閱服務器上查看您的補丁程序,添加評論或請求您的補丁程序的特定審閱者。

上載替換補丁

假設審閱者查看了您的補丁程序並要求進行小的修改。您可以在Git中修改提交,這會在Gerrit上產生一個新補丁,其補丁ID與原始補丁相同。

git add -A
git commit --amend

當您上傳修改後的補丁時,它將替換Gerrit上和本地Git歷史記錄中的原始補丁。

解決同步衝突

如果其他補丁程序提交給與您的衝突的源樹,則需要在源存儲庫的新HEAD之上重新構建補丁程序。最簡單的方法是運行

repo sync

此命令首先從源服務器獲取更新,然後嘗試將您的HEAD自動重新建立到新的遠程HEAD

如果自動重新設置不成功,請執行手動重新設置。

repo rebase

使用git mergetool可能會幫助您處理重新設置衝突。成功合併衝突文件後,運行:

git rebase --continue

自動或手動重新設置基準完成後,運行repo upload來提交您的重新基準修補程序。

提交被批准後

提交通過審核和驗證過程後,Gerrit會自動將更改合併到公共存儲庫中。其他用戶可以運行repo sync以將更新拉入其本地客戶端。

上游項目

Android軟件管理中所述, Android使用了許多其他開源項目,例如Linux內核和WebKit。對於external/下的大多數項目,請在上游進行更改,然後將包含這些更改的新上游版本通知Android維護人員。上載使我們跟踪新上游發行版的補丁可能也很有用,儘管如果該項目在Android中廣泛使用(如下面提到的大多數較大版本),則很難進行更改,因為這些項目通常會隨著釋放。

仿生學是一種有趣的特殊情況。 BSD中有很多代碼,因此,除非更改是Bionic的新代碼,否則我們更喜歡上游修復,然後從適當的BSD中提取一個全新文件。

ICU4C

ICU-TC主頁上的external/icu4c上對ICU4C項目進行所有更改。有關更多信息,請參見提交ICU錯誤和功能請求

LLVM / Clang /編譯器-rt

LLVM編譯器基礎結構頁面上,對與LLVM相關的項目( external/clangexternal/compiler-rtexternal/llvm )進行所有更改。

mksh

讓所有更改在MirBSD Korn Shell程序項目external/mksh或者發送電子郵件至miros-mkshmirbsd.org域(無需訂閱提交有),或在啟動板

的OpenSSL

OpenSSL頁面上的external/openssl上對OpenSSL項目進行所有更改。

V8

將所有更改提交到V8問題頁面上的external/v8處的V8項目。有關詳細信息,請參見貢獻給V8

WebKit

WebKit頁面上的external/webkit上對WebKit項目進行所有更改。通過提交WebKit錯誤開始該過程。在錯誤中,僅當錯誤特定於Android時,才將Android用於“ 平台”和“ 操作系統”字段。在添加了建議的修復程序並包括測試之後,錯誤更有可能引起審閱者的注意。有關詳細信息,請參見向WebKit貢獻代碼

zlib

zlib主頁上的external/zlib對zlib項目進行所有更改。