Repo 的使用小結

2021-09-22 12:29:48 字數 3454 閱讀 1042

一、安裝

建立目錄和修改環境變數

$ mkdir ~/bin

$ path=~/bin:$path

$ curl  > ~/bin/repo

$ chmod a+x ~/bin/repo

二、幫助

repo help
查詢具體命令的幫助

repo help
repo 倉庫狀態

repo help init
狀態

repo status .
三、初始化

$ repo init -u
示例

$ mkdir working_directory

$ cd working_directory

repo init -u

這個命令會在當前資料夾建立乙個.repo資料夾,它包含

repo/: 其實是乙個repo的python原始碼

manifest.xml: 工作樹的主配置檔案,不要編輯這個檔案

projects/: 每個git工程的 .git結構

local_manifest.xml: 這個檔案不是repo建立的,你可以建立這個檔案來代替主配置檔案,也就是臨時測試用用

選項:-u: 指定manifest倉庫位址

-m: 選擇倉庫中某個manifest檔案,如果沒有設定,就使用default.xml

-b: 指定乙個分支或修正版本

四、拉**

repo sync

repo sync project0 project1 project2 ...

五、修改repo

如果你想修改repo的結構,應該在.repo/manifests資料夾裡面修改,然後用git命令提交

manifest.xml檔案結構:

<?xml version="1.0" encoding="utf-8"?>  

manifest

這個是配置的頂層元素,即根標誌

remote

name:在每乙個.git/config檔案的remote項中用到這個name,即表示每個git的遠端伺服器的名字(這個名字很關鍵,如果多個remote屬性的話,default屬性中需要指定default remote)。git pull、get fetch的時候會用到這個remote name。

alias :可以覆蓋之前定義的remote name,name必須是固定的,但是alias可以不同,可以用來指向不同的remote url

fetch :所有git url真正路徑的字首,所有git 的project name加上這個字首,就是git url的真正路徑

review :指定gerrit的伺服器名,用於repo upload操作。如果沒有指定,則repo upload沒有效果

default

設定所有projects的預設屬性值,如果在project元素裡沒有指定乙個屬性,則使用default元素的屬性值。

remote :遠端伺服器的名字(上面remote屬性中提到過,多個remote的時候需要指定default remote,就是這裡設定了)

revision :所有git的預設branch,後面project沒有特殊指出revision的話,就用這個branch

sync_j : 在repo sync中預設並行的數目

sync_c :如果設定為true,則只同步指定的分支(revision 屬性指定),而不是所有的ref內容

sync_s : 如果設定為true,則會同步git的子專案

include

通過name屬性可以引入另外乙個manifest檔案(路徑相對與當前的manifest.xml 的路徑)

name :另乙個需要匯入的manifest檔案名字

可以在當前的路徑下新增乙個another_manifest.xml,這樣可以在另乙個xml中新增或刪除project

remove-project

從內部的manifest表中刪除指定的project。經常用於本地的manifest檔案,使用者可以替換乙個project的定義

六、建立快照

你可以根據當前.repo的狀態來建立乙個配置檔案,配置檔案中會 以下這們的格式顯示出來。

repo manifest -o snapshot.xml -r
這個檔案可以用來儲存當前的工作狀態

恢復乙個快照,可以用下面的命令

cp snapshot.xml .repo/manifests/

repo init -m snapshot.xml

repo sync -d

注意:沒有commit的修改不會恢復,已經commit的但是沒有push的是可以恢復的,但只能從本地恢復。

七、切換分支

repo start branch_name project_name
檢視分支

repo branches
提交

repo upload
安全刪除不需要的分支

repo prune
八、基本工作流程

repo start開始乙個新的工作分支use to start a new topic branch.

git commit提交修改use git add to stage changes.

repo upload上傳修改

九、一些問題

如果repo長時間沒有響應,可以試試殺掉python程序

killall python
如果想要repo執行時的更多資訊,可以加上--trace選項

參考1.

參考2.

參考3.

參考4.

repo使用小結

可能出現的錯誤 fatal cannot get 如果出現這個錯誤 則unset下http 和https的 使用下面命令,具體版本號參考前面網頁中顯示的最新版本號。curl bin repo 修改執行許可權 chmod a x bin repo 本地建立乙個工程目錄,並進去 repo init u ...

repo的使用小結(一)

repo是android為了方便管理多個git庫而開發的python指令碼。repo的出現,並非為了取代git,而是為了讓android開發者更為有效的利用git。小型 很少會用到repo,單這次開發有幸用到了,小結一下。拉取 和git的流程幾乎一致 repo inite address 建立本地庫...

repo 基本使用

一 安裝 建立目錄和修改環境變數 mkdir bin path bin path curl bin repo chmod a x bin repo 二 幫助repo help查詢具體命令的幫助 repo help repo 倉庫狀態 repo help init狀態 repo status 三 初始...