Android的代碼同步repo

來源:互聯網
上載者:User

在工作中的經常使用repo命令,但是有時會忘記一些命令和遇到的一些問題,記錄下來方便已經查詢。

常見問題:

問題1:找不到命令:repo

方法:

在下載android源碼的時候用repo時提示找不到命令,可以用如下方法解決,在命令列中輸入如下兩行:
echo 'export PATH=$PATH:$Home/bin' >>~/.bashrc
export PATH=$PATH:$HOME/bin


問題2:

/home/xxxxxx/bin/repo: line 1: 在未預料的“newline”附近出現語法錯誤
/home/xxxxxx/bin/repo: line 1: `

方法【轉】:

1.安裝git

sudo apt-get install git-core

2.安裝curl

sudo apt-get install git-core curl

3.安裝repo, 通過curl下載repo

網上或者很多書籍上都是這樣寫的:

curl http://android.git.kernel.org/repo >~/bin/repo

結果得到的repo不能用,什麼301重新導向的,唉!悲催啊!後來在csdn上發了個貼子,大牛給解決啦!

http://code.google.com/p/git-repo/downloads/detail?name=repo-1.12這個連結提供下載repo!

也可以通過下面命令得到:

curl http://git-repo.googlecode.com/files/repo-1.12> ~/bin/repo

4.修改執行許可權

chmod a+x ~/bin/repo

5.修改~/bin/repo檔案將第五行

這一步又是容易出錯啊,哥就死在這裡很久啊!很多書籍或網站上都是這樣命令:

~/bin/repo init -ugit://android.git.kernel.org/platform/manifest.git

執行以後,等n久,結果出現讓你喜出望外的結果啊

error:Failed connect to code.google.com:443; Operation now inprogress while accessinghttps://code.google.com/p/git-repo//info/refs

網上大牛解決:修改~/bin/repo檔案將第五行

REPO_URL='https://code.google.com/p/git-repo/'

改為

REPO_URL='http://code.google.com/p/git-repo/'

6.然後向PATH中添加bin路徑:

export PATH=$PATH:~/bin

7.建立一個目錄,然後進入該目錄。

mkdir source

cd source

8.執行repo init -ugit://Androidgit.linaro.org/platform/manifest.git -bandroid-2.3.4_r1

這一步大概有一分多鐘就完成了。

9.修改.repo檔案

找到source目錄中的.repo下面的manifest.xml檔案,這是個隱藏檔案 ls -a才能看到

cd .repo

gedit manifest.xml

將fetch="git://Android.git.kernel.org/"

改為

fetch="git://Android.git.linaro.org/"

10.執行repo sync -j5

repo的常用命令:

  1. 下載 repo 的地址: http://android.git.kernel.org/repo ,可以用 wget http://android.git.kernel.org/repo 或者 curl http://android.git.kernel.org/repo >~/bin/repo 來下載 repo , chmod a+x ~/bin/repo
  2. 用repo sync 在抓去 android source code 的時候,會經常出現一些錯誤導致 repo sync 中斷,每次都要手動開始。 可以用如下的命令,來自動重複: $?=1; while [ $? -ne 0 ] ; do repo sync ; done
  3. repo help [ command ] , 顯示command 的詳細的協助資訊內容
  4. repo init -u URL , 在目前的目錄安裝 repository ,會在目前的目錄建立一個目錄 ".repo" -u 參數指定一個URL, 從這個URL 中取得repository 的 manifest 檔案。 repo init -u git://android.git.kernel.org/platform/manifest.git

    可以用 -m 參數來選擇 repository 中的某一個特定的 manifest 檔案,如果不具體指定,那麼表示為預設的 namifest 檔案 (default.xml) repo init -u git://android.git.kernel.org/platform/manifest.git -m dalvik-plus.xml

    可以用 -b 參數來指定某個manifest 分支。

    repo init -u git://android.git.kernel.org/platform/manifest.git -b release-1.0

    可以用命令: repo help init 來擷取 repo init 的其他用法

    4. repo sync [project-list]

    下載最新本地工作檔案,更新成功,這本地檔案和repository 中的代碼是一樣的。 可以指定需要更新的project , 如果不指定任何參數,會同步整個所有的項目。

    如果是第一次運行 repo sync , 則這個命令相當於 git clone ,會把 repository 中的所有內容都拷貝到本地。 如果不是第一次運行 repo sync , 則相當於 git remote update ; git rebase origin/branch . repo sync 會更新 .repo 下面的檔案。 如果在merge 的過程中出現衝突, 這需要手動運行 git rebase --continue

    5. repo update[ project-list ]

    上傳修改的代碼 ,如果你本地的代碼有所修改,那麼在運行 repo sync 的時候,會提示你上傳修改的代碼,所有修改的代碼分支會上傳到 Gerrit (基於web 的代碼review 系統), Gerrit 受到上傳的代碼,會轉換為一個個變更,從而可以讓人們來review 修改的代碼。

    6. repo diff [ project-list ]

    顯示提交的代碼和當前工作目錄代碼之間的差異。

    7. repo download target revision

    下載特定的修改版本到本地, 例如: repo download pltform/frameworks/base 1241 下載修改版本為 1241 的代碼

    8. repo start newbranchname

    建立新的branch分支。 "." 代表當前工作的branch 分支。

    9. repo prune [project list]

    刪除已經merge 的 project

    10. repo foreach [ project-lists] -c command

    對每一個 project 運行 command 命令

    11. repo status

    顯示 project 的狀態






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.