Git Gerrit工作流

Git Gerrit工作流,git,gerrit,Git,Gerrit,我们一直在考虑从只使用Git过渡到Gerrit review环境,因为我们希望启用代码审查和运行自动单元测试 我们还希望使用Git流工作流(因为人们已经非常习惯它了)() 现在,我想知道我们的第一种方法在现实生活中是否有效 我们已设置以下访问控制: [access "refs/*"] owner = group MyProject Admin owner = group MyProject Project Owner [access "refs/for/refs/

我们一直在考虑从只使用Git过渡到Gerrit review环境,因为我们希望启用代码审查和运行自动单元测试

我们还希望使用Git流工作流(因为人们已经非常习惯它了)()

现在,我想知道我们的第一种方法在现实生活中是否有效

我们已设置以下访问控制:

[access "refs/*"]
        owner = group MyProject Admin
        owner = group MyProject Project Owner
[access "refs/for/refs/heads/*"]
        push = group MyProject Contributor
        push = group MyProject Developer
        push = group MyProject Integrator
        push = group MyProject Project Owner
        pushMerge = group MyProject Developer
        pushMerge = group MyProject Integrator
        pushMerge = group MyProject Project Owner
        forgeCommitter = group MyProject Integrator
        forgeCommitter = group MyProject Project Owner
[access "refs/tags/*"]
        read = group MyProject CI System
        read = group MyProject Contributor
        read = group MyProject Developer
        read = group MyProject Project Owner
        pushTag = group MyProject Integrator
        pushTag = group MyProject Project Owner
[access "refs/heads/feature/*"]
        read = group MyProject Contributor
        read = group MyProject Developer
        read = group MyProject Integrator
        read = group MyProject Project Owner
        create = group MyProject Contributor
        create = group MyProject Developer
        create = group MyProject Integrator
        create = group MyProject Project Owner
        forgeAuthor = group MyProject Contributor
        forgeAuthor = group MyProject Developer
        forgeAuthor = group MyProject Integrator
        forgeAuthor = group MyProject Project Owner
        push = group MyProject Contributor
        push = group MyProject Developer
        push = group MyProject Integrator
        push = group MyProject Project Owner
        pushMerge = group MyProject Contributor
        pushMerge = group MyProject Developer
        pushMerge = group MyProject Integrator
        pushMerge = group MyProject Project Owner
        rebase = group MyProject Contributor
[access "refs/heads/*"]
        read = group MyProject CI System
        read = group MyProject Contributor
        read = group MyProject Developer
        read = group MyProject Integrator
        read = group MyProject Project Owner
        create = group MyProject Integrator
        forgeAuthor = group MyProject Developer
        forgeAuthor = group MyProject Integrator
        forgeAuthor = group MyProject Project Owner
        push = group MyProject Integrator
        push = +force group MyProject Project Owner
        pushMerge = group MyProject Integrator
        pushMerge = group MyProject Project Owner
        label-Code-Review = -2..+2 group MyProject Developer
        label-Code-Review = -2..+2 group MyProject Integrator
        label-Code-Review = -2..+2 group MyProject Project Owner
        label-Code-Review = -1..+1 group MyProject Contributor
        label-Code-Review = -1..+0 group MyProject CI System
        label-Verified = -1..+1 group MyProject Developer
        label-Verified = -1..+1 group MyProject Integrator
        label-Verified = -1..+1 group MyProject Project Owner
        label-Verified = +0..+1 group MyProject CI System
        submit = group MyProject Developer
        submit = group MyProject Integrator
        submit = group MyProject Project Owner
因此,所有要素将位于refs/heads/feature/*下。计划是从开发分支开始,从它创建一个特性,并处理该特性

git checkout -b feature/new-feature-xy develop
在功能分支上的工作期间,将执行几个新的提交。要启用与其他团队成员的协作(多个成员可能在同一功能上工作),用户将推拉功能分支

<do changes> # Do some work
$ git add <files> # Add files for revision (git add --all for add all files) 
$ git commit –m ‘<Commit message>’ # or ammend if you like
$ git pull # Merge new commits from other users
$ git pull origin/develop # Merge from develop
$ git push # Push the feature for other team members

这是一个可接受的Gerrit工作流,还是您认为我们将来使用这种方式会遇到问题?

您确定挤压提交将有助于审查吗?听起来您将要审阅大量的代码。如果审阅者对压缩的提交有意见怎么办?这些变化也会反映在源功能分支上吗?我不知道。。我的第一个想法是查看特性,而不考虑特性分支中的更改。但也许这不是一个好的处理方法。您有什么建议?我建议在提交过程中进行适当的审查,即在功能分支中(如果您需要的话)。这就是Gerrit的目标模式。但是如果一个贡献者实现了一个新功能(比如说1-2周),并在该功能分支上进行了大量提交(比如说>20),该怎么办呢。据我所知,这使得很多人对该功能进行了评论。将所有这些承诺压缩成一个,让团队成员检查该功能,而不是增加该功能,这是一个坏主意吗?他们不应该在一个功能上工作数周而不不断检查它。审阅较小的代码块会减少审阅者的时间,并导致更高质量的审阅。您确定挤压提交对审阅有用吗?听起来您将要审阅大量的代码。如果审阅者对压缩的提交有意见怎么办?这些变化也会反映在源功能分支上吗?我不知道。。我的第一个想法是查看特性,而不考虑特性分支中的更改。但也许这不是一个好的处理方法。您有什么建议?我建议在提交过程中进行适当的审查,即在功能分支中(如果您需要的话)。这就是Gerrit的目标模式。但是如果一个贡献者实现了一个新功能(比如说1-2周),并在该功能分支上进行了大量提交(比如说>20),该怎么办呢。据我所知,这使得很多人对该功能进行了评论。将所有这些承诺压缩成一个,让团队成员检查该功能,而不是增加该功能,这是一个坏主意吗?他们不应该在一个功能上工作数周而不不断检查它。审阅较小的代码块对审阅者来说花费更少的时间,并导致更高质量的审阅。
$ git checkout develop # Change branch to develop
$ git pull # Update develop
$ git merge --squash feature/new-feature-xy #Squash all commits in feature branch, merge it
$ git push origin HEAD:refs/for/develop # Push for review