repo介绍

1、repo介绍:

repo是Android为例方便管理多个git库开发的Python脚本。例如,Android源码很大很大,目录结构也很复杂,如果将其init成一个Git库,那就完了;git无法将整个库中间的某个目录单独clone出来,所以如果要下载代码,就必须下载全部代码。所以需要分模块,把根目录下的每个目录做成单独的Git库;那么编译时如何知道工程版本包含的库呢?那么还需要对工程库进行一个记录,记录每个版本使用了那些库

2、工作原理:

repo就是管理当前单独的那个Git库,所以关注点在当前Git的数量、名称、路径等;并且集中维护所有Git库的清单——manifests库,默认default.xml

如何管理所有Git库呢?靠里面名称为repo的库,repo库包含了一系列脚本

当repo init时,会从远程把manifests和repo两个Git库拷贝到本地,执行的目录下隐藏目录.repo目录里查看

3、default.xml介绍

问题:如果本地新增或替换git库修改了default.xml那么岂不是会和远程的default.xml冲突?

答案:repo防止这种情况,提供了local_mainfests库,其定制和default.xml一样,文件名也可以自定义,比如local_manifest.xml或another_local_manifest.xml,只需要将定制的xml防止其目录(原名local_mainfests),repo就会遍历该目录的所有xml文件,最终和default.xml合并成一个总的项目文件manifest.xml

工作环境中的mainfest.xml是结合mainfest目录生成的

主要包含两个部分:

<remote>:描述远程仓库的信息,name为远程仓库的名称(通常命名为origin),fetch是项目名称的前缘,review描述的是code review的server地址

<project>:每个repo管理的git库,remote和name都是描述名字,revision是分支,project_config配置为0(也就是没有),path是指目录

 

local_manifest.xml文件

同上文一样

4、chang_log

仓库目录保存的是历史信息和修改记录,工作目录保存的是当前的版本信息

repo支持将一个项目的Git仓库目录和工作目录分开来放

manifests:一份(.repo/manifests/,git/)还有一份./repo/manifests.git/

repo:在.repo/repo的.git目录下

project:所有管理的Git库目录分开存放位于.repo/projects/下,同时保留repo/.git(里面文件都是.repo链接),这样既分开存放也兼容所有git命令

5、命令介绍

help、init、sync、upload、diff、download、forall、prune、start、staus

1、init

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

-u 指定manifests远程git的URL(里面默认只有default.xml一个文件)【工作目录内两个文件内容一样】

-m 是-manifest-name的简称,指定所需要的manifests库中的清单文件(默认default.xml或maniftests.xml)

-b 是-manifest-branch的简称,指定分支

2、sync

repo sync [PROJECT_LIST]

-j 多线性同步操作,默认为4

-c 缩写-current-branch,只同步指定的远程分支。默认同步所有分支

-d 缩写detach,脱离当前的本地分支,切换到manifest.xml中设定的分支

-f 缩写force-broken,当git sync失败,不中断操作,继续同步其他的git库

-no-clone-bundle,同步操作会通过CDN与就近的服务器建立连接,使用HTTP/HTTPS初始化git库

3、upload

repo upload [PROJECT_LIST]

将本地代码上传到远程服务器

4、download

repo download <TARGET> <CHANGE>

从服务器上下载改动

5、forall

repo forall [PROJECT_LIST] -c <COMMAND>

对指定库执行-c参数的命令

6、prune

repo prune [<PROJECT_LIST>]

删除project中已经合并的分支

7、start

repo start <BRANCH_NAME> [<PROJECT_LIST>]

在指定的project上,切换到BRANCH_NAME分支

8、status

repo status [<PROJECT_LIST>]

查看多个git的状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值