summaryrefslogtreecommitdiff
path: root/doc/devel/patching.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/devel/patching.rst')
-rw-r--r--doc/devel/patching.rst123
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