[IPython-dev] how to contribute to ipython

Ondrej Certik ondrej at certik.cz
Thu Jul 16 00:34:01 EDT 2009

> You can just push without registering the branch ahead of time.  Then you
> don't have to use the --use-existing-dir flag.  Basically a push of a new
> branch to lp does the registration for you.

Ah, good.

>> let me know if I did things correctly.
> Yep, I got the email with the merge request.  Fernando is about to begin
> working on the 0.10 release and this might make it in for that.  Otherwise,
> we will target it for 0.11.

Yes, but please review it, I think you may suggest me to put it
somewhere else than into __init__.py. I just didn't know where it
should go.

>> If I want to checkout the trunk branch instead (e.g. without my
>> commit), how do I do that? E.g. the equivalent of:
>> git checkout master
>> git checkout my_branch
>> looking here:
>> http://www.taoeffect.com/blog/2009/06/using-bazaar-like-git-repoalias-plugin/
>> it's seems pretty complex. I am new to bzr, so I might be doing things
>> the wrong way.
> This does look complicated.  The way we are using bzr on a daily basis is
> quite different from the typicaly git workflow and much simpler.  With your
> adoration of git, you probably won't like it ;-)  To get the ipython trunk

I will hold my judgement, until I learn bzr good enough to do all the
things that I ask below. :) But don't worry, I will not hold my
opinions for myself after that. :)

> branch:
> $ mkdir code
> $ cd code
> $ bzr branch lp:ipython
> This will create a new, independent "ipython" directory within "code" that
> will only have that branch.  To also get your branch do:
> $ cd code
> $ bzr branch lp:~ipython-div/ipython/set_trace

Except that this downloaded the whole bzr repo again. So it's very
slow (but works).

> $ ls
> ipython
> set_trace
> To merge upstream ipython into set_trace:
> $ cd code/set_trace
> $ bzr merge ../ipython
> To merge the updated set_trace into trunk do:
> $ cd code/ipython
> $ bzr merge ../set_trace
> BUT, you want to make sure you merge all upstream changes from trunk into
> set_trace first.

Right, thanks for this. Now let's say you tell me to move the function
to some other file. I go to the set_trace branch, move the function.
Now what -- is there a way to fix the latest commit? Or do I need to
commit one more commit? What if I have to fix the 3rd commit from the
top? Is there a way to do it?

Now, what if I want to rebase my branch on top of the (updated) main
ipython branch? E.g. not merge, but rebase. One way would be to export
the patch to a file, delete the latest commit (is there some easy way
to do that?), merge the main ipython branch and then manually apply
the patch, and fix all collisions myself.

Those are things that I was doing in mercurial, and it was a pain, but
doable, until I got fedup and switched to git. In git it's super easy.
So now I want to learn how to do it in bzr, so that I can compare.

Then I can say which of bzr, hg, git is the best. :)

> Notice, everything in our workflow is based upon the assumption that
> branch=directory, which is very different from git's repo=multiple
> branches=directory model.
> Anyways, thank for the code.
> Cheers,
> Brian
>> Ondrej

More information about the IPython-dev mailing list