Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 搭建自己的repo server極簡入門

搭建自己的repo server極簡入門

編輯:關於android開發

搭建自己的repo server極簡入門


這篇文章主要作為一個學習筆記,同時也希望可以幫助到其他有需要的朋友

首先感謝如下幾篇文章的指導:

http://blog.csdn.net/hansel/article/details/9798189
http://blog.csdn.net/lb5761311/article/details/47723455
http://bbs.mfunz.com/thread-1015705-1-1.html
http://blog.csdn.net/sunweizhong1024/article/details/8055372
http://blog.csdn.net/itleaks/article/details/30021395?utm_source=tuicool&utm_medium=referral


正文 -- repo完整安裝及項目同步


1. 下載repo bootstrap(repo的啟動文件,用於安裝完整的repo)

  1. git clone git://git.omapzoom.org/git-repo.git
clone完成後,repo bootstrap文件位於如下路徑:

  1. ./git-repo/repo


2. 安裝repo bootstrap

a. 創建本地repo

  1. mkdir ~/bin/
  2. cp ./git-repo/repo ~/bin/

b. 設置環境變量:

  1. vi ~/.profile
確保有如下三行

  1. if [ -d "$HOME/bin" ] ; then
  2. PATH="$HOME/bin:$PATH"
  3. fi

c. 使環境變量生效

  1. source ~/.profile
使bin路徑生效,以後可以直接命令行repo執行


3. patch repo bootstrap

  1. vi ~/bin/repo
按照如下diff做修改

  1. -- REPO_URL = 'https://gerrit.googlesource.com/git-repo'
  2. ++ REPO_URL = 'git://codeaurora.org/tools/repo.git'
這一步驟必須做,否則會在第4步時,出現如下log中repo URL下載超時的問題:

  1. fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
  2. fatal: error [Errno 101] Network is unreachable
超時是因為gerrit.googlesource.com被牆了


4. 創建項目manifest清單,repo會以manifest中的配置來同步項目

a. 在server上創建manifest.git空倉庫,在此以如下remote url地址為例:

  1. cd manifest.git
  2. git remote -v
  3. origin git:manifest (fetch)
  4. origin git:manifest (push)

b. 在客戶端上clone manifest倉庫

  1. git clone git:manifest

c. 創建default.xml文件,repo默認會以manifest倉庫的default.xml為配置文件

  1. cd manifest
  2. vi default.xml
輸入如下內容:



  1. fetch="git:"
  2. review="https://android-review.googlesource.com/" />
  3. remote="origin"
  4. sync-j="4" />




manifest配置分為三大部分:remote default 以及 project,分別進行講解

remote:
指代同步項目的一個server地址(可有多個remote)
name為一個唯一標識的名字
fetch為url的前綴,在我們的例子當中,倉庫路徑一概都是git:XXX,所以前綴就是"git:"
review暫時可以不予考慮,以例子中的為准

default:
指代同步項目使用的默認server配置:
revision指代git分支的名字
remote指代使用的remote server
sync-j表示同步項目時並行個數

project:
指代同步項目的git倉庫,這裡假設我們有一個git:test的倉庫(可以有多個)
name就是git倉庫名test
path就是設置倉庫存放在repo project的哪個目錄下,這裡就直接設置為存放在repo project子目錄的test中

d. 同步default.xml的修改至服務器

  1. git add default.xml
  2. git commit -m "udpate default.xml for repo sync test"
  3. git push origin master


5. 安裝完整版repo

a. 先創建並進入一個自定義目錄:

  1. mkdir test-project
  2. cd test-project

b. 執行如下repo命令,用於初始化repo,並且指定了mainfest項目清單

  1. repo init -u git:manifest

c. 執行完後,先會有如下log,這裡才是真正的clone了完整版的repo:

  1. Get git://codeaurora.org/tools/repo.git
  2. remote: Counting objects: 3425, done.
  3. remote: Total 3425 (delta 0), reused 0 (delta 0)
  4. Receiving objects: 100% (3425/3425), 753.71 KiB, done.
  5. Resolving deltas: 100% (2311/2311), done.
  6. From git://codeaurora.org/tools/repo
  7. * [new branch] aosp-new/maint -> origin/aosp-new/maint
  8. * [new branch] aosp-new/master -> origin/aosp-new/master
  9. * [new branch] aosp-new/stable -> origin/aosp-new/stable
  10. * [new branch] caf-stable -> origin/caf-stable
  11. * [new branch] master -> origin/master
  12. * [new branch] stable -> origin/stable
  13. * [new tag] v1.0 -> v1.0
  14. * [new tag] v1.0.1 -> v1.0.1
  15. ......
  16. Getting manifest ...
  17. from git:manifest
  18. remote: Counting objects: 18, done.
  19. remote: Compressing objects: 100% (16/16), done.
  20. remote: Total 18 (delta 4), reused 0 (delta 0)
  21. Unpacking objects: 100% (18/18), done.
  22. From git:manifest
  23. * [new branch] master -> origin/master

d. 接下來會要求初始化repo帳號信息,例子中與git保持一致,例如如下,中括號中的是git帳號信息,
在冒號後輸入與其一致的信息即可:

  1. Your Name [willqian]: willqian
  2. Your Email [[email protected]]: [email protected]
  3. Your identity is: willqian <[email protected]>
  4. is this correct [y/n]? y

e. 此時,目錄下會有一個隱藏文件夾.repo,完整版的repo位於路徑

  1. .repo/repo/


6. repo同步項目

a. 同步

  1. cd test-project
  2. repo sync
完成後,可以通過log看到,manifest項目清單中列出的test倉庫已clone完畢
我們進入到test倉庫中查看,發現有一個問題,此時處於no branch的狀態

  1. cd test
  2. git status
  3. # Not currently on any branch.
  4. nothing to commit (working directory clean)

b. 切到master分支上

  1. cd test-project
  2. repo start master --all
通過這個操作,我們再次進入到test倉庫中,看到已處於master分支上

  1. cd test
  2. git status
  3. # On branch master
  4. nothing to commit (working directory clean)


至此,repo的完整安裝以及項目同步的例子便以完成

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved