开始使用 Repo 工作
12 Oct 2017开始使用 repo 工作
-
建立顶层工作目录
mkdir myproject cd myproject
-
签出所有库代码
repo init -u ssh://[email protected]:port/myProjectManifest -b develop --repo-url https://github.com/xlncz/mirror-git-repo.git repo sync
其中
-b develop
为签出代码仓库中的develop
分支。需要重点注意的是,虽然这里是签出develop
分支,但是并不意味着从所有远程仓库中签出的都是develop
分支,需要通过查看 repo manifests 库中的配置文件才能确认具体对应远程仓库的分支。比如,你可以通过下述命令打开 repo manifests.xml 文件vi .repo/manifest.xml
可能的输出如下:
<?xml version="1.0" encoding="UTF-8"?> <manifest> <remote name="origin" fetch=".." review="http://ip:port/" /> <default revision="develop" remote="origin" sync-s="true" sync-j="4" sync-c="false" /> <project path="Project/extra/myproject" name="myproject" /> <project path="Project/extra/android-ndk-profiler" name="android-ndk-profiler.git" revision="master"/> </manifest>
关注
project
节,如果不带有revision
字段,那么会使用default
节中的配置,上述输出的含义为:- 对 myproject 项目,签出的是远程仓库中的 develop 分支
- 对 andorid-ndk-profiler 项目,签出的是远程仓库中的 master 分支
之所以会出现上述现象,是因为,myproject 是我们的开发项目,会涉及频繁的功能开发和提交,采用多分支管理;而 android-ndk-profiler 是一个被我们项目应用的第三方项目,很少会有变动,并不需要多分支。
- 开始工作
repo start develop --all
其中
develop
为你的本地工作分支,建议和上述-b develop
中的分支名相同,这样可以方便了解自己目前的工作分支—all
选项的意思是将所有的库切换到develop
分支,但是这个仅仅是切换了你本地工作分支。并不意味着对应相应的远程分支,这点需要特别注意。那么如何确定你本地分支与远程分支的对应关系呢?很简单,跟普通 git 库的操作一样,查看库配置中的 config 文件即可
-
在 repo 中切换分支
如果你执行了
repo start master --all
那么你当前工作在 master 分支上。你可以像使用普通 git 库一样对单一库进行git checkout branch
操作,但一定注意当你打算提交代码时需要认真查看是否会上传到正确的远程仓库,参阅下面 一些注意事项 章节。通过 repo 切换分支:
repo init -b develop repo start develop --all repo branch
此后你将工作在 develop 分支上,可以通过查看
.repo/manifest.xml
来确认。同时你也可以如普通 git 库一样查看 config 文件中的 brnach 配置来确认。 -
代码提交
进入你需要修改的代码目录中,同普通 git 一样执行
git add
git commit
,但是你不再需要执行git push
,你需要使用repo upload
来提交代码,需要参阅 一些注意事项 章节。
一些注意事项
-
在使用
repo upload
提交代码时,需要认真检查输出,比如下面:branch master ( 1 commit, Wed Oct 11 18:13:21 2017 +0800) to remote branch master:
提示将把你本地 master 分支上的变动提交到远程的 master 分支;有时候可能会出现下面的提示
branch master ( 1 commit, Wed Oct 11 18:13:21 2017 +0800) to remote branch develop:
提示将把你本地 master 分支上的变动提交到远程的 develop 分支,这里可能已经出错了,你需要认真检查你的库配置。
当把代码提交后,repo 会自动 push 到 gerrit 平台,此时你应该进入 gerrit 界面,认真检查
Project
和Branch
两列的内容,是否符合你的预期。