1. repo
介绍
repo
repo是什么
是什么: Repo是基于git的仓库管理工具,是一个python脚本
干什么: Repo管理很多的git仓库,可以做统一的上传等其他操作,并且可以自动化部分Andoid开发流程
2. 搭建 repo
服务
repo
2.1 服务端配置
- 创建一个
目录 ,如repo_service
/Users/lucky/workspace/repo_lesson/repo_server
- 在该目录创建一个
目录,并初始化一个manifest.git
即运行git tree
git init
- 在
中添加一个manifest.git
文件,内容如下:default.xml
git add default.xml 并 commit<?xml version="1.0" encoding="UTF-8"?> <manifest> <remote name="repo_server" fetch="/Users/lucky/workspace/repo_lesson/repo_server" review="review.source.android.com" /> <default revision="master" remote="repo_server" /> <project name="pro1" path="pro1"/> <project name="pro2" path="pro2"/> </manifest>
- remote行指定repo服务器的地址
- default行指定默认的版本以及remote服务器,这个需要根据实际情况指定。我们这里底层git是用最简单的文件拷贝,实际中可能是git,git+ssh或者http
- project 行是指定project list,这里就代表有2个工程
pro1
,分别位于服务器pro2
和/Users/lucky/workspace/repo_lesson/repo_server/pro1
目录/Users/lucky/workspace/repo_lesson/repo_server/pro2
- 当 客户端执行
之后就会根据repo sync
该文件拉取到对应的工程default.xml
- 此时服务端如图所示
搭建自己的repo服务器1. repo介绍2. 搭建repo服务 搭建自己的repo服务器1. repo介绍2. 搭建repo服务
- 根据上一步的配置 需要在
目录下创建两个工程repo_server
pro1
,同时我们初始化这个工程的pro2
git tree
- 这里为了效果在
pro1
中分别创建了两个文本,pro2
过程如图所示pro1
搭建自己的repo服务器1. repo介绍2. 搭建repo服务 搭建自己的repo服务器1. repo介绍2. 搭建repo服务
- 这里为了效果在
2.2 客户端配置
- 创建一个
目录 , 如repo_client
/Users/lucky/workspace/repo_lesson/repo_client
-
客户端的下载配置:repo
- 可以参照网上的一些方案下载到本地,然后配置到全局的环境变量中,但是我不建议折麽做,因为一个
配置对应着一个的repo
服务端地址比如上面我们自己创建的服务端。git
- 当然了最初我也是折麽配置的,只是感觉上不合理而已,对一次的使用不影响。下面说的是我目前的配置方案,使用了软链接。同时
在通过repo
下载的时候是需要翻墙的,,,curl
- 在
下。将下载好的repo_client
仓库复制到该目录,仓库点击这里下载吧,这个的获取过程回头再说吧repo
仓库是一个隐藏文件如图所示repo
搭建自己的repo服务器1. repo介绍2. 搭建repo服务 搭建自己的repo服务器1. repo介绍2. 搭建repo服务 - 修改
文件repo
搭建自己的repo服务器1. repo介绍2. 搭建repo服务 可以看到搭建自己的repo服务器1. repo介绍2. 搭建repo服务
就是我们获取服务端代码的地址了,需要修改为我们自己的服务端地址修改后如下REPO_URL
搭建自己的repo服务器1. repo介绍2. 搭建repo服务 搭建自己的repo服务器1. repo介绍2. 搭建repo服务 - 修改之后记得做
不然在后面的拉去代码时会提示没有权限访问这个服务端仓库commit
搭建自己的repo服务器1. repo介绍2. 搭建repo服务 搭建自己的repo服务器1. repo介绍2. 搭建repo服务 - 将
仓库里的repo
文件软链接到repo
目录下这里就是 和上面说的配置全局环境变量不同的地方。repo_client
ln -f -s .repo/repo/repo ./repo
搭建自己的repo服务器1. repo介绍2. 搭建repo服务 搭建自己的repo服务器1. repo介绍2. 搭建repo服务 搭建自己的repo服务器1. repo介绍2. 搭建repo服务 可以看出执行完这条命令后在搭建自己的repo服务器1. repo介绍2. 搭建repo服务
中多了一个带角标的repo_client
文件,它其实就是上一步修改的repo
文件的快捷方式,快捷方式是不是非常熟悉这个词��repo
- 看看是否生效
搭建自己的repo服务器1. repo介绍2. 搭建repo服务 搭建自己的repo服务器1. repo介绍2. 搭建repo服务 - 可以参照网上的一些方案下载到本地,然后配置到全局的环境变量中,但是我不建议折麽做,因为一个
2.3 拉取源码
- 为当前客户端指定一个远端仓库中的
文件manifest
搭建自己的repo服务器1. repo介绍2. 搭建repo服务 提示你已经初始化好了,如果想修改身份或者目录怎么样怎么样。。。关于这个初始化还有高级的使用,后面再说吧搭建自己的repo服务器1. repo介绍2. 搭建repo服务 - 同步代码到本地
./repo sync
搭建自己的repo服务器1. repo介绍2. 搭建repo服务 搭建自己的repo服务器1. repo介绍2. 搭建repo服务 搭建自己的repo服务器1. repo介绍2. 搭建repo服务 可以看到服务器上的搭建自己的repo服务器1. repo介绍2. 搭建repo服务 pro1
就被拉取下来了pro2
- 至于分支的同步切换更多的后面有时间再说吧。
–
参考文章
- Repo全解之自己搭建repo仓库
- 建立最简单的repo服务器实例讲解
- 关于使用repo时repo init和repo sync失败的一个解决方案