android git gerrit 一些基本概念和問題

如 http://source.android.com/source/downloading.html 所述,普通用戶可以下載android源代碼,總結一些基本概念和記錄一些不明白的問題。

GIT

git是源代碼版本管理系統,linux之父開發的,就像cvs/svn一樣,支持checkout, commit, branch, tag, merge等操作,也有很多圖形化git客戶端。http://wenku.baidu.com/view/e7784e4f2e3f5727a5e96254.html 這兒有本書貌似不錯。

REPO

repo是由google開發的,簡化git命令操作的命令行工具。

通過repo init -u git://android.git.kernel.org/platform/manifest.git 命令,我們可以知道,android.git.kernel.org是android的源代碼服務器,用於存放源代碼。在repo init後,需要用戶提供一個google account,只包含real name和email地址。這是爲了後續提交代碼時標識作者,或者review的人認爲代碼有問題,他可以和你聯繫。這跟svn checkout/commit需要用戶名密碼不一樣,因爲此時不需要輸入密碼就能下載源代碼。對於開源軟件來說,git這個特性不錯!

 

在repo sync下載android source code之後,根目錄下有個.repo目錄,而其它子目錄裏面則存有一堆.git目錄。所以簡單的理解,一條repo sync命令就是循環調用一堆git命令,像個批處理文件一樣。當然repo其它命令還有很多。

對於.repo目錄的具體解釋,請看這裏:http://mengxx.blog.51cto.com/2502718/685396

 

Gerrit

review.source.android.com用於review用戶提交的代碼。也就是說,用戶的代碼不會直接提交到android.git.kernel.org上面,而是先經過review服務器的檢查(一般是google的員工負責檢查)沒問題才提交,這個機制很好!review.source.android.com是基於gerrit的系統,gerrit也是Google開發的一個代碼評審web工具。 repo能給gerrit發命令。這麼一來,相當於提交時git server被gerrit包裝了一下,git client被repo包裝了一下,形成了android代碼開發貢獻的流程。review.source.android.com上面有更詳細的圖形化代碼管理流程解釋。

SSH

Gerrit 本身基於 SSH 協議實現,這樣就可以對 Git 數據推送進行更爲精確的控制,爲強制審覈的實現建立了基礎。Gerrit 提供的 Git 服務的端口並非標準的ssh 22 端口,缺省是 29418 端口。(此段話抄書)

同時,在提交代碼時,才需要涉及安全認證的問題,還是不需要把google account的密碼發給review服務器,既然有了ssh機制,引入密鑰。所謂的密鑰認證,實際上是使用一對加密字符串,一個稱爲公鑰(public key), 任何人都可以看到其內容,用於加密;另一個稱爲密鑰(private key),只有擁有者才能看到,用於解密。 通過公鑰加密過的密文使用密鑰可以輕鬆解密,但根據公鑰來猜測密鑰卻十分困難。ssh 的密鑰認證就是使用了這一特性。服務器和客戶端都各自擁有自己的公鑰和密鑰。(這句話轉載) 客戶端公鑰,客戶端密鑰,服務器公鑰,服務器密鑰四把鑰匙搞定安全通信。生成一對(公私)客戶端密鑰後,可以在多臺服務器複用,不用每臺服務器都生成。這個特性不錯。具體來說,生成客戶端密鑰叫.ssh/id_rsa,客戶端公鑰叫id_rsa.pub,服務器公鑰存在known_hosts裏面。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章