X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=HACKING;h=2bd3114275e010c682102eaef249a4662de6e7ce;hp=6d89b01e357b4970b317461ee41c0bec37a98600;hb=cf1418e9a85013bbf8dbcc2d2e9985695993d9f4;hpb=330b0d68c278a1122193106d4d390d6105981918 diff --git a/HACKING b/HACKING index 6d89b01e35..2bd3114275 100644 --- a/HACKING +++ b/HACKING @@ -1,7 +1,14 @@ -NB! If you're behind a corporate wall with http only access to the +// This file is part of the Doxygen Developer Manual +/** @page patchguide Patch Guidelines + +@b NB! If you're behind a corporate wall with http only access to the world, you can still use these instructions! -Submitting patches to the OpenOCD Gerrit server: +@b NB2! You can't send patches to the mailing list anymore at all. Nowadays +you are expected to send patches to the OpenOCD Gerrit GIT server for a +review. + +@section gerrit Submitting patches to the OpenOCD Gerrit server OpenOCD is to some extent a "self service" open source project, so to contribute, you must follow the standard procedures to have the best @@ -14,111 +21,140 @@ The procedure to create a patch is essentially: - send the changes to the Gerrit server for review - correct the patch and re-send it according to review feedback - -0. Create a Gerrit account at: - -http://openocd.zylin.com - -- On subsequent sign ins, use the full URL prefaced with 'http://' - For example: - - http://user_identifier.open_id_provider.com - -0.1. Add a username to your profile. - -After creating the Gerrit account and signing in, you will need to -add a username to your profile. To do this, go to 'Settings', and -add a username of your choice. - -Your username will be required in step 2 and substituted wherever -the string 'USERNAME' is found. - -0.2. Add an SSH public key - -Following the directions for your specific platform: - - for Windows: help.github.com/win-set-up-git/#_set_up_ssh_keys - for OSX: help.github.com/mac-set-up-git/#_set_up_ssh_keys - for Linux: help.github.com/linux-set-up-git/#_set_up_ssh_keys - -While these pages describe the setting up of git as well, -you should scroll down the page till you get to the section: -'Next: Set Up SSH Keys', and follow the steps described. - -1. Clone the git repository, rather than just -download the source. - -git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd - -or if you have problems with the "git:" protocol, use -the slower http protocol: - -git clone http://repo.or.cz/r/openocd.git - -2. Set up Gerrit with your local repository. All this does it +Your patch (or commit) should be a "good patch": focus it on a single +issue, and make it be easily reviewable. Don't make +it so large that it's hard to review; split large +patches into smaller ones. (That can also help +track down bugs later on.) All patches should +be "clean", which includes preserving the existing +coding style and updating documentation as needed. + +Say in the commit message if it's a bugfix (describe the bug) or a new +feature. Don't expect patches to merge immediately +for the next release. Be ready to rework patches +in response to feedback. + +Add yourself to the GPL copyright for non-trivial changes. + +@section stepbystep Step by step procedure + +-# Create a Gerrit account at: http://openocd.zylin.com + - On subsequent sign ins, use the full URL prefaced with 'http://' + For example: http://user_identifier.open_id_provider.com + -# Add a username to your profile. + After creating the Gerrit account and signing in, you will need to + add a username to your profile. To do this, go to 'Settings', and + add a username of your choice. + Your username will be required in step 3 and substituted wherever + the string 'USERNAME' is found. + -# Add an SSH public key following the directions on github: + https://help.github.com/articles/generating-ssh-keys +-# Clone the git repository, rather than just download the source: + @code + git clone git://git.code.sf.net/p/openocd/code openocd + @endcode + or if you have problems with the "git:" protocol, use + the slower http protocol: + @code + git clone http://git.code.sf.net/p/openocd/code openocd + @endcode +-# Set up Gerrit with your local repository. All this does it to instruct git locally how to send off the changes. - -Add a new remote to git using Gerrit username: - + -# Add a new remote to git using Gerrit username: +@code git remote add review ssh://USERNAME@openocd.zylin.com:29418/openocd.git -git config remote.review.push HEAD:refs/for/master - -Or with http only: - +git config remote.review.push HEAD:refs/publish/master +@endcode + Or with http only: +@code git remote add review http://openocd.zylin.com/p/openocd.git -git config remote.review.push HEAD:refs/for/master - -You will need to install this hook, we will look into a better -solution: - +git config remote.review.push HEAD:refs/publish/master +@endcode + -# You will need to install this hook, we will look into a better solution: +@code scp -p -P 29418 USERNAME@openocd.zylin.com:hooks/commit-msg .git/hooks/ - -Or with http only: - +@endcode + Or with http only: +@code wget http://openocd.zylin.com/tools/hooks/commit-msg mv commit-msg .git/hooks chmod +x .git/hooks/commit-msg - -3. Set up git with your name and email: - +@endcode +@b NOTE A script exists to simplify the two items above. execute: +@code +tools/initial.sh +@endcode +With @ being your Gerrit username. +-# Set up git with your name and email: +@code git config --global user.name "John Smith" git config --global user.email "john@smith.org" - -4. Work on your patches. Split the work into -multiple small patches that can be reviewed and -applied seperately and safely to the OpenOCD -repository. - +@endcode +-# Work on your patches. Split the work into + multiple small patches that can be reviewed and + applied seperately and safely to the OpenOCD + repository. +@code while(!done) { work - edit files using your favorite editor. run "git commit -s -a" to commit all changes. run tools/checkpatch.sh to verify your patch style is ok. } - -TIP! use "git add ." before commit to add new files. - ---- example comment, notice the short first line w/topic --- -topic: short comment +@endcode + @b TIP! use "git add ." before commit to add new files. + + Comment template, notice the short first line w/topic. The topic field + should identify the main part or subsystem the patch touches. Check + git log for examples. +@code +topic: Short comment -longer comments over several -lines... ------ - -5. Next you need to make sure that your patches -are on top of the latest stuff on the server and -that there are no conflicts. +Longer comments over several lines, explaining (where applicable) the +reason for the patch and the general idea the solution is based on, +any major design decisions, etc... + +Signed-off-by: ... +@endcode +-# Next you need to make sure that your patches + are on top of the latest stuff on the server and + that there are no conflicts: +@code +git pull --rebase origin master +@endcode +-# Send the patches to the Gerrit server for review: +@code +git push review +@endcode +-# Forgot something, want to add more? Just make the changes and do: +@code +git commit --amend +git push review +@endcode -git pull --rebase origin/master +Further reading: http://www.coreboot.org/Git -6. Send the patches to the Gerrit server for review. +@section timeline When can I expect my contribution to be committed? -git push review +The code review is intended to take as long as a week or two to allow +maintainers and contributors who work on OpenOCD only in their spare +time oportunity to perform a review and raise objections. -7. Forgot something, want to add more? Just make the changes and do: +With Gerrit much of the urgency of getting things committed has been +removed as the work in progress is safely stored in Gerrit and +available if someone needs to build on your work before it is +submitted to the official repository. -git commit --amend -git push review +Another factor that contributes to the desire for longer cool-off +times (the time a patch lies around without any further changes or +comments), it means that the chances of quality regression on the +master branch will be much reduced. -Further reading: +If a contributor pushes a patch, it is considered good form if another +contributor actually approves and submits that patch. -http://www.coreboot.org/Git \ No newline at end of file +@section browsing Browsing Patches +All OpenOCD patches can be reviewed here. +*/ +/** @file +This file contains the @ref patchguide page. +*/