You’ve discovered a bug or something else you want to change
in DIPY — 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
Git for development model instead. Then, send the generated patch files to the DIPY
mailing list — where we will thank you warmly. Tell git who you are so it can label the commits you’ve
made: If you don’t already have one, clone a copy of the
dipy repository: 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: Do some edits, and commit them as you go: Note the When you have finished, check you have committed all your
changes: Finally, make your commits into patches. You want all the
commits since you branched from the You will now have several files named for the commits: Send these files to the DIPY mailing list. When you are done, to switch back to the main copy of the
code, just return to the 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 dipy repository on github — Making your own copy (fork) of DIPY.
Then: Then you can, if you want, follow the
Development workflow.Making a patch
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/dipy/dipy.git
# make a branch for your patching
cd dipy
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
In detail
git config --global user.email you@yourdomain.example.com
git config --global user.name "Your Name Comes Here"
git clone git://github.com/dipy/dipy.git
cd dipy
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'
-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?.git status
master
branch:git format-patch -M -C master
0001-BF-added-tests-for-Funny-bug.patch
0002-BF-added-fix-for-Funny-bug.patch
master
branch:git checkout master
Moving from patching to development
# 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/dipy.git
# push up any branches you've made and want to keep
git push origin the-fix-im-thinking-of