概述
前段时间项目组件化完成后,决定用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:Usersrepo 。
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:Gitusrbin。
例如我这边的:D:Gitbin,D:Gitcmd,D:Gitusrbin 这三个都要配好。
接下来,初始化成功之后,同步所有子项目的代码:
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进行分支管理和提交。
最后
以上就是从容硬币为你收集整理的组件化之Repo使用和踩坑记录(windows环境)的全部内容,希望文章能够帮你解决组件化之Repo使用和踩坑记录(windows环境)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复