脱离 Gerrit 审核服务器使用 repo.docx
- 文档编号:2860070
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:7
- 大小:18.11KB
脱离 Gerrit 审核服务器使用 repo.docx
《脱离 Gerrit 审核服务器使用 repo.docx》由会员分享,可在线阅读,更多相关《脱离 Gerrit 审核服务器使用 repo.docx(7页珍藏版)》请在冰豆网上搜索。
脱离Gerrit审核服务器使用repo
脱离Gerrit审核服务器,使用repo
Gerrit代码审核服务器部署比较麻烦,更不要说因为Gerrit界面的学习和用户使用习惯的更改而带来的困难了。
而且在一个固定的团队内部使用repo可能真的没有必要使用Gerrit,因为团队成员都应该熟悉Git的操作,团队成员的编程能力都可信,单元测试质量由提交者保证,集成测试由单独的测试团队进行,即团队拥有一套完整、成型的研发工作流,Gerrit并不适合引入。
脱离了Gerrit服务器,直接跟Git服务器打交道,repo可以工作么?
…
为了筹备中的gitbook,我特意为书中repo增加了repopush的实现,效果和预期的一样好。
5.6.9.3 改进的Repo无审核模式
前面介绍的使用repoforall迭代器实现无审核服务器模式下向上游提交代码,只是权宜之计,尤其是用repostart建立工作分支要求和上游一致,实在是有点强人所难。
我改造了repo,增加了两个新的子命令repoconfig 和repopush ,让repo可以脱离Gerrit服务器直接向上游提交。
代码托管在Github上:
。
下面简单介绍一下如何使用改造之后的repo。
5.6.9.3.1 下载改造后的repo引导脚本
建议使用改造后的repo引导脚本替换原脚本,否则在执行repoinit命令需要提供额外的–no-repo-verify参数,以及–repo-url 和–repo-branch 参数。
$curl>~/bin/repo
$chmoda+x~/bin/repo
5.6.9.3.2 用repo从Github上检出测试项目
如果安装了改造后的repo引导脚本,使用下面的命令初始化repo及清单库。
$mkdirtest
$cdtest
$repoinit-ugit:
//
$reposync
如果用的是老的repo脚本,用下面的命令。
$mkdirtest
$cdtest
$repoinit--repo-url=git:
//\
--repo-branch=master--no-repo-verify\
-ugit:
//
$reposync
当子项目代码全部同步完成后,执行make命令。
可以看到各个子项目的版本以及清单库的版本。
$make
Versionoftest1:
1:
0.2-dev
Versionoftest2:
2:
0.2
Versionofmanifest:
current
5.6.9.3.3 用repoconfig命令设置pushurl
现在如果进入到各个子项目目录,是无法成功执行gitpush命令的,因为上游Git库的地址是一个只读访问的URL,无法提供写服务。
我们可以用新增的repoconfig 命令设置当执行gitpush 时的URL地址。
$repoconfigrepo.pushurlssh:
//git@
设置成功后,可以使用repoconfigrepo.pushurl查看设置。
$repoconfigrepo.pushurl
ssh:
//git@
5.6.9.3.4 创建本地工作分支
使用下面的命令创建一个工作分支jiangxin 。
$repostartjiangxin--all
使用repobranches 命令可以查看当前所有的子项目都属于jiangxin 分支
$repobranches
*jiangxin|inallprojects
参照下面的方法修改test/test1子项目。
对test/test2项目也作类似修改。
$cdtest/test1
$echo"1:
0.2-jiangxin">version
$gitdiff
diff--gita/versionb/version
index37c65f8..a58ac04100644
---a/version
+++b/version
@@-1+1@@
-1:
0.2-dev
+1:
0.2-jiangxin
$repostatus
#onbranchjiangxin
projecttest/test1/branchjiangxin
-mversion
$gitadd-u
$gitcommit-m"0.2-dev->0.2-jiangxin"
执行make命令,看看各个项目的改变。
$make
Versionoftest1:
1:
0.2-jiangxin
Versionoftest2:
2:
0.2-jiangxin
Versionofmanifest:
current
5.6.9.3.5 PUSH到远程服务器
直接执行repopush 就可以将各个项目的改动进行提交。
$repopush
如果有多个项目同时进行了改动,为了避免出错,会弹出编辑器显示有改动需要提交的项目列表。
#Uncommentthebranchestoupload:
#
#projecttest/test1/:
#branchjiangxin(1commit,MonOct2518:
04:
512010+0800):
#4f9412390.2-dev->0.2-jiangxin
#
#projecttest/test2/:
#branchjiangxin(1commit,MonOct2518:
06:
512010+0800):
#86683ece0.2-dev->0.2-jiangxin
每一行前面的井号是注释,被忽略的行。
将希望提交的分支前的注释去掉,就可以将该项目的分支执行推送动作。
如下我们把两个分支的注释都去掉了,要对这两个项目当前分支的改动push到上游服务器。
#Uncommentthebranchestoupload:
#
#projecttest/test1/:
branchjiangxin(1commit,MonOct2518:
04:
512010+0800):
#4f9412390.2-dev->0.2-jiangxin
#
#projecttest/test2/:
branchjiangxin(1commit,MonOct2518:
06:
512010+0800):
#86683ece0.2-dev->0.2-jiangxin
保存退出(如果使用vi编辑器,输入:
wq执行保存退出)后,马上开始对选择的各个项目执行gitpush。
Countingobjects:
5,done.
Deltacompressionusingupto2threads.
Compressingobjects:
100%(2/2),done.
Writingobjects:
100%(3/3),293bytes,done.
Total3(delta0),reused0(delta0)
Tossh:
//git@
27aee23..4f94123jiangxin->master
Countingobjects:
5,done.
Writingobjects:
100%(3/3),261bytes,done.
Total3(delta0),reused0(delta0)
Tossh:
//git@
7f0841d..86683ecjiangxin->master
--------------------------------------------
[OK]test/test1/jiangxin
[OK]test/test2/jiangxin
从提交日志我们可以看出来本地的工作分支jiangxin的改动被推送的远程服务器的master分支(本地工作分支跟踪的上游分支)。
我们再次执行repopush,会显示没有项目需要提交。
$repopush
nobranchesreadyforupload
5.6.9.3.6 在远程服务器创建新分支
如果我们想在服务器双创建一个新的分支,该如何操作呢?
$repostartfeature1--all
$repopush--new_branch
经过同样的编辑器选择之后,自动调用gitpush,在服务器上创建新分支feature1 。
Total0(delta0),reused0(delta0)
Tossh:
//git@
*[newbranch]feature1->feature1
Total0(delta0),reused0(delta0)
Tossh:
//git@
*[newbranch]feature1->feature1
--------------------------------------------
[OK]test/test1/feature1
[OK]test/test2/feature1
我们也可以用gitls-remote命令查看远程服务器上的分支。
$gitls-remotegit:
//refs/heads/*
4f9412399bf8093e880068477203351829a6b1fbrefs/heads/feature1
4f9412399bf8093e880068477203351829a6b1fbrefs/heads/master
b2b246b99ca504f141299ecdbadb23faf6918973refs/heads/test-0.1
我们注意到feature1和master分支引用指向相同的SHA1哈希值,这是因为我们直接从master分支创建的feature1分支。
5.6.9.3.7 通过不同的清单库版本,切换到不同分支
换用不同的清单库,需要建立新的工作区,并且在执行repoinit时,通过-b参数指定清单库的分支。
$mkdirtest-0.1
$cdtest-0.1
$repoinit-ugit:
//-btest-0.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 脱离 Gerrit 审核服务器使用 repo 审核 服务器 使用