2017-08-08 10:27:12 -04:00
|
|
|
# Contributing
|
2016-06-08 03:59:08 -04:00
|
|
|
|
2012-11-14 14:40:13 -05:00
|
|
|
Contributions from the community are essential in keeping Hibernate (any Open Source
|
2017-08-08 10:27:12 -04:00
|
|
|
project really) strong and successful.
|
|
|
|
|
|
|
|
# Legal
|
|
|
|
|
|
|
|
All original contributions to Hibernate are licensed under the
|
|
|
|
[GNU Lesser General Public License (LGPL)](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt),
|
|
|
|
version 2.1 or later, or, if another license is specified as governing the file or directory being
|
|
|
|
modified, such other license. The LGPL text is included verbatim in the link:lgpl.txt[lgpl.txt] file
|
|
|
|
in the root directory of the ORM repository.
|
|
|
|
|
|
|
|
All contributions are subject to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
|
|
|
|
The DCO text is also included verbatim in the link:dco.txt[dco.txt] file in the root directory of the ORM repository.
|
|
|
|
|
|
|
|
|
|
|
|
## Guidelines
|
|
|
|
|
|
|
|
While we try to keep requirements for contributing to a minimum, there are a few guidelines
|
|
|
|
we ask that you mind.
|
|
|
|
|
|
|
|
For code contributions, these guidelines include:
|
|
|
|
* respect the project code style - find templates for [Eclipse](https://community.jboss.org/docs/DOC-16649)
|
|
|
|
and [IntelliJ IDEA](https://community.jboss.org/docs/DOC-15468)
|
|
|
|
* have a corresponding JIRA issue and the key for this JIRA issue should be used in the commit message
|
|
|
|
* have a set of appropriate tests. For bug reports, the tests reproduce the initial reported bug
|
|
|
|
and illustrates that the solution actually fixes the bug. For features/enhancements, the
|
|
|
|
tests illustrate the feature working as intended. In both cases the tests are incorporated into
|
|
|
|
the project to protect against regressions.
|
|
|
|
* if applicable, documentation is updated to reflect the introduced changes
|
|
|
|
* the code compiles and the tests pass (`./gradlew clean build`)
|
|
|
|
|
|
|
|
For documentation contributions, mainly just respect the project code style, especially in regards
|
|
|
|
to use of tabs - as mentioned above, code style templates are available for both Eclipse and IntelliJ
|
|
|
|
IDEA IDEs. Ideally these contributions would also have a corresponding JIRA issue, although this
|
|
|
|
is less necessary for documentation contributions.
|
|
|
|
|
2012-11-14 14:40:13 -05:00
|
|
|
|
|
|
|
## Getting Started
|
2016-06-08 03:59:08 -04:00
|
|
|
|
2012-11-14 14:40:13 -05:00
|
|
|
If you are just getting started with Git, GitHub and/or contributing to Hibernate via
|
2017-08-08 10:27:12 -04:00
|
|
|
GitHub there are a few pre-requisite steps to follow:
|
2012-11-14 14:40:13 -05:00
|
|
|
|
2015-06-26 17:38:35 -04:00
|
|
|
* Make sure you have a [Hibernate JIRA account](https://hibernate.atlassian.net)
|
2012-11-14 14:40:13 -05:00
|
|
|
* Make sure you have a [GitHub account](https://github.com/signup/free)
|
2016-01-17 04:44:22 -05:00
|
|
|
* [Fork](https://help.github.com/articles/fork-a-repo) the Hibernate repository. As discussed in
|
2012-11-14 14:40:13 -05:00
|
|
|
the linked page, this also includes:
|
|
|
|
* [Set](https://help.github.com/articles/set-up-git) up your local git install
|
|
|
|
* Clone your fork
|
2017-08-08 10:27:12 -04:00
|
|
|
* See the wiki pages for setting up your IDE, whether you use
|
|
|
|
[IntelliJ IDEA](https://community.jboss.org/wiki/ContributingToHibernateUsingIntelliJ)
|
2013-05-01 15:00:49 -04:00
|
|
|
or [Eclipse](https://community.jboss.org/wiki/ContributingToHibernateUsingEclipse).
|
2012-11-14 14:40:13 -05:00
|
|
|
|
2017-08-08 10:27:12 -04:00
|
|
|
|
2012-11-14 14:40:13 -05:00
|
|
|
## Create the working (topic) branch
|
2016-06-08 03:59:08 -04:00
|
|
|
|
2017-08-08 10:27:12 -04:00
|
|
|
Create a [topic branch](http://git-scm.com/book/en/Git-Branching-Branching-Workflows#Topic-Branches)
|
|
|
|
on which you will work. The convention is to incorporate the JIRA issue key in the name of this branch,
|
2017-08-08 12:44:45 -04:00
|
|
|
although this is more of a mnemonic strategy than a hard-and-fast rule - but doing so helps:
|
2017-08-08 10:27:12 -04:00
|
|
|
* remember what each branch is for
|
|
|
|
* isolate the work from other contributions you may be working on.
|
|
|
|
|
2017-08-08 12:44:45 -04:00
|
|
|
_If there is not already a JIRA issue covering the work you want to do, create one._
|
|
|
|
|
|
|
|
Assuming you will be working from the master branch and working
|
2015-06-26 17:38:35 -04:00
|
|
|
on the JIRA HHH-123 : `git checkout -b HHH-123 master`
|
2012-11-14 14:40:13 -05:00
|
|
|
|
|
|
|
|
|
|
|
## Code
|
2016-06-08 03:59:08 -04:00
|
|
|
|
2012-12-31 09:00:51 -05:00
|
|
|
Do yo thing!
|
2012-11-14 14:40:13 -05:00
|
|
|
|
2017-08-08 12:44:45 -04:00
|
|
|
|
2012-11-14 14:40:13 -05:00
|
|
|
## Commit
|
|
|
|
|
|
|
|
* Make commits of logical units.
|
2015-06-26 17:38:35 -04:00
|
|
|
* Be sure to use the JIRA issue key in the commit message. This is how JIRA will pick
|
|
|
|
up the related commits and display them on the JIRA issue.
|
2012-11-14 14:40:13 -05:00
|
|
|
* Make sure you have added the necessary tests for your changes.
|
|
|
|
* Run _all_ the tests to assure nothing else was accidentally broken.
|
2013-05-22 13:41:37 -04:00
|
|
|
* Make sure your source does not violate the checkstyles.
|
2012-11-14 14:40:13 -05:00
|
|
|
|
2015-06-26 17:38:35 -04:00
|
|
|
_Prior to committing, if you want to pull in the latest upstream changes (highly
|
2012-11-14 14:40:13 -05:00
|
|
|
appreciated btw), please use rebasing rather than merging. Merging creates
|
|
|
|
"merge commits" that really muck up the project timeline._
|
|
|
|
|
|
|
|
## Submit
|
2016-06-08 03:59:08 -04:00
|
|
|
|
2013-05-01 15:00:49 -04:00
|
|
|
* Push your changes to the topic branch in your fork of the repository.
|
2016-11-14 14:30:47 -05:00
|
|
|
* Initiate a [pull request](http://help.github.com/articles/creating-a-pull-request)
|
2015-06-26 17:38:35 -04:00
|
|
|
* Update the JIRA issue, adding a comment including a link to the created pull request
|
2017-08-08 10:27:12 -04:00
|
|
|
_if the JIRA key was not used in the commit message_.
|
|
|
|
|
|
|
|
|
|
|
|
It is important that this topic branch on your fork:
|
|
|
|
|
|
|
|
* be isolated to just the work on this one JIRA issue, or multiple issues if they are
|
|
|
|
related and also fixed/implemented by this work. The main point is to not push
|
|
|
|
commits for more than one PR to a single branch - GitHub PRs are linked to
|
|
|
|
a branch rather than specific commits.
|
|
|
|
* remain until the PR is closed. Once the underlying branch is deleted the corresponding
|
|
|
|
PR will be closed, if not already, and the changes will be lost.
|