Contribution guidelines

Project will probably be moved to ONAP Gerrit repository. Thus, please follow ONAP contribution guidelines.

Merging

First of all let's avoid merge commits. To achieve it we should:

  • rebase master changes to task branches,
  • manually merge task branches to master with --ff-only option.

The last part needs some comment. In Gerrit master history is linear and easy to follow. That is probably the greatest (only? :wink:) advantage of Gerrit over GitLab. In GitLab EE it is possible to configure MRs so merge commits are avoided. However in GitLab CE it is not possible. To mitigate this, we should manually merge branches into master.

Some commands which you might find useful:

# 1. Update master
git checkout master
git fetch
git merge -ff-only

# 2. Rebase branch on fresh master
git checkout $BRANCH
git rebase -i master
git push --force

# 3. Merge branch
git checkout master
git merge --ff-only $BRANCH
git branch -d $BRANCH
git push origin --delete $BRANCH
git push

Sign-off rules

Each commit has to be signed-off. By signing the commit you certify that you did follow rules defined in the document https://gerrit.onap.org/r/static/signoffrules.txt:

Sign your work

To improve tracking of who did what, especially with contributions that
can percolate to their final resting place in the code base through
several layers of maintainers, we've introduced a "sign-off" procedure
on all contributions submitted.

The sign-off is a simple line at the end of the explanation for the
contribution, which certifies that you wrote it or otherwise have the
right to pass it on as an open-source contribution. When you sign-off
your contribution you are stating the following:

    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.