There are a few things that have taken some getting used to in working with SciPy. These things are aggregated here:
Keeping my SciPy repo up-to-date
I need to upadate my copy of SciPy regularly from upstream, to avoid merge conflicts. I have done this plenty of times, but for some reason I forget how every time. There is a good howto on stackoverflow on this. From said article:
# Add the remote, call it "upstream": git remote add upstream git://github.com/whoever/whatever.git # Fetch all the branches of that remote into remote-tracking branches, # such as upstream/master: git fetch upstream # Make sure that you're on your master branch: git checkout master # Rewrite your master branch so that any commits of yours that # aren't already in upstream/master are replayed on top of that # other branch: git rebase upstream/master
Pushing new local branches to a remote Git repo
Every time a make a new local branch, I forget how to push it to github as
new branch. Google always brings me to this article.
Basically if I have a new local branch call it
new-feature and want to push
it to my github repo and create a new
new-feature branch there too. I do:
git push -u origin new-feature
and if I wanted to delete this remote branch, I could do:
git push origin :new-feature
and delete it locally with:
git branch -D new-feature
SciPy's commit messages
SciPy require commit messages start with some standard acronyms.
API: an (incompatible) API change BLD: change related to building numpy BUG: bug fix DEP: deprecate something, or remove a deprecated object DEV: development tool or utility DOC: documentation ENH: enhancement MAINT: maintenance commit (refactoring, typos, etc.) REV: revert an earlier commit STY: style fix (whitespace, PEP8) TST: addition or modification of tests REL: related to releasing numpy
The acronyms are easy to remember, but adding the acronyms is easy to forget. Which brings me to my next topic.
Changing commit messages, after you have pushed
This is not the simplest thing to do in git, fortunately my mentor Pauli showed me a great way to do it. Assuming no one has pulled from your repo yet.
git logand look for the last COMMIT befor the commit messages you want to change.
git rebase -i COMMIT
Then Git will prompt you to change the commit messages one at a time.
Push your changes with
git push -f