2021-02-12 11:58:20 +05:30
|
|
|
Development workflow of Gluster
|
2015-11-11 14:01:47 +05:30
|
|
|
================================
|
|
|
|
|
|
|
|
|
|
This document provides a detailed overview of the development model
|
2021-02-14 18:11:17 +05:30
|
|
|
followed by the GlusterFS project. For a simpler overview visit
|
2018-10-19 22:08:10 +05:30
|
|
|
[Simplified development workflow](./Simplified-Development-Workflow.md).
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
##Basics
|
|
|
|
|
--------
|
2015-11-11 14:01:47 +05:30
|
|
|
|
|
|
|
|
The GlusterFS development model largely revolves around the features and
|
2021-02-14 18:11:17 +05:30
|
|
|
functionality provided by Git version control system, Github and Jenkins
|
|
|
|
|
continuous integration system. It is a primer for a contributor to the project.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
### Git and Github
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-12 11:58:20 +05:30
|
|
|
Git is an extremely flexible, distributed version control system.
|
2021-02-14 18:11:17 +05:30
|
|
|
GlusterFS's main repository is at [Git](http://git.gluster.org) and at
|
|
|
|
|
[GitHub](https://github.com/gluster/glusterfs).
|
2015-11-11 14:01:47 +05:30
|
|
|
A good introduction to Git can be found at
|
|
|
|
|
<http://www-cs-students.stanford.edu/~blynn/gitmagic/>.
|
|
|
|
|
|
|
|
|
|
### Jenkins
|
|
|
|
|
|
|
|
|
|
Jenkins is a Continuous Integration build system. Jenkins is hosted at
|
2021-02-14 18:11:17 +05:30
|
|
|
<http://build.gluster.org>. Jenkins is configured to work with Github by
|
|
|
|
|
setting up hooks. Every "Change" which is pushed to Github is
|
2021-02-12 11:58:20 +05:30
|
|
|
automatically picked up by Jenkins, built and smoke tested. The output of
|
2015-11-11 14:01:47 +05:30
|
|
|
all builds and tests can be viewed at
|
2021-02-12 11:58:20 +05:30
|
|
|
<http://build.gluster.org/job/smoke/>. Jenkins is also set up with a
|
2015-11-11 14:01:47 +05:30
|
|
|
'regression' job which is designed to execute test scripts provided as
|
|
|
|
|
part of the code change.
|
|
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
##Preparatory Setup
|
|
|
|
|
-------------------
|
2015-11-11 14:01:47 +05:30
|
|
|
|
|
|
|
|
Here is a list of initial one-time steps before you can start hacking on
|
|
|
|
|
code.
|
|
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
###Fork Repository
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
Fork [GlusterFS repository](https://github.com/gluster/glusterfs/fork)
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
### Clone a working tree
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
Get yourself a working tree by cloning the development repository from
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
```console
|
|
|
|
|
# git clone git@github.com:${username}/glusterfs.git
|
|
|
|
|
# cd glusterfs/
|
|
|
|
|
# git remote add upstream git@github.com:gluster/glusterfs.git
|
|
|
|
|
```
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
### Preferred email and set username
|
|
|
|
|
|
|
|
|
|
On the first login, add your git/work email to your identity. You will have
|
|
|
|
|
to click on the URL which is sent to your email and set up a proper Full
|
|
|
|
|
Name. Select yourself a username. Make sure you set your git/work email
|
|
|
|
|
as your preferred email. This should be the email address from which all your
|
|
|
|
|
code commits are associated.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
|
|
|
|
### Watch glusterfs
|
|
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
In Github, watch the 'glusterfs' repository. Tick on suitable
|
|
|
|
|
(All activity, Ignore, participating, or custom) type of notifications to
|
|
|
|
|
get alerts.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
|
|
|
|
### Email filters
|
|
|
|
|
|
2021-02-12 11:58:20 +05:30
|
|
|
Set up a filter rule in your mail client to tag or classify emails with
|
2015-11-11 14:01:47 +05:30
|
|
|
the header
|
2019-09-20 15:23:43 +05:30
|
|
|
```text
|
2021-02-14 18:11:17 +05:30
|
|
|
list: <glusterfs.gluster.github.com>
|
2019-09-20 15:23:43 +05:30
|
|
|
```
|
2021-02-14 18:11:17 +05:30
|
|
|
as mails originating from the github system.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
##Development & Other flows
|
|
|
|
|
---------------------------
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
### Issue
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
- Make sure there is an issue filed for the task you are working on.
|
|
|
|
|
- If it is not filed, open the issue with all the description.
|
|
|
|
|
- If it is a bug fix, add label "Type:Bug".
|
|
|
|
|
- If it is an RFC, provide all the documentation, and request for "DocApproved", and "SpecApproved" label.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
### Code
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
- Start coding
|
|
|
|
|
- Make sure clang-format is installed and is run on the patch.
|
|
|
|
|
|
|
|
|
|
### Keep up-to-date
|
|
|
|
|
- GlusterFS is a large project with many developers, so there would be one or the other patch everyday.
|
|
|
|
|
- It is critical for developer to be up-to-date with devel repo to be Conflict-Free when PR is opened.
|
|
|
|
|
- Git provides many options to keep up-to-date, below is one of them
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2019-09-20 15:23:43 +05:30
|
|
|
```console
|
2021-02-14 18:11:17 +05:30
|
|
|
# git fetch upstream
|
|
|
|
|
# git rebase upstream/devel
|
2019-09-20 15:23:43 +05:30
|
|
|
```
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
##Branching policy
|
|
|
|
|
------------------
|
2015-11-11 14:01:47 +05:30
|
|
|
|
|
|
|
|
This section describes both, the branching policies on the public repo
|
|
|
|
|
as well as the suggested best-practice for local branching
|
|
|
|
|
|
2020-12-09 19:38:22 +05:30
|
|
|
### Devel/release branches
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
In glusterfs, the 'devel' branch is the forward development branch.
|
2015-11-11 14:01:47 +05:30
|
|
|
This is where new features come in first. In fact this is where almost
|
2020-12-09 19:38:22 +05:30
|
|
|
every change (commit) comes in first. The devel branch is always kept
|
2015-11-11 14:01:47 +05:30
|
|
|
in a buildable state and smoke tests pass.
|
|
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
Release trains (3.1.z, 3.2.z,..., 8.y, 9.y) each have a branch originating from
|
2020-12-09 19:38:22 +05:30
|
|
|
devel. Code freeze of each new release train is marked by the creation
|
2021-02-12 11:58:20 +05:30
|
|
|
of the `release-x.y` branch. At this point, no new features are added to
|
2020-12-09 19:38:22 +05:30
|
|
|
the release-x.y branch. All fixes and commits first get into devel.
|
2015-11-11 14:01:47 +05:30
|
|
|
From there, only bug fixes get backported to the relevant release
|
2018-07-21 23:36:22 +05:30
|
|
|
branches. From the release-x.y branch, actual release code snapshots
|
2015-11-11 14:01:47 +05:30
|
|
|
(e.g. glusterfs-3.2.2 etc.) are tagged (git annotated tag with 'git tag
|
|
|
|
|
-a') shipped as a tarball.
|
|
|
|
|
|
|
|
|
|
### Personal per-task branches
|
|
|
|
|
|
|
|
|
|
As a best practice, it is recommended you perform all code changes for a
|
|
|
|
|
task in a local branch in your working tree. The local branch should be
|
|
|
|
|
created from the upstream branch to which you intend to submit the
|
2021-02-14 18:11:17 +05:30
|
|
|
change. The name of the branch on your personal fork can start with issueNNNN,
|
|
|
|
|
followed by anything of your choice. If you are submitting changes to the devel
|
|
|
|
|
branch, first create a local task branch like this -
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2019-09-20 15:23:43 +05:30
|
|
|
```console
|
2021-02-14 18:11:17 +05:30
|
|
|
# git checkout -b issueNNNN upstream/main
|
2019-09-20 15:23:43 +05:30
|
|
|
... <hack, commit>
|
|
|
|
|
```
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
##Building
|
|
|
|
|
----------
|
2015-11-11 14:01:47 +05:30
|
|
|
|
|
|
|
|
### Environment Setup
|
|
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
For details about the required packages for the build environment
|
|
|
|
|
refer : [Building GlusterFS](./Building-GlusterFS.md)
|
2015-11-11 14:01:47 +05:30
|
|
|
|
|
|
|
|
### Creating build environment
|
|
|
|
|
|
|
|
|
|
Once the required packages are installed for your appropiate system,
|
|
|
|
|
generate the build configuration:
|
2019-09-20 15:23:43 +05:30
|
|
|
```console
|
|
|
|
|
# ./autogen.sh
|
|
|
|
|
# ./configure --enable-fusermount
|
|
|
|
|
```
|
2015-11-11 14:01:47 +05:30
|
|
|
|
|
|
|
|
### Build and install
|
2019-09-20 15:23:43 +05:30
|
|
|
```console
|
2021-02-14 18:11:17 +05:30
|
|
|
# make && make install
|
2019-09-20 15:23:43 +05:30
|
|
|
```
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
##Commit policy / PR description
|
|
|
|
|
--------------------------------
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
Typically you would have a local branch per task. You will need to
|
|
|
|
|
sign-off your commit (git commit -s) before sending the
|
2015-11-11 14:01:47 +05:30
|
|
|
patch for review. By signing off your patch, you agree to the terms
|
2021-02-12 11:58:20 +05:30
|
|
|
listed under the "Developer's Certificate of Origin" section in the
|
2015-11-11 14:01:47 +05:30
|
|
|
CONTRIBUTING file available in the repository root.
|
|
|
|
|
|
|
|
|
|
Provide a meaningful commit message. Your commit message should be in
|
|
|
|
|
the following format
|
|
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
- A short one-line title of format 'component: title', describing what the patch accomplishes
|
2015-11-11 14:01:47 +05:30
|
|
|
- An empty line following the subject
|
|
|
|
|
- Situation necessitating the patch
|
|
|
|
|
- Description of the code changes
|
|
|
|
|
- Reason for doing it this way (compared to others)
|
|
|
|
|
- Description of test cases
|
2021-02-14 18:11:17 +05:30
|
|
|
- When you open a PR, having a reference Issue for the commit is mandatory in GlusterFS.
|
|
|
|
|
- Commit message can have, either Fixes: #NNNN or Updates: #NNNN in a separate line in the commit message.
|
|
|
|
|
Here, NNNN is the Issue ID in glusterfs repository.
|
|
|
|
|
- Each commit needs the author to have the 'Signed-off-by: Name <email>' line.
|
|
|
|
|
Can do this by -s option for git commit.
|
|
|
|
|
- If the PR is not ready for review, apply the label work-in-progress.
|
|
|
|
|
Check the availability of "Draft PR" is present for you, if yes, use that instead.
|
|
|
|
|
|
|
|
|
|
##Push the change
|
|
|
|
|
-----------------
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
After doing the local commit, it is time to submit the code for review.
|
|
|
|
|
There is a script available inside glusterfs.git called rfc.sh. It is
|
|
|
|
|
recommended you keep pushing to your repo every day, so you don't loose
|
|
|
|
|
any work. You can submit your changes for review by simply executing
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
```console
|
|
|
|
|
# ./rfc.sh
|
|
|
|
|
```
|
|
|
|
|
or
|
|
|
|
|
```console
|
|
|
|
|
# git push origin HEAD:issueNNN
|
|
|
|
|
```
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
This script rfc.sh does the following:
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
- The first time it is executed, it downloads a git hook from
|
|
|
|
|
<http://review.gluster.org/tools/hooks/commit-msg> and sets it up
|
|
|
|
|
locally to generate a Change-Id: tag in your commit message (if it
|
|
|
|
|
was not already generated.)
|
|
|
|
|
- Rebase your commit against the latest upstream HEAD. This rebase
|
|
|
|
|
also causes your commits to undergo massaging from the just
|
|
|
|
|
downloaded commit-msg hook.
|
|
|
|
|
- Prompt for a Reference Id for each commit (if it was not already provided)
|
|
|
|
|
and include it as a "fixes: #n" tag in the commit log. You can just hit
|
|
|
|
|
<enter> at this prompt if your submission is purely for review
|
|
|
|
|
purposes.
|
|
|
|
|
- Push the changes for review. On a successful push, you will see a URL pointing to
|
|
|
|
|
the change in [Pull requests](https://github.com/gluster/glusterfs/pulls) section.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
## Test cases and Verification
|
|
|
|
|
------------------------------
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
### Auto-triggered tests
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
The integration between Jenkins and Github triggers an event in Jenkins
|
|
|
|
|
on every push of changes, to pick up the change and run build and smoke
|
|
|
|
|
test on it.
|
|
|
|
|
Part of the workflow is to aggregate and execute pre-commit test cases
|
|
|
|
|
that accompany patches, cumulatively for every new patch. This
|
|
|
|
|
guarantees that tests that are working till the present are not broken
|
|
|
|
|
with the new patch. This is so that code changes and accompanying test
|
|
|
|
|
cases are reviewed together. Once you upload the patch -
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
1. All the required smoke tests would be auto-triggered. You can retrigger
|
|
|
|
|
the smoke tests using "/recheck smoke" as comment. Passing the automated
|
|
|
|
|
smoke test is a necessary condition but not sufficient.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
2. The regression tests would be triggered by a comment "/run regression"
|
|
|
|
|
from developers in the @gluster organization once smoke test is passed.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
If smoke/regression fails, it is a good reason to skip code review till
|
|
|
|
|
a fixed change is pushed later. You can click on the build URL
|
|
|
|
|
automatically to inspect the reason for auto verification failure.
|
|
|
|
|
In the Jenkins job page, you can click on the 'Console Output' link to
|
|
|
|
|
see the exact point of failure.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
All code changes which are not trivial (typo fixes, code comment
|
|
|
|
|
changes) must be accompanied with either a new test case script or
|
|
|
|
|
extend/modify an existing test case script. It is important to review
|
|
|
|
|
the test case in conjunction with the code change to analyze whether the
|
|
|
|
|
code change is actually verified by the test case.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
Regression tests (i.e, execution of all test cases accumulated with
|
|
|
|
|
every commit) is not automatically triggered as the test cases can be
|
|
|
|
|
extensive and is quite expensive to execute for every change submission
|
|
|
|
|
in the review/resubmit cycle. Passing the regression test is a
|
|
|
|
|
necessary condition for merge along with code review points.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
To check and run all regression tests locally, run the below script
|
|
|
|
|
from glusterfs root directory.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2019-09-20 15:23:43 +05:30
|
|
|
```console
|
2021-02-14 18:11:17 +05:30
|
|
|
# ./run-tests.sh
|
2019-09-20 15:23:43 +05:30
|
|
|
```
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
To run a single regression test locally, run the below command.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
```console
|
|
|
|
|
# prove -vf <path_to_the_file>
|
|
|
|
|
```
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
**NOTE:** The testing framework needs perl-Test-Harness package to be installed.
|
|
|
|
|
Ask for help as comment in PR if you have any questions about the process!
|
2018-07-21 23:36:22 +05:30
|
|
|
|
2015-11-11 14:01:47 +05:30
|
|
|
It is important to note that Jenkins verification is only a generic
|
2021-02-12 11:58:20 +05:30
|
|
|
verification of high-level tests. More concentrated testing effort for
|
2015-11-11 14:01:47 +05:30
|
|
|
the patch is necessary with manual verification.
|
|
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
### Glusto test framework
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
For any new feature that is posted for review, there should be
|
|
|
|
|
accompanying set of tests in
|
|
|
|
|
[glusto-tests](https://github.com/gluster/glusto-tests). These
|
|
|
|
|
tests will be run nightly and/or before release to determine the health
|
|
|
|
|
of the feature. Please go through glusto-tests project to understand
|
|
|
|
|
more information on how to write and execute the tests in glusto.
|
|
|
|
|
|
|
|
|
|
1. Extend/Modify old test cases in existing scripts - This is typically
|
|
|
|
|
when present behavior (default values etc.) of code is changed.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
2. No test cases - This is typically when a code change is trivial
|
|
|
|
|
(e.g. fixing typos in output strings, code comments).
|
|
|
|
|
|
|
|
|
|
3. Only test case and no code change - This is typically when we are
|
|
|
|
|
adding test cases to old code (already existing before this regression
|
|
|
|
|
test policy was enforced). More details on how to work with test case
|
|
|
|
|
scripts can be found in tests/README.
|
|
|
|
|
|
|
|
|
|
##Reviewing / Commenting
|
|
|
|
|
------------------------
|
|
|
|
|
|
|
|
|
|
Code review with Github is relatively easy compared to other available
|
2015-11-11 14:01:47 +05:30
|
|
|
tools. Each change is presented as multiple files and each file can be
|
|
|
|
|
reviewed in Side-by-Side mode. While reviewing it is possible to comment
|
2021-02-14 18:11:17 +05:30
|
|
|
on each line by clicking on '+' icon and writing in your comments in
|
2015-11-11 14:01:47 +05:30
|
|
|
the text box. Such in-line comments are saved as drafts, till you
|
2021-02-14 18:11:17 +05:30
|
|
|
finally publish them by Starting a Review.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
##Incorporate, rfc.sh, Reverify
|
|
|
|
|
--------------------------------------
|
2015-11-11 14:01:47 +05:30
|
|
|
|
|
|
|
|
Code review comments are notified via email. After incorporating the
|
2021-02-12 11:58:20 +05:30
|
|
|
changes in code, you can mark each of the inline comments as 'done'
|
2021-02-14 18:11:17 +05:30
|
|
|
(optional). After all the changes to your local files, create new
|
|
|
|
|
commits in the same branch with -
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2019-09-20 15:23:43 +05:30
|
|
|
```console
|
2021-02-14 18:11:17 +05:30
|
|
|
# git commit -a -s
|
2019-09-20 15:23:43 +05:30
|
|
|
```
|
2021-02-14 18:11:17 +05:30
|
|
|
Push the commit by executing rfc.sh. If your previous push was an "rfc"
|
|
|
|
|
push (i.e, without a Issue Id) you will be prompted for a Issue Id
|
2015-11-11 14:01:47 +05:30
|
|
|
again. You can re-push an rfc change without any other code change too
|
2021-02-14 18:11:17 +05:30
|
|
|
by giving a Issue Id.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
|
|
|
|
On the new push, Jenkins will re-verify the new change (independent of
|
|
|
|
|
what the verification result was for the previous push).
|
|
|
|
|
|
|
|
|
|
It is the Change-Id line in the commit log (which does not change) that
|
|
|
|
|
associates the new push as an update for the old push (even though they
|
2021-02-14 18:11:17 +05:30
|
|
|
had different commit ids) under the same Change.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
If further changes are found necessary, changes can be requested or
|
|
|
|
|
comments can be made on the new patch as well, and the same cycle repeats.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
If no further changes are necessary, the reviewer can approve the patch.
|
2018-07-21 23:36:22 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
##Submission Qualifiers
|
|
|
|
|
-----------------------
|
2018-07-21 23:36:22 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
GlusterFS project follows 'Squash and Merge' method.
|
2020-04-03 12:30:51 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
- This is mainly to preserve the historic Gerrit method of one patch in git log for one URL link.
|
|
|
|
|
- This also makes every merge a complete patch, which has passed all tests.
|
2020-04-03 12:30:51 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
For a change to get merged, there are two qualifiers that are enforced
|
|
|
|
|
by the Github system. They are -
|
2020-04-03 12:30:51 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
1. A change should have at approver flag from Reviewers
|
|
|
|
|
2. A change should have passed smoke and regression tests.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
The project maintainer will merge the changes once a patch
|
|
|
|
|
meets these qualifiers. If you feel there is delay, feel free
|
|
|
|
|
to add a comment, discuss the same in Slack channel, or send email.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
##Submission Disqualifiers
|
|
|
|
|
--------------------------
|
2018-07-21 23:36:22 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
- +2 : is equivalent to "Approve" from the people in the maintainer's group.
|
|
|
|
|
- +1 : can be given by a maintainer/reviewer by explicitly stating that in the comment.
|
|
|
|
|
- -1 : provide details on required changes and pick "Request Changes" while submitting your review.
|
|
|
|
|
- -2 : done by adding the DO-NOT-MERGE label.
|
2015-11-11 14:01:47 +05:30
|
|
|
|
2021-02-14 18:11:17 +05:30
|
|
|
Any further discussions can happen as comments in the PR.
|