【计算机基础】repo学习笔记
文章目录
- 一、关于repo
- 1.1 介绍清单库文件
- 1.2 下载repo代码
- 1.3 探究repo文件夹
- 二、 repo常用命令
- 2.1 解析拉取代码的命令
- 2.2 同步代码(repo sync)
- 2.3 创建并切换分支(repo start)
- 知识补充——什么是分支
- 2.4 查看分支(repo branches)
- 项目清单文件default.xml 文件示例
- 参考
一、关于repo
repo是Google开发的用于管理Android版本库的一个工具,repo并不是用于取代git,而是用Python(所以你在后面会看到很多地方提及python)对git进行了一定的封装,简化了对多个Git版本库的管理。对于repo管理的任何一个版本库,都需要使用git命令进行操作。
1.1 介绍清单库文件
清单文件是以xml的格式组织的,一个清单库可以包含多个清单文件和多个分支,每个清单文件和分支都有对应的版本。
- remote元素:定义了名为korg的远程版本库,库的基址为git://172.16.1.31
- project元素:用于定义一个项目,path属性表示在工作区clone的位置,name属性表示该项目的远程版本库的相对路径。
- default元素:设置各个项目默认远程版本库为Korg,默认的分支为gingerbread-exdroid-stable。各个项目还可以定义自己的remote和revision覆盖默认的配置。
- project元素下的子元素copyfile 定义了项目clone后的一个附件动作,从src拷贝文件到dest
1.2 下载repo代码
1、新建项目存放的文件夹
mkdir mstar648
2、进入到项目文件夹
cd mstar648
3、执行代码拉取的命令
repo init -u ssh://ppgerrit.com/Mstar648/manifest.git -b 648_cultraview -m ppos4.5.0_cultraview.xml
1.3 探究repo文件夹
通过如下命令查看mstar648目录下
ls -a
可以看到目录下有个.repo文件夹,说明mstar648项目是一个用repo管理的版本库。进入到.repo,并查看目录内容。
可以看到.repo目录下有manifest、project、repo文件夹等信息。
- 如果想查看Python封装的脚本,可到.repo/repo下看到:
- 如果想查看某个模块当前是在哪个分支,可以进入到manifests中去:因为我们刚拉取代码的时候是ppos4.5.0_cultraview.xml,所以通过vim打开ppos4.5.0_cultraview.xml,然后可以通过 /模块名 ,查看到模块的分支信息。例如我们要看到PposTv的分支信息,就可以搜索/PposTv
二、 repo常用命令
2.1 解析拉取代码的命令
例如我们拉取代码的时候的命令如下:
repo init -u ssh://ppgerrit.com/Mstar648/manifest.git -b 648_cultraview -m ppos4.5.0_cultraview.xml
其中:
- u:指定一个URL,其连接到一个manifest仓库
- b:选择manifest仓库中的一个特殊分支
- m:在manifest仓库中选择一个xml文件
repo init要完成如下操作:
完成repo工具的完整下载,执行的repo脚本只是引导程序
clone清单库manifest.git (地址是-u后面的参数)
clone的清单库位于manifest.git中,clone到本地.repo/manifest中,.repo/manifest.xml只是符号链接,它指向的是.repo/manifests/default.xml
如果manifest中有多个xml文件,repo init可以任意选择其中一个,默认选择的是default.xml。
上面的拉取代码示例选择的是ppos4.5.0_cultraview.xml里面的配置,那么.repo/manifest.xml指向的是.repo/manifests/ppos4.5.0_cultraview.xml
2.2 同步代码(repo sync)
执行了repo init 命令后,我们需要执行如下命令同步代码:
repo sync
参照清单文件.repo/manifest.xml克隆并同步版本库。如果项目版本库不存在,则执行repo sync命令相当于执行git clone;如果项目版本库存在,则相当于执行下面两条指令:
git remote update
相当于对每一个remote源执行了fetch操作
git rebase origin/branch
对当前分支的跟踪分支执行rebase操作
2.3 创建并切换分支(repo start)
刚clone下来的代码是没有分支的,例如:
repo start 的实质就是对git checkout -b 的封装,可以为单个项目或所有项目以清单文件中已设定的分支为基础,在本地创建新的分支。
repo start 与 git checkout -b 的区别:
repo start 是在清单文件设定的分支基础上创建新的分支
git checkout -b 是在当前所在分支的基础上创建新的分支
如果清单文件中设定的分支是remoteBranchName,创建新的分支localBranchName。
为单个项目创建localBranchName分支的命令如下:
repo start localBranchName 项目绝对路径
为所有项目创建localBranchName分支的命令如下:
repo start localBranchName --all
知识补充——什么是分支
假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
2.4 查看分支(repo branches)
本文下面所有的命令都是在单个项目中运行!!!
例如查看上面拉取的mstar648项目下各模块的分支信息
在mstar648项目下运行如下命令,就能知道自己当前的分支:
repo branches
项目清单文件default.xml 文件示例
repo 使用的项目清单是一个 git 仓库,默认配置是仓库中包含一个 default.xml文件,此文件指定了项目地址和代码下载之后的目录结构。
<?xml version="1.0" encoding="UTF-8" ?><manifest><!-- remote: 远程代码库配置name: 远程仓库名,在使用 git clone 时默认为 originfetch: 远程仓库地址,用户和 project 节点中的 name 一起确定项目地址--><!-- remote server --><remotename="github"fetch="https://github.com" /><remotename="rx"fetch="https://github.com/ReactiveX" /><remotename="square"fetch="https://github.com/square" /><!--default: 默认配置remote: 默认使用的远程仓库revision: 默认使用的分支sync-j: 同步代码时的并发数--><defaultremote="github"revision="master"sync-j="1" /><!--project: 单个代码库配置name: 项目地址,和指定的 remote 节点中的 fetch 一起组成仓库地址(fetch + name)group: 项目所属分组,可选path: 项目拉取到本地后所在目录remote: 指定所在远程仓库revision: 指定代码分支--><!-- RxJava --><projectname="RxJava"group="android,rx"path="lib/RxJava"remote="rx"revision="2.x" /><!-- RxAndroid --><projectname="RxAndroid"group="android,rx"path="lib/RxAndroid"remote="rx"revision="2.x" /><!-- OkHttp --><projectname="okhttp"group="android,square"path="lib/OkHttp"remote="square" /><!-- LeakCanary --><projectname="leakcanary"group="android,square"path="lib/LeakCanary"remote="square" /><!-- Retrofit --><projectname="retrofit"group="android,square"path="lib/Retrofit"remote="square" /><!-- Glide --><projectname="bumptech/glide"group="android,bumptech"path="lib/Glide"/><!-- Volley --><projectname="google/volley"group="android,google"path="lib/Volley"/>
</manifest>
参考
https://blog.csdn.net/salmon_zhang/article/details/79180075
https://www.cnblogs.com/bill-technology/p/4130851.html
【计算机基础】repo学习笔记相关推荐
- 【计算机图形学基础】学习笔记 02 图形系统
[计算机图形学基础]学习笔记 02 图形系统 一张图概括基本内容. 思维导图 References [1] 徐文鹏, 都伟冰, 等.计算机图形学基础:OpenGL版(第二版)[M].北京:清华大学出版 ...
- Python基础语法学习笔记
Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...
- P2P网络基础(学习笔记)
P2P网络基础(学习笔记) 基本概述 P2P与C/S架构 P2P网络的特点 P2P网络的主要功能 P2P网络的分类 集中式 全分布式非结构化 全分布式结构化 混合式 比特币网络 P2P网络的应用 基本 ...
- 网络基础知识学习笔记
网络基础知识学习笔记 参考菜鸟教程.个人学习整理,仅供参考.三年前学过,三年没用忘了,重新学习整理一下. 文章目录 网络基础知识学习笔记 OSI七层网络模型 IP地址 子网掩码及网络划分 网络协议 A ...
- k8s零基础入门 (学习笔记)
夫君子之行,静以修身,俭以养德,非淡泊无以明志,非宁静无以致远. 夫学须静也,才须学也,非学无以广才,非志无以成学.淫慢则不能励精,险躁则不能冶性. 年与时驰,意与日去,遂成枯落,多不接世,悲守穷庐, ...
- Java基础篇 学习笔记
List item Java基础篇 学习笔记 java基础篇 第1章 计算机.程序和java概述 学习笔记 1.1什么是计算机 简单来说:计算机就是 ' 存储 ' 和 ' 处理 ' 数据的电子设备. ...
- 大数据第二阶段Python基础编程学习笔记(待完善)
大数据第二阶段Python基础编程学习笔记(待完善) 第一章 Python基础语法 3.8 1-1Python概述 python基础部分: ●Python基础语法: 标识符,关键字,变量,判断循环.. ...
- 计算机应用基础【学习笔记】
计算机应用基础[学习笔记] 计算机硬件系统的组成 微型计算机的性能指标 1.主频:微机CPU的时钟频率.以MHz.GHz为单位.主频的大小在很大程度上决定了微机的运算速度,主频越高,微机的运算速度就越 ...
- linux磁盘符变化autofs,Linux基础教程学习笔记之Autofs自动挂载
Linux基础教程学习笔记之Autofs自动挂载 Autofs自动挂载: yum -y install autofs vim /etc/auto.master 在文件中添加下面行 /home/gue ...
- python基础入门学习笔记 (2)
python基础入门学习笔记 2021年2月8日 1 编译器和解释器的区别 编译器/解释器:高级语言与机器之间的翻译官 2 值传递: print "a = ",a print &q ...
最新文章
- springboot webjar使用
- 2018全球最佳品牌Top25:时代巨变的一个缩影
- java 图片请求_java请求C++客户端上传图片
- leetcode53. 最大子数组和(暴力+贪心)
- 智慧城市产业图谱研究报告(2020年)
- 在线求CR,你觉得我这段Java代码还有优化的空间吗?
- 高,低电平复位电路原理及加电容的作用
- 福州大学第十四届程序设计竞赛-重现赛(Record)
- android启动过程之init.rc文件浅析
- 通达信实现自动交易系统
- 知行之桥EDI系统中那些你忽略的功能
- Java根据位置获取经纬度计算距离
- Mysql如何清空数据库中所有的表数据
- 三调与二调图斑叠加分析,筛选不同地类面积占比,筛选举证图斑
- 境外电商-香港汇丰银行基础知识
- 顽固文件删除终极武器
- word页眉页脚设置
- 用python判断火车票座位_Python3 实现火车票查询工具
- vue里面变量名前面加三个点代表什么意思?
- 张勇向大公司病开刀:面对未来,变阵是为了更好地应战