diff options
Diffstat (limited to 'doc/devel/patching.rst')
-rw-r--r-- | doc/devel/patching.rst | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/doc/devel/patching.rst b/doc/devel/patching.rst new file mode 100644 index 0000000..097810c --- /dev/null +++ b/doc/devel/patching.rst @@ -0,0 +1,123 @@ +================ + Making a patch +================ + +You've discovered a bug or something else you want to change in nitime_ - excellent! + +You've worked out a way to fix it - even better! + +You want to tell us about it - best of all! + +The easiest way is to make a *patch* or set of patches. Here we explain +how. Making a patch is the simplest and quickest, but if you're going +to be doing anything more than simple quick things, please consider +following the :ref:`git-development` model instead. + +.. _making-patches: + +Making patches +============== + +Overview +-------- + +:: + + # tell git who you are + git config --global user.email you@yourdomain.example.com + git config --global user.name "Your Name Comes Here" + # get the repository if you don't have it + git clone git://github.com/nipy/nitime.git + # make a branch for your patching + cd nitime + git branch the-fix-im-thinking-of + git checkout the-fix-im-thinking-of + # hack, hack, hack + # Tell git about any new files you've made + git add somewhere/tests/test_my_bug.py + # commit work in progress as you go + git commit -am 'BF - added tests for Funny bug' + # hack hack, hack + git commit -am 'BF - added fix for Funny bug' + # make the patch files + git format-patch -M -C master + +Then, send the generated patch files to the `nitime mailing list`_ - where we will thank you warmly. + +In detail +--------- + +#. Tell git_ who you are so it can label the commits you've made:: + + git config --global user.email you@yourdomain.example.com + git config --global user.name "Your Name Comes Here" + +#. If you don't already have one, clone a copy of the nitime_ repository:: + + git clone git://github.com/nipy/nitime.git + cd nitime + +#. Make a 'feature branch'. This will be where you work on your bug + fix. It's nice and safe and leaves you with access to an unmodified + copy of the code in the main branch:: + + git branch the-fix-im-thinking-of + git checkout the-fix-im-thinking-of + +#. Do some edits, and commit them as you go:: + + # hack, hack, hack + # Tell git about any new files you've made + git add somewhere/tests/test_my_bug.py + # commit work in progress as you go + git commit -am 'BF - added tests for Funny bug' + # hack hack, hack + git commit -am 'BF - added fix for Funny bug' + + Note the ``-am`` options to ``commit``. The ``m`` flag just signals + that you're going to type a message on the command line. The ``a`` + flag - you can just take on faith - or see `why the -a flag?`_. + +#. When you have finished, check you have committed all your changes:: + + git status + +#. Finally, make your commits into patches. You want all the commits + since you branched from the ``master`` branch:: + + git format-patch -M -C master + + You will now have several files named for the commits:: + + 0001-BF-added-tests-for-Funny-bug.patch + 0002-BF-added-fix-for-Funny-bug.patch + + Send these files to the `nitime mailing list`_. + +When you are done, to switch back to the main copy of the code, just +return to the ``master`` branch:: + + git checkout master + +Moving from patching to development +=================================== + +If you find you have done some patches, and you have one or more feature +branches, you will probably want to switch to development mode. You can +do this with the repository you have. + +Fork the nitime_ repository on github_ - :ref:`forking`. Then:: + + # checkout and refresh master branch from main repo + git checkout master + git pull origin master + # rename pointer to main repository to 'upstream' + git remote rename origin upstream + # point your repo to default read / write to your fork on github + git remote add origin git@github.com:your-user-name/nitime.git + # push up any branches you've made and want to keep + git push origin the-fix-im-thinking-of + +Then you can, if you want, follow the :ref:`development-workflow`. + +.. include:: git_links.inc |