Repo 的使用入門

一崩掘、安裝

創(chuàng)建目錄和修改環(huán)境變量

$ mkdir ~/bin
$ PATH=~/bin:$PATH

下載repo代碼

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

二、幫助

repo help

查詢具體命令的幫助

repo help <COMMAND>

Repo 倉庫狀態(tài)

repo help init

狀態(tài)

repo status .

三惩激、初始化

$ repo init -u <URL> [<OPTIONS>]

示例

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

repo init -u https://android.googlesource.com/platform/manifest

這個命令會在當前文件夾創(chuàng)建一個 .repo 文件夾店煞,它包含

1.png

repo/ : 其實是一個repo的python源碼
manifest.xml : 工作樹的主配置文件,不要編輯這個文件
projects/ : 每個git工程的 .git結(jié)構(gòu)
local_manifest.xml : 這個文件不是repo創(chuàng)建的风钻,你可以創(chuàng)建這個文件來代替主配置文件顷蟀,也就是臨時測試用用

選項:

-u: 指定manifest倉庫地址
-m: 選擇倉庫中某個manifest文件,如果沒有設(shè)置骡技,就使用default.xml
-b: 指定一個分支或修正版本

四鸣个、拉代碼

repo sync

repo sync PROJECT0 PROJECT1 PROJECT2 ...

選項:
-j <numbers>: 多任務(wù),一般8核心可以開到16任務(wù),過多會起反作用
-c: 只下載當前分支代碼
-d: 讓工程回退到manifest指定的版本
-f: 如果某個工程同步失敗布朦,繼續(xù)同步

五囤萤、修改repo

如果你想修改repo的結(jié)構(gòu),應(yīng)該在 .repo/manifests 文件夾里面修改是趴,然后用git命令提交

manifest.xml 文件結(jié)構(gòu):

<?xml version="1.0" encoding="UTF-8"?>  
<manifest>  

  <remote  name="shift"  
           fetch="git://git.mygit.com/" />  
  <default revision="kk-shift"  
           remote="shift"  
           sync-j="1" />  

  <project path="packages/shift/VideoPlayer" name="platform/packages/shift/VideoPlayer" />  
  <include name="another_manifest.xml" />
</manifest>  
  1. manifest
    這個是配置的頂層元素涛舍,即根標志

  2. remote
    name:在每一個.git/config文件的remote項中用到這個name,即表示每個git的遠程服務(wù)器的名字(這個名字很關(guān)鍵唆途,如果多個remote屬性的話富雅,default屬性中需要指定default remote)。git pull肛搬、get fetch的時候會用到這個remote name没佑。
    alias :可以覆蓋之前定義的remote name,name必須是固定的滚婉,但是alias可以不同图筹,可以用來指向不同的remote url
    fetch :所有g(shù)it url真正路徑的前綴,所有g(shù)it 的project name加上這個前綴,就是git url的真正路徑
    review :指定Gerrit的服務(wù)器名远剩,用于repo upload操作扣溺。如果沒有指定,則repo upload沒有效果

  3. default
    設(shè)定所有projects的默認屬性值瓜晤,如果在project元素里沒有指定一個屬性锥余,則使用default元素的屬性值。
    remote :遠程服務(wù)器的名字(上面remote屬性中提到過痢掠,多個remote的時候需要指定default remote驱犹,就是這里設(shè)置了)
    revision :所有g(shù)it的默認branch,后面project沒有特殊指出revision的話足画,就用這個branch
    sync_j : 在repo sync中默認并行的數(shù)目
    sync_c :如果設(shè)置為true雄驹,則只同步指定的分支(revision 屬性指定),而不是所有的ref內(nèi)容
    sync_s : 如果設(shè)置為true淹辞,則會同步git的子項目

  4. manifest-server
    它的url屬性用于指定manifest服務(wù)的URL医舆,通常是一個XML RPC 服務(wù)
    它要支持一下RPC方法:
    GetApprovedManifest(branch, target) :返回一個manifest用于指示所有projects的分支和編譯目標。
    target參數(shù)來自環(huán)境變量TARGET_PRODUCT和TARGET_BUILD_VARIANT象缀,組成$TARGET_PRODUCT-$TARGET_BUILD_VARIANT
    GetManifest(tag) :返回指定tag的manifest

  5. project
    需要clone的單獨git
    name :git 的名稱蔬将,用于生成git url。URL格式是:${remote fetch}/${project name}.git 其中的 fetch就是上面提到的remote 中的fetch元素央星,name 就是此處的name
    path :clone到本地的git的工作目錄霞怀,如果沒有配置的話,跟name一樣
    remote :定義remote name莉给,如果沒有定義的話就用default中定義的remote name
    revision :指定需要獲取的git提交點毙石,可以定義成固定的branch,或者是明確的commit 哈希值
    groups :列出project所屬的組禁谦,以空格或者逗號分隔多個組名胁黑。所有的project都自動屬于"all"組废封。每一個project自動屬于
    name:'name' 和path:'path'組州泊。例如<project name="monkeys" path="barrel-of"/>,它自動屬于default, name:monkeys, and path:barrel-of組漂洋。如果一個project屬于notdefault組遥皂,則,repo sync時不會下載
    sync_c :如果設(shè)置為true刽漂,則只同步指定的分支(revision 屬性指定)演训,而不是所有的ref內(nèi)容。
    sync_s : 如果設(shè)置為true贝咙,則會同步git的子項目
    upstream :在哪個git分支可以找到一個SHA1样悟。用于同步revision鎖定的manifest(-c 模式)。該模式可以避免同步整個ref空間
    annotation :可以有0個或多個annotation,格式是name-value窟她,repo forall命令是會用來定義環(huán)境變量

  6. include
    通過name屬性可以引入另外一個manifest文件(路徑相對與當前的manifest.xml 的路徑)
    name :另一個需要導(dǎo)入的manifest文件名字
    可以在當前的路徑下添加一個another_manifest.xml陈症,這樣可以在另一個xml中添加或刪除project

  7. remove-project
    從內(nèi)部的manifest表中刪除指定的project。經(jīng)常用于本地的manifest文件震糖,用戶可以替換一個project的定義

