天天看点

搭建自己的repo服务器1. repo介绍2. 搭建repo服务

1.

repo

介绍

repo是什么

是什么: Repo是基于git的仓库管理工具,是一个python脚本

干什么: Repo管理很多的git仓库,可以做统一的上传等其他操作,并且可以自动化部分Andoid开发流程

2. 搭建

repo

服务

2.1 服务端配置

  1. 创建一个

    repo_service

    目录 ,如

    /Users/lucky/workspace/repo_lesson/repo_server

  2. 在该目录创建一个

    manifest.git

    目录,并初始化一个

    git tree

    即运行
    git init
               
  3. manifest.git

    中添加一个

    default.xml

    文件,内容如下:
    <?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>  
               
    git add default.xml 并 commit
    • 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服务
  4. 根据上一步的配置 需要在

    repo_server

    目录下创建两个工程

    pro1

    pro2

    ,同时我们初始化这个工程的

    git tree

    • 这里为了效果在

      pro1

      pro2

      中分别创建了两个文本,

      pro1

      过程如图所示
      搭建自己的repo服务器1. repo介绍2. 搭建repo服务
      搭建自己的repo服务器1. repo介绍2. 搭建repo服务

2.2 客户端配置

  1. 创建一个

    repo_client

    目录 , 如

    /Users/lucky/workspace/repo_lesson/repo_client

  2. 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 拉取源码

  1. 为当前客户端指定一个远端仓库中的

    manifest

    文件
    搭建自己的repo服务器1. repo介绍2. 搭建repo服务
    搭建自己的repo服务器1. repo介绍2. 搭建repo服务
    提示你已经初始化好了,如果想修改身份或者目录怎么样怎么样。。。关于这个初始化还有高级的使用,后面再说吧
  2. 同步代码到本地
    ./repo sync
               
    搭建自己的repo服务器1. repo介绍2. 搭建repo服务
    搭建自己的repo服务器1. repo介绍2. 搭建repo服务
    搭建自己的repo服务器1. repo介绍2. 搭建repo服务
    搭建自己的repo服务器1. repo介绍2. 搭建repo服务
    可以看到服务器上的

    pro1

    pro2

    就被拉取下来了
  3. 至于分支的同步切换更多的后面有时间再说吧。
搭建自己的repo服务器1. repo介绍2. 搭建repo服务

参考文章

  • Repo全解之自己搭建repo仓库
  • 建立最简单的repo服务器实例讲解
  • 关于使用repo时repo init和repo sync失败的一个解决方案