Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Master should become the development branch for the next release (current sprint).
  • Whenever current release (sprint) goes to QA, new branch should be created from master. This way master can be used to develop functionality of the next release. All release fixes get merged to release branch and then to master.
  • All individual ticket/features development happen in separate repositories (either local or forks of GitHub mirror - https://github.com/apache/ignite) . Firm rule: ticket/feature branches should never be pushed to repo. 
  • Development  branches should be created off of the master branch (or release branch if one exists - in this case changes get merged to release branch and then to master branch). Changes get merged to master branch of the project Git via patch validation process described here - How to Contributeat  Contribution ways.
  • Git tag should be created for every release.
  • All CI tests must pass before the merge of ticket branches to the master (or release) branch.

...

  1. GitHub pull-request
  2. Patch-file

1. GitHub pull-request

 

 +------------+             +---------------+            +-----------------+

...

                                                         +-----------------+

For contributors

To start:

...

  • Fix / implement JIRA ticket in your fork. Commit branch to origin (origin = your fork). It's recommended to develop IGNITE-xxx ticket at ignite-xxx branch.
  • Create pull request from the new remote branch in the fork to master of Apache Ignite mirror. Please, start a title of the pull request from 'IGNITE-xxx'. An email about the pull request will be send to dev-list and the same JIRA comment will be added to the IGNITE-xxx ticket.
  • TeamCity will automatically trigger builds and label it as a "pull/<pull-request-number>/head". Select this label in the branches dropdown and monitor test results.
  • Once tests are passed, the pull request can be reviewed and merged by a committer.

For committers

In additional to contributors configuration, commiters need to have one more remote - for working with Apache Git repo. It can be added like this:

...

  1. Checks that you don't have any uncommitted changes.
  2. Checks you are one master branch and master branch is up-to-date.
  3. Updates local master from Apache git repo.
  4. Fetches pull request to a local branch:
    • git fetch upstream pull/<id>/head:pull-<id>-head

  5. Saves an author and a comment of the last commit at pull-<id>-head.
  6. Merges from the new branch to master:
    • git merge --squash pull-<id>-head
  7. Ask you about custom comment or using the saved comment.
  8. Commit to local master. The script automatically sign-off a commit and add "Fixes #<id>." suffix to comment (It will close the pull request, see https://help.github.com/articles/closing-issues-via-commit-messages/):
    • git commit --author=“<saved_author>" -s -m “<comment> - Fixes #<id>.”

Now, you will have one commit at master with all changes from pull-request. Changes can be reviewed again. If you accept all changes and want to push it, do next:

  •  git push apache master

 

2. Patch-file

2.1 Where to start

You can start by cloning the Ignite GIT repo.

Info
titleClone the repo
git clone https://git-wip-us.apache.org/repos/asf/incubator-ignite

2.2 How to generate patches

We use git as our version control system. To streamline the process of giving proper credit to the contributors when committing patches, we encourage contributors to submit patches generated using "git format-patch" command. This has many benefits:

...

Info
iconfalse
titleRun All for patch (manually)

 Note: All TC test builds can be triggered manually via "Ignite/ -> Run All for patch" (by 'Jira number'). A comment will be added to the jira with all new triggered builds.

2.3 For commiters

Contributor patches have to be applied by next command.

...