
=======================
 Contributing Overview
=======================


RhodeCode Community Edition is an open source code management platform. We
encourage contributions to our project from the community. This is a basic
overview of the procedures for adding your contribution to RhodeCode.



Check the Issue Tracker
=======================

Make an account at https://issues.rhodecode.com/account/register and browse the
current tickets for bugs to fix and tasks to do. Have a bug or feature that you
can't find in the tracker? Create a new issue for it. When you select a ticket,
make sure to assign it to yourself and mark it "in progress" to avoid duplicated
work. 



Sign Up at code.rhodecode.com
=============================

Make an account at https://code.rhodecode.com/ using an email or your existing
GitHub, Bitbucket, Google, or Twitter account. Fork the repo you'd like to
contribute to; we suggest adding your username to the fork name. Clone your fork
to your computer. We use Mercurial for source control management; see
https://www.mercurial-scm.org/guide to get started quickly.



Set Up A Local Instance
=======================

You will need to set up an instance of RhodeCode CE using VCSServer so that you
can see your work locally as you make changes. We recommend using Linux for this
but it can also be built on OSX.

See :doc:`dev-setup` for instructions.



Code!
=====

You can now make, see, and test your changes locally. We are always improving to
keep our code clean and the cost of maintaining it low. This applies in the same
way for contributions. We run automated checks on our pull requests, and expect
understandable code. We also aim to provide test coverage for as much of our
codebase as possible; any new features should be augmented with tests.

Keep in mind that when we accept your contribution, we also take responsibility
for it; we must understand it to take on that responsibility.

See :doc:`standards` for more detailed information.



Commit And Push Your Changes
============================

We highly recommend making a new bookmark for each feature, bug, or set of
commits you make so that you can point to it when creating your pull request.
Please also reference the ticket number in your commit messages. Don't forget to
push the bookmark!



Submit a Pull Request
=====================

Go to your fork, and choose "Create Pull Request" from the Options menu. Use
your bookmark as the source, and choose someone to review it. Don't worry about
chosing the right person; we'll assign the best contributor for the job. You'll
get feedback and an assigned status.

Be prepared to make updates to your pull request after some feedback.
Collaboration is part of the process and improvements can often be made.



Sign the Contributor License Agreement
======================================

If your contribution is approved, you will need to virtually sign the license
agreement in order for it to be merged into the project's codebase.

You can read it on our website at https://rhodecode.com/rhodecode-cla

To sign electronically, go to https://rhodecode.com/sign-cla



That's it! We'll take it from there. Thanks for your contribution!
------------------------------------------------------------------

.. note:: If you have any questions or comments, feel free to contact us through
          either the community portal(community.rhodecode.com), IRC
          (irc.freenode.net), or Slack (rhodecode.com/join).






