貢獻者授權協議 (CLA)
您需要提交個人檔案,我們才能接受程式碼修補程式 或企業協作者授權協議 (CLA):
請依上述其中一個連結,存取適當的 CLA 和 有關如何簽署及退貨的說明。收到後,我們就能將你新增到 正式加入貢獻者名單
修補程式提交總覽
如要為這項專案提供程式碼,請按照下列一般步驟操作:
- 按照上述方式簽署《貢獻者授權協議》。
- 加入我們的討論群組。
- 設定開發環境。
- 將每個變更集與問題 (錯誤報告或功能) 建立關聯 要求),以使用 GitHub 的 Issue Tracker。如果沒有問題,請建立新的問題,然後指派給自己。
- 查看程式碼,在 codereview.appspot.com 上建立新問題,並完成程式碼審查程序。以下提供所有程序的詳細操作說明。
- 程式碼經過審查且經過核准後,請提交程式碼。如果您不是正式的貢獻者,則會將變更集擷取到官方存放區。
我們會使用下列工具和程序:
- 我們使用 Git 做為版本管控系統。
- 我們使用 Maven 做為建構系統,以及 二進制發布系統
- 我們使用 codereview.appspot.com 編寫程式碼 評論。(但請注意,在 codereview.appspot.com 工具中,「問題」一詞 是指程式碼審查要求;在 GitHub Issue Tracker 中,我們會提供「問題」是 功能要求或錯誤報告)。
如果您是 Eclipse 開發人員,請使用專案專屬的程式碼格式 ,並由 Eclipse 自動處理。
設定開發環境
必要條件
- 安裝 Java 6。你可能需要設定
JAVA_HOME
變數。 - 安裝 Maven。(本文件) 假設您已熟悉 Maven 指令)。
- 選用:安裝 Android SDK 並將 ANDROID_HOME 變數設為 Android 的安裝位置。
- 安裝 Git。
設定 Git
使用 git config
指令設定預設顯示名稱和電子郵件地址:
git config --global user.name "YOUR NAME" git config --global user.email "YOUR EMAIL ADDRESS"
透過 Git 使用 GitHub 進行驗證
要在 GitHub 查看程式碼,您必須使用 您就能使用 HTTP 或 SSH繼續 請參閱下列 GitHub 操作說明 操作說明,瞭解如何取得 開頭為 HTTPS 或 SSH 複製如要進一步瞭解 Git 一般來說,Pro Git 是不錯的資源。
簽出程式碼
使用 HTTPS
如要查看程式庫存放區,請前往開發「主要執行個體」分支版本 執行下列指令:
git clone https://github.com/google/google-api-java-client.git
使用 SSH
如要查看程式庫存放區,請前往開發「主要執行個體」分支版本, 廠區 確定 擁有 GitHub 存放區的寫入權限,然後執行下列指令:
git clone git@github.com:google/google-api-java-client.git
如要切換至替代分支版本,例如 1.12,請按照下列步驟操作:
git checkout --track origin/1.12
如何切換回主要分支版本:
git checkout master
從 GitHub 存放區提取最新變更,並更新本機 遷移至最新修訂版本:
git pull
Maven
安裝 Google Play 服務
首次設定專案時,您需要 google-play-services.jar 檔案。步驟如下:
- 啟動 Eclipse 並選取 Window >Android SDK Manager,或執行
android
建立虛擬機器 - 捲動至套件清單底部,然後選取額外項目 >Google Play 服務。
mvn install:install-file \ -Dfile=$ANDROID_HOME/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar \ -DgroupId=com.google.android.google-play-services \ -DartifactId=google-play-services \ -Dversion=1 \ -Dpackaging=jar
編譯專案
mvn clean install
Maven 會將已編譯的二進位檔安裝到本機存放區 (例如 ~/.m2/repository)。系統會在擷取前搜尋該存放區中的二進位檔 從 Maven 中央存放區選取
注意: 此程式庫依附於 google-http-java-client 和 google-oauth-java-client。 處理所有三個尚未發布的新版本時 才能遷移至 Maven 中央,您必須按照下列順序編譯這些程式碼:
- google-http-java-client
- google-oauth-java-client
- google-api-java-client 依此順序編譯,確保 Maven 會從 依附元件程式庫編譯
程式碼審查程序
下載 upload.py 指令碼
下載 upload.py 指令碼 並視需要新增到 PATH 中
首次執行 upload.py
時,系統會要求你提供
應用程式專用密碼:
Email (login for uploading to codereview.appspot.com): your_email_address@yourdomain.com Password for your_email_address@yourdomain.com:
準備審查程式碼
將程式碼送審前,必須先執行 Clirr 回溯 相容性問題如果回報任何錯誤,請 請修正錯誤,或更新 clirr-ignored-differences.xml 檔案。
mvn -q clirr:check
此外,您也必須執行 FindBugs 工具,找出程式碼中的錯誤。如果發生錯誤 ,您必須修正錯誤或更新 findbugs-排除.xml 檔案。(請注意,FindBugs 的速度很慢)。
mvn findbugs:check
變更內容通過所有測試後,請將變更新增至索引 (Git 暫存器) 區域):
git add .
仔細檢查您新增、修改或刪除的所有檔案 索引中:
git status
在 git status
輸出內容中,查看「Changes to beCommit」(要修訂的變更) 部分。
開始程式碼審查
準備好進行審查時,請在 codereview.appspot.com 上建立新問題:
upload.py --rev=HEAD --base_url=https://github.com/google/google-api-java-client --send_mail -r reviewer@somedomain --cc ...
完成其他變更後,請分階段進行新的變更。如何上傳新的修補程式 例如,如要發出編號 123456,請執行下列指令:
upload.py --rev=HEAD -i 123456
如需更多選項,請執行 upload.py --help
。
如果您偏好使用傳統的 GitHub 工作流程 你可能已經叉路 GitHub 存放區並為這項新功能或錯誤修正建立分支版本。當您 傳送驗證碼 審查自己的分支要求,請確認您的分支與 管理上游存放區詳情請參閱 GitHub 說明 瞭解如何同步處理分支。
您也能在本機修訂的變更集使用 upload.py。
upload.py --rev=upstream/master:HEAD --base_url=https://github.com/google/google-api-java-client --send_mail -r reviewer@somedomain --cc ...
程式碼審查人員
如果您是程式碼審查人員,請先匯入並測試變更集,再加以核准。 然後修訂變更集並推送至遠端存放區
匯入變更集
如要及早找出錯誤,請務必從遠端提取最新變更 複製到工作樹狀結構中請確認您的工作樹乾淨無髒汙, 您的索引是空的
如何從遠端存放區提取及合併最新的修訂版本:
git pull
如何查看工作樹狀結構和索引的內容:
git status
如何將修補程式匯入本機 Git 本機副本:
- 在 codereview.appspot.com 中開啟問題。
- 找到相關修補程式,請找到「下載原始檔案」右上方 修補程式規格
- 按一下「原始」以取得要匯入檔案的網址。
- 將原始 diff 檔案儲存到本機電腦,檔案名稱如下: issue123456.diff。
- 前往本機 Git 工作樹狀結構,並使用
patch
套用差異比較 指令:
patch -p1 < issue123456.diff
如要再次檢查是否已匯入正確的差異比較,請執行 git diff
。
測試變更集
如要執行測試並安裝,請使用下列指令:
mvn clean install checkstyle:check
在 codereview.appspot.com 上核准變更集
一般來說,程式碼必須等到程式碼審查人員才能推送至 GitHub 存放區 確認程式碼已就緒這時,慣例是 並顯示「LGTM」訊息(看起來不錯)。
修訂程式碼
重要事項:在您修訂程式碼之前,請將最新的變更提取到 將工作樹狀結構更新為 GitHub 的最新修訂版本 存放區:
git pull
如有任何衝突,請解決衝突,確保讓所有測試都能 重返中途
如何修訂程式碼的 locally:
git commit
輸入如下方所示的訊息 (假設您要修正或導入這些設定) 問題 # 123,如 GitHub 所列 Issue Tracker):
#123: NullPointerException when passing null to processFoo() http://codereview.appspot.com/123456/
在第一個冒號和說明之前:
- 如果「Issue Tracker」的問題修正了,請提供問題編號 (如圖所示)。
- 如果是特定分支版本的變更,請加入分支版本號碼。
- 您將成為此承諾的
committer
,但請註明 方法是將變更的作者標示為author
(--author=<author>
)。
在說明後方,請務必在程式碼審查頁面中附上該問題的連結 網站。這個連結很重要 因為沒有連結,使用者就很難 掌握與修訂版本相關的程式碼審查流程 保持討論歷程
如何將變更推送至 GitHub 存放區:
git push
如果您在 git push
期間收到更新遭拒的錯誤訊息 (
您忘記執行 git pull
) 時,如要與最新變更和
將變更推送至遠端存放區:
git pull git commit git push
結案
請記得在程式碼審查工具中關閉問題。步驟如下:
- 在 codereview.appspot.com 中選取問題。
- 按一下「X」位於左上角的「Id」前方
取消修補變更集
如果您因為某些原因決定不提交已匯入的變更集,請使用 才能刪除該資料集注意:實際的本機變更會自動清除。
git checkout -- .