需求:android源码仓创建新分支
1、本地干净的代码推送到远程,新建分支,本地可建也可不建与远程同名的分支;
repo start --all s2_dev
repo forall -c git push gerrit_kanyun s2_dev
2、新建本分支的xml文件,并提交到master分支;
进入根目录的.repo/manifests目录,拷贝default.xml ,命名为s2_dev.xml,修改其中的revision为分支名,如下改动:
<default remote="gerrit_kanyun" revision="s2_dev" />
修改完成执行:
git push origin HEAD:refs/for/QCS6125_master
3、通过制定xml的方式同步新分支代码;
repo init -u gerrit_kanyun:/manifest -b QCS6125_master -m s2_dev.xml
4、执行如下指令,sync代码,并且切换新分支;
repo sync -j32
repo start --all s2_dev
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下边记录一下版本回退的问题,如果发版后发现该版本问题比较大,需要回退上一个版本,则用repo的manifest快照功能即可,示例如下:
版本发布(灰度)之后工作(创建manifest快照,便于紧急版本回退):
1、如灰度版本为1.0.0,在编译该版本源码根目录执行如下流程操作:
repo manifest -r -o .repo/manifests/release_1.0.0.xml;
cd .repo/manifests;
git add release_1.0.0.xml;
git comit -m "[repo] vxxxx manifests snapshot.";
git push origin HEAD:refs/for/QCS6125_master;
2、后期如果涉及需回退到该版本,则创建代码目录,在该目录执行:
repo init -u gerrit_kanyun:/manifest -b QCS6125_master -m release_1.0.0.xml;
repo sync -j8;
修改最新版本号,编译出版本即可;
3、注意:manifest快照必须与发布的release版本代码基准一致,这就要求在出release版本到版本灰度发布时段master分支代码禁止合入;
Mark一下,上述这种方式其实是通过分支映射xml的方式,分支的proj列表xml文件,统一都在master分支管理维护。
---------------------------------------------------------------------------------------------------------------------------------
5、git删除远程仓储;
repo forall -c git push gerrit_kanyun :s2_swtcon
这是删除repo管理的所有git仓的某一个(s2_swtcon)分支,单独删除直接执行-c后边的git指令即可。