脱离 Gerrit 审核服务器使用 repo.docx

上传人:b****5 文档编号:2860070 上传时间:2022-11-16 格式:DOCX 页数:7 大小:18.11KB
下载 相关 举报
脱离 Gerrit 审核服务器使用 repo.docx_第1页
第1页 / 共7页
脱离 Gerrit 审核服务器使用 repo.docx_第2页
第2页 / 共7页
脱离 Gerrit 审核服务器使用 repo.docx_第3页
第3页 / 共7页
脱离 Gerrit 审核服务器使用 repo.docx_第4页
第4页 / 共7页
脱离 Gerrit 审核服务器使用 repo.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

脱离 Gerrit 审核服务器使用 repo.docx

《脱离 Gerrit 审核服务器使用 repo.docx》由会员分享,可在线阅读,更多相关《脱离 Gerrit 审核服务器使用 repo.docx(7页珍藏版)》请在冰豆网上搜索。

脱离 Gerrit 审核服务器使用 repo.docx

脱离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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1