You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 43 Next »

This guide gives the best way for contributing to Apache HAWQ. Contributing to HAWQ includes not only writing some code, it also includes helping new users on mailing list, testing releases and document improvement.

HAWQ Mailing lists

If you plan to contribute to HAWQ on an ongoing basis it is best to be subscribed to at least developer mailing list. As with any Apache Project all discussions are expected to happen there. Remember "if it didn't happen on the mailing list – it didn't happen". Follow this link to find out how to subscribe to various mailing lists.

HAWQ Repositories

HAWQ issue tracking

HAWQ uses Jira for issue tracking. All changes are discussed and reviewed in Jira before commit.

Coding conventions

HAWQ follows the PostgreSQL coding conventions: http://www.postgresql.org/docs/9.1/static/source.html

Contribution process (for contributors)

The overall contribution process is to work on apache repo (https://git-wip-us.apache.org/repos/asf/incubator-hawq.git) and fork your own repo from the HAWQ github mirror repo for code review purpose.

Before forking your own repo, you need to have a github account. Then go to the web page https://github.com/apache/incubator-hawq, click "Fork" button. Now you get a forked repo (for example, https://github.com/changleicn/incubator-hawq).


 

# Clone the Apache repository. 
git clone https://git-wip-us.apache.org/repos/asf/incubator-hawq.git
 
# Add your own forked github repo as “myfork” (used only for code review purpose)
git remote add myfork https://github.com/changleicn/incubator-hawq

# Merge the update of the upstream into your local master
git checkout master && git pull origin master

# Create a feature branch “feature-awesome” to work on
git checkout -b feature-awesome master

# Make changes and commit to local. Please format commit message as follows and feel free to add additional comments.
# <jira ticket number>. <Commit Message>
# Example: HAWQ-1002. Add awesome feature 
git commit -a -m "HAWQ-1002. Add awesome feature"

# Push it to your github repo for code review
git push --set-upstream myfork feature-awesome

 

Now you can go to your own github fork to create pull requests for code review (https://github.com/changleicn/incubator-hawq). Choose the master branch of  https://github.com/apache/incubator-hawq as the base for code review.

 

Code review

We expect that pull requests which have been submitted on github will be reviewed by committers, but will be visible to the community for comments as well. Contributors should learn the code review criteria in order to make the changes accepted.

 Code review criteria

  • Features should have a lot of potential use cases and benefit a lot of users

  • Fixes should fix the root cause of the problem
  • Easily tested and have tests associated with the commits
  • Changes have been discussed on JIRA and have a JIRA linked to your change(Pull Request)
  • Code follows the coding conventions
  • Do not introduce potential performance regressions

Commit process (for committers) 

The overall commit process is to review the pull request. If the change passes code review, get the patch and commit it to Apache git repo.

# Create a working directory
mkdir working
cd working

# Clone the apache repository
git clone https://git-wip-us.apache.org/repos/asf/incubator-hawq.git

# Add remote github mirror repository
git remote add github https://github.com/apache/incubator-hawq.git

# Get the pull request, using PR#2 as example, you can replace 2 with any other PR #.
git fetch github pull/2/head:feature_awesome

 
# Checkout master branch
git checkout master

# Merge the patch
git rebase feature_awesome

# Build
make

# Run unit tests (more in future before committing to “develop” branch)
make installcheck-good

# Push to apache repo (note: all commits needs an Apache JIRA)
git push origin master

# Delete the feature branch
git branch -d feature_awesome
 
# Clean up the working directory
cd ..
rm -fr working

 

 

 



  • No labels