组件化之Repo使用和踩坑记录(windows环境)

       前段时间项目组件化完成后,决定用repo的方式来进行组件化开发,我负责repo在windows环境下的踩坑,在这里记录一下(repo在windows环境下的配置是真坑,解决完这些坑,笔者直接吐血三斤啊~~~)。

      因为google官方推出的repo在windows下跑不起来,这边采用的是github上的一个的repo,传送门:https://github.com/esrlabs/git-repo,下面先来在windows环境搭建repo环境(这边用的curl+cmd来完成的,本想用gitbash,但一直有问题,放弃了):

1.环境准备

git和Python2.7+,这两个就不多说了,直接装好,并且配好环境变量;

2.安装curl

下载Curl,地址:https://bintray.com/artifact/download/vszakats/generic/curl-7.60.0-win64-mingw.zip
解压缩,将bin目录加入环境变量。

3.安装repo,通过cmd安装

curl https://raw.githubusercontent.com/esrlabs/git-repo/stable/repo > repo
curl https://raw.githubusercontent.com/esrlabs/git-repo/stable/repo.cmd > repo.cmd`

下载好后,将repo目录加入环境变量,本例中:C:\Users\repo 。

4.repo的配置文件

repo管理项目是通过一个manifest.xml文件来管理的,如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest>
    <remote name="origin" fetch="http://git.lzr.com/"/>

    <default remote="origin" revision="develop"/>

    <project path="a" name="lzr/a" remote="origin"/>

    <project path="b" name="lzr/b" remote="origin"/>

</manifest>

将其命名为default.xml文件,并上传至git仓库,这个xml文件你可以放在你主项目里面,也可以单独放在一个仓库里面。

配置文件中各节点的含义,可以看这个:https://blog.csdn.net/hansel/article/details/9798189,这里面的配置不多,分分钟看完。

从上面配置文件,可以看到我的远程仓库就是http://git.lzr.com,这个仓库下面有两个子项目 a和b。

假设我再上面那个仓库地址中有个主项目main,a和b项目是两个组件,main要依赖a和b两个组件。

这上面四步做好之后,下面就可以开始repo 的组件化开发(踩坑)之旅了:

我先讲主项目通过git clone拉下来,这边也就是main项目,接下来在这个目录进行repo初始化,因为这里要讲两个子模块通过repo的形式加入到主项目中来,cmd中输入:

repo init -u http://git.lzr.com/lzr/main -b master  (-u mainfest.xml的仓库地址,-b 指定分支)

这时候碰到一个巨坑,出现一个下面这种错误:

File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 672, in __init__ errread, errwrite) 
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1202, in _execute_child raise child_exception

笔者一开始看到这问题,以为是本地的Python有问题,然后各种重装Python,各种搜索这个问题,结果花了大概两天,各种尝试后,找到问题所在,这个是git环境变量导致的,最开始就找错方向了,血吐了一地啊。

git的环境变量要做如下调整:不要用%HOME%这种形式,直接用全路径。还要增加一个环境变量 :XX:\Git\usr\bin。

例如我这边的:D:\Git\bin,D:\Git\cmd,D:\Git\usr\bin 这三个都要配好。

接下来,初始化成功之后,同步所有子项目的代码:

repo sync

这边遇到了git用户名编码异常,将git user.name 改成纯英文就行了,记得要本地的ssh要配好,不然代码同步不下来。

代码同步下来后,子项目都处于游离状态,页就是不在任何分支上,这时用repo进行分支切换:

repo start <branchname> --all | <projectname>

这种方式是新建一个特性分支,该分支就关联到了配置文件中写的远程分支。

笔者在用repo切分支之前,用的git切换分支,结果导致repo sync的命令一直同步失败,会报一个work tree找不到的问题,截图如下:

按着提示,用--force-sync任然没用,所以最好还是用repo来进行分支切换~

附上repo常用命令传送门:https://blog.csdn.net/skyflying2012/article/details/23742683

最后代码提交,最方便的就是直接用AndroidStudio进行分支管理和提交。

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值