使用 repo 管理项目代码 —— repo 清单配置

使用 repo 管理项目代码 —— repo 清单配置

随着业务越来越复杂,代码库也随之越来越多,多个代码库的管理就显得更加重要。在 Android 源码开发中,Google 开发了一个 repo 脚本用于管理项目中的数百个仓库(之前拉取的一份 Android 源码中,有 514 个 Git 仓库)。个人在使用中需要如何使用 repo 来管理项目代码呢?

使用 repo 最重要的就是 repo 脚本和项目清单仓库,在执行repo init执行过程中就会下载完整的 repo 仓库和项目清单仓库。repo 脚本是 Google 开发的,在 Android 源码中就包含了 repo 仓库,我们需要做的就是根据自己的项目来配置清单仓库。

1. 获取 repo 脚本

由于 Google 无法直接访问,我们可以使用清华镜像源中的 repo 脚本,或者使用我提供的github mirror

# 1. 获取 repo 脚本
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
# 或
# curl https://github.com/dezng/git-repo/raw/master/repo -o repo

# 2. 修改 repo 脚本
# 替换 repo 源,  REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
# 或 REPO_URL = 'https://github.com/dezng/git-repo'
# 3. 授予执行权限
chmod +x repo
# 4. 添加到 PATH 环境变量中,或放置到 PATH 变量包含的目录中,此处选用第二种方式
sudo mv repo /usr/local/bin

使用下面的命令可以先下载一个 repo 示例
repo init -u https://github.com/dezng/AndroidLibManifests --repo-url=https://github.com/dezng/git-repo

2. 配置项目清单文件

repo 使用的项目清单是一个 git 仓库,默认配置是仓库中包含一个 default.xml文件,此文件指定了项目地址和代码下载之后的目录结构。

2.1 default.xml 文件示例



<manifest>
    
    
    <remote
        name="github"
        fetch="https://github.com" />
    <remote
        name="rx"
        fetch="https://github.com/ReactiveX" />
    <remote
        name="square"
        fetch="https://github.com/square" />

    
    <default
        remote="github"
        revision="master"
        sync-j="1" />

    
    
    <project
        name="RxJava"
        group="android,rx"
        path="lib/RxJava"
        remote="rx"
        revision="2.x" />
    
    <project
        name="RxAndroid"
        group="android,rx"
        path="lib/RxAndroid"
        remote="rx"
        revision="2.x" />

    
    <project
        name="okhttp"
        group="android,square"
        path="lib/OkHttp"
        remote="square" />

    
    <project
        name="leakcanary"
        group="android,square"
        path="lib/LeakCanary"
        remote="square" />

    
    <project
        name="retrofit"
        group="android,square"
        path="lib/Retrofit"
        remote="square" />

    
    <project
        name="bumptech/glide"
        group="android,bumptech"
        path="lib/Glide"/>

    
    <project
        name="google/volley"
        group="android,google"
        path="lib/Volley"/>
manifest>

remote: 可配置多个,一个项目清单中的代码可以来自不同服务器

project: 必须包含 name 和 path 属性,name 用于指定远程仓库位置,path 指定下载后的代码相对路径

project 中 path 可以很好的组织本地目录结构

2.2 创建清单仓库

mkdir manifests
cd manifests
vim default.xml
# 按示例配置 `default.xml`

# 初始化仓库
git init
git remote add xx REMOTE/URL
# 提交并 push 到远程
git add default.xml
git commit -m "init manifests"

3. 同步代码

# 初始化
repo init -u URL_FOR_MANIFEST_PROJECT
# 同步代码库
repo sync

4. 本地项目配置

使用 repo 统一配置项目代码之后,一些本地示例代码不需要的上传的可以使用 local_manifest 来处理,同步的过程中会同步更新。

配置文件:$TOP_DIR/.repo/local_manifests/*.xml
$TOP_DIR/.repo/local_manifest.xml (deprecated)

local_manifests 中的项目在repo sync过程中会同时同步下来,local_manifest.xml中的项目会优先加载,在local_manifests中的文件会已字母顺序加载。

5. 总结

以上,repo就可以用来管理所有的项目

你可能感兴趣的:(git)