六录肯、創(chuàng)建快照

你可以根據(jù)當前.repo的狀態(tài)來創(chuàng)建一個配置文件

repo manifest -o snapshot.xml -r

這個文件可以用來保存當前的工作狀態(tài)

恢復(fù)一個快照,可以用下面的命令

cp snapshot.xml .repo/manifests/
repo init -m snapshot.xml
repo sync -d

注意:沒有commit的修改不會恢復(fù)吊说,已經(jīng)commit的但是沒有push的是可以恢復(fù)的论咏,但只能從本地恢復(fù)。

七颁井、切換分支

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上傳修改

2

九、一些問題

如果repo長時間沒有響應(yīng)雅宾,可以試試殺掉python進程

killall python

如果想要repo執(zhí)行時的更多信息卦溢,可以加上 --trace 選項

參考1.http://xda-university.com/as-a-developer/repo-tips-tricks
參考2.https://source.android.com/source/using-repo
參考3.https://source.android.com/source/developing
參考4.http://blog.csdn.net/shift_wwx/article/details/19557031

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市秀又,隨后出現(xiàn)的幾起案子单寂,更是在濱河造成了極大的恐慌,老刑警劉巖吐辙,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宣决,死亡現(xiàn)場離奇詭異,居然都是意外死亡昏苏,警方通過查閱死者的電腦和手機尊沸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贤惯,“玉大人洼专,你說我怎么就攤上這事》豕梗” “怎么了屁商?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長颈墅。 經(jīng)常有香客問我蜡镶,道長,這世上最難降的妖魔是什么恤筛? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任官还,我火速辦了婚禮,結(jié)果婚禮上毒坛,老公的妹妹穿的比我還像新娘望伦。我一直安慰自己林说,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布屯伞。 她就那樣靜靜地躺著述么,像睡著了一般。 火紅的嫁衣襯著肌膚如雪愕掏。 梳的紋絲不亂的頭發(fā)上度秘,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音饵撑,去河邊找鬼剑梳。 笑死,一個胖子當著我的面吹牛滑潘,可吹牛的內(nèi)容都是我干的垢乙。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼语卤,長吁一口氣:“原來是場噩夢啊……” “哼追逮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粹舵,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤钮孵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后眼滤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體巴席,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年诅需,在試婚紗的時候發(fā)現(xiàn)自己被綠了漾唉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡堰塌,死狀恐怖赵刑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情场刑,我是刑警寧澤般此,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站摇邦,受9級特大地震影響恤煞,放射性物質(zhì)發(fā)生泄漏屎勘。R本人自食惡果不足惜施籍,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望概漱。 院中可真熱鬧丑慎,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至腻异,卻和暖如春进副,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悔常。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工影斑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人机打。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓矫户,卻偏偏與公主長得像,于是被迫代替她去往敵國和親残邀。 傳聞我的和親對象是個殘疾皇子皆辽,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)芥挣,斷路器驱闷,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 本文作者陳云峰,轉(zhuǎn)載請注明空免。 這篇文章記錄個人常用的一些命令遗嗽,和記不住的一些命令,轉(zhuǎn)載了并不斷更新鼓蜒。 Git官網(wǎng) ...
    陳云峰閱讀 2,807評論 0 24
  • 哪有什么酒的故事 HI,喝的吆五喝六的小伙伴們 之前說好幫你組一個酒柜的 今天來說說小阿定最愛的利口酒篇 利口酒就...
    三只大叔閱讀 505評論 0 0
  • 1都弹、 第一次見劉叔的感覺并不好娇豫,在那個炎熱的夏天他看我滿頭大汗從外面跑進來坐在他那臺“別摸我”跑車的副駕位置,滿臉...
    我不是蝸牛閱讀 380評論 0 2
  • 我們走在水的兩岸 水清靈靈的 你是透明的 低頭看看水里的自己 咦畅厢?魚兒游進她的眼里了 不著一絲痕跡 風(fēng)飄過 吹皺了...
    彥之青閱讀 127評論 0 0