Neuroimaging in Python — NiBabel 5.4.0.dev1+g3b1c7b37 documentation (original) (raw)

Making a patch

You’ve discovered a bug or something else you want to change in nibabel .. — 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 theGit for development model instead.

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/nibabel.git

make a branch for your patching

cd nibabel 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 nibabel mailing list — where we will thank you warmly.

In detail

  1. 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"
  2. If you don’t already have one, clone a copy of thenibabel repository:
    git clone git://github.com/nipy/nibabel.git
    cd nibabel
  3. 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
  4. 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?. 5. When you have finished, check you have committed all your changes: 6. 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 nibabel mailing list.

When you are done, to switch back to the main copy of the code, just return to the master branch:

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 nibabel repository on github — Making your own copy (fork) of nibabel. 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/nibabel.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 theDevelopment workflow.