Friday, April 18, 2014

repo 的用法

資料來源: http://blog.csdn.net/free2o/article/details/3981588

  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 的狀態