高通的Android JellyBean庫已經建立完成,目前已經可以正常訪問,可以正常提交。
Repo獲取代碼注意:
1. 首先應有一個repo腳本,並將腳本放到環境變量里,此腳本的配置方法
a) 進入用戶主目錄
b) git clone git@172.16.98.152:git-repo.git
c) mkdir ~/bin
d) 拷貝repo工具:cp ~/git-repo/repo ~/bin
e) 添加環境變量:vi ~/.bashrc 在最后加入PATH=$PATH:~/bin
f) 重新進入shell或者執行 source ~/.bashrc,OK
2. 添加gitserver和gerrit的ssh host名稱和添加gerrit 的http host名稱
a) vi ~/.ssh/config
b) 在文件中加入如下:
host gitserver
hostname 172.16.98.152
user git
port 22
host gerrit
hostname 172.16.98.152
user zan.wang
port 29418
如果有些同學已經加過了,略過此步驟,不加入,會無法解析manifest文件中的remote url,詳細查看i800JB.xml文件。
c) sudo vi /etc/hosts
d) 在文件中加入:
172.16.98.152 gerrit
如果不加入則無法解析在manifest文件中的review url,詳細請查看i800JB.xml文件。
3. 創建repo工作目錄,並同步代碼
a) mkdir ~/work/i800JB && cd ~/work/i800JB
b) repo init -u gitserver:manifests.git -m i800JB.xml
c) repo sync -j8 (最好不要太多會死機)
4. 編譯代碼
a) 遠程同步下來的代碼是沒有分支的,用repo branch會顯示no branch
b) 遠程的代碼目前建立了一個i800JB的分支,本地創建的分支盡量和遠程項目分支同名,就好比我們之前操作的git一樣。
c) 創建本地工作分支用 repo start i800JB --all
d) 此時用repo branch會出現你剛才建立的分支
e) . build/envsetup.sh
f) choosecombo 選擇1.release 2.msm8625(后續如果有其他相應device,請依據項目選擇) 3.eng(暫時選擇eng)
g) make -j4
5. 提交和上傳代碼
a) 如果本地有代碼修改,需要提交,請到相應的工作目錄,按照git的commit方式提交,上傳的時候才需要用到repo
b) 如果改動的工程較多,建議用repo stage命令來增加文件的track動作,但是提交就要到相應的目錄里面老老實實的用git commit來提交了。
c) Repo upload 命令在上傳代碼時,僅是上傳到gerrit,還需要進行review后才會在代碼庫中體現。格式為 repo upload --re=zan.wang kernel。這里的kernel為project名稱。這里的--re添加review人員命令,我試過是無效的,不知道是否是本地服務器有問題。Upload過程根據屏幕提示,確認幾次。成功后,到172.16.99.44:8080 gerrit服務器添加審核人員。
d) 如果遠程的git庫有可寫權限,也可以在每個project下面用git進行提交,不過目前僅是可讀權限,如果個別人員開放了寫權限,可以進行此操作,和單獨操作git庫無異。
e) 目前i800JB項目的remote名稱為phicomm,可以查看在manifests庫里面的i800JB.xml文件。用git上傳某個project的修改時需注意這里的remote為phicomm,而非origin。
6. Repo使用介紹
a) repo是一個用來管理多個git庫的工具
b) 在repo中,每一個git庫都稱為一個project
c) repo list 可以查看repo所管理的projects,目前project的名稱是和所在路徑是同名的
d) repo status 可以查看本地修改的文件
e) repo branch 可以查看每一個project所有的分支名稱
f) repo start 創建本地的工作分支,比如:repo start 分支名 --all為所有project創建分支,repo start 分支名 kernel 為kernel project創建分支名
g) repo abandon 刪除分支,用法和start差不多。比如:已經為kernel project創建了i800JB分支,用repo abandon i800JB kernel 命令,可以刪除kernel project中的i800JB分支。如果執行repo abandon i800JB --all就會刪除所有project上面名字為i800JB的分支。執行完repo abandon后,project會工作在no branch狀態,還需手工start一個分支。
h) repo forall 為所有project執行命令。比如:repo forall -c git tag XXXX_XXX_V1.0_SH 代表為每一個project加入tag
i) repo init 初始化repo庫,-u 代表url,-b代表branch,-m 代表manifest文件。比如:repo init -u gitserver:manifests.git -m i800JB.xml 代表的是從gitserver服務器上的manifests.git庫中,選擇i800JB.xml作為manifest文件。
這里沒有-b,是由於目前所建立的manifests.git庫中,僅有一個master分支。沒有-b選項,默認是從manifests.git庫的HEAD指針處取得manifest文件
如果沒有-m選項,則代表使用的默認的manifest文件,默認的文件名稱為default.xml
j) repo overview 查看project里面沒有提交的記錄。
k) repo upload 的時候,請用repo upload --re=REVIEW人員(比如zan.wang),系統會自動發郵件告知REVIEW人員,我試過是無效的,不知是否是本地gerrit服務器的問題。
4.1代碼庫升級2050版本完成,Android 版本變為4.1.2,可以編譯通過,可以開機,可以上網,可以打電話等。
本次服務器分支i800JB-2050的建立不再基於高通的tag來建立了,是基於本地tag i800JB-2050-begin 來建立,因此各位同事請大膽sync,不會再出現因高通修改tag位置而導致的編譯不過問題了。
請大家按照以下方式更新:
1. repo init -m i800JB-2050.xml (如果是新建目錄,repo init -u gitserver:manifests.git -m i800JB-2050.xml)
2. repo sync
3. sync過程中有可能會出現類似error: device/qcom/msm7627a/: branch i800JB is published (but not merged) and is now 28 commits behind 的提示,請忽略它。
4. 更新完成后,repo start i800JB-2050 --all
5. 如果本地有修改,即modified,added狀態的文件,在start新分支時會報錯,請提交或者還原他們。部分untracked的文件不受影響。
6. . build/envsetup.sh
7. choosecomboext 0,1,9,1 (default,release,msm8625,user)
8. make -j4
9.
