Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 0 additions & 30 deletions CONTRIBUTING

This file was deleted.

83 changes: 83 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# GlusterFS project Contribution guidelines

## Development Workflow

We follow most of the details as per the [document here](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests). If you are not aware of the github workflow, it is recommended to go through them before continuing here.

0. Fork Repository
- Fork [GlusterFS repository](https://github.com/gluster/glusterfs/fork).

1. Clone Repository
- Clone the glusterfs repo freshly from github using below steps.

```
git clone git@github.com:${username}/glusterfs.git
cd glusterfs/
git remote add upstream git@github.com:gluster/glusterfs.git
```

2. Commit Message / PR description:
- The name of the branch on your personal fork can start with issueNNNN, followed by anything of your choice.
- PRs continue to have the title of format "component: \<title\>", like it is practiced now.
- 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.

3. Tests:
- All the required smoke tests would be auto-triggered.
- The "regression" tests would be triggered by a comment **"/ok-to-test"** from anyone in the [@gluster-all](https://github.com/orgs/gluster/teams/gluster-all) group.

4. Review Process:
- `+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.

- Any further discussions can happen as comments in the PR.

5. Making changes:
- There are 2 approaches to submit changes done after addressing review comments.
- Commit changes as a new commit on top of the original commits in the branch, and push the changes to same branch (issueNNNN)
- Commit changes into the same commit with `--amend` option, and do a push to the same branch with `--force` option.

6. Merging:
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Merge type is "Squash and Merge"?

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. Only that is permitted. Will update the document

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

- GlusterFS project follows 'Squash and Merge' method
- 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.
- The merging of the patch is expected to be done by the maintainers.
- It can be done when all the tests (smoke and regression) pass.
- When the PR has 'Approved' flag from corresponding maintainer.
- If you feel there is delay, feel free to add a comment, discuss the same in Slack channel, or send email.

## By contributing to this project, the contributor would need to agree to below.

### Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or

(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or

(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.

(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.

17 changes: 11 additions & 6 deletions rfc.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@
# i.e. where we are interested in the result of a command,
# we have to run the command in an if-statement.

UPSTREAM=${GLUSTER_ORIGIN:-upstream}
if [ -n "$(git branch | grep ${UPSTREAM})" ] ; then
UPSTREAM=origin
fi

ORIGIN=${GLUSTER_ORIGIN:-origin}

while getopts "v" opt; do
Expand Down Expand Up @@ -88,7 +93,7 @@ check_backport()
else
# Search master for the same change ID (rebase_changes has run, so we
# should never not find a Change-Id)
mchangeid=$(git log $ORIGIN/master --format='%b' --grep="^Change-Id: ${changeid}" | grep ${changeid} | awk '{print $2}')
mchangeid=$(git log $UPSTREAM/master --format='%b' --grep="^Change-Id: ${changeid}" | grep ${changeid} | awk '{print $2}')

# Check if we found the change ID on master, else throw a message to
# decide if we should continue.
Expand Down Expand Up @@ -116,7 +121,7 @@ check_backport()

rebase_changes()
{
GIT_EDITOR=$0 git rebase -i $ORIGIN/$branch;
GIT_EDITOR=$0 git rebase -i $UPSTREAM/$branch;
}


Expand Down Expand Up @@ -212,7 +217,7 @@ EOF

assert_diverge()
{
git diff $ORIGIN/$branch..HEAD | grep -q .;
git diff $UPSTREAM/$branch..HEAD | grep -q .;
}


Expand Down Expand Up @@ -258,7 +263,7 @@ main()
return;
fi

git fetch $ORIGIN;
git fetch $UPSTREAM;

rebase_changes;

Expand Down Expand Up @@ -299,9 +304,9 @@ main()
fi

if [ -z "${reference}" ]; then
$drier git push $ORIGIN HEAD:refs/for/$branch/rfc;
$drier git push $ORIGIN HEAD:temp_${branch}/$(date +%Y-%m-%d_%s);
else
$drier git push $ORIGIN HEAD:refs/for/$branch/ref-${reference};
$drier git push $ORIGIN HEAD:issue${reference}_${branch};
fi
}

Expand Down