[Numpy-discussion] Development workflow
Matthew Brett
matthew.brett at gmail.com
Tue Oct 12 05:22:30 EDT 2010
Hi,
> I think there are two issues here:
>
> (A) How to be sensible and presentable
>
> (B) How and when your stuff gets into master
A very useful distinction - thanks for making it.
> For (A) I'm following the same workflow I had with the git mirror:
>
> 1. For *every* change, create a separate topic branch.
>
> 2. Work on it until the feature/bugfix is ready.
>
> 3. Push it to my own github clone for review/backup purposes if necessary.
>
> 4. If necessary, rebase (not merge!) on master when developing
> to keep in stride.
>
> 5. When ready, (i) rebase on master, (ii) check that the result is
> sensible, and (iii) push from the topic branch as new master.
>
> In this case, since all recent changes are just unrelated stand-alone
> bugfixes, this produces something that looks very much like SVN log :)
>
> I think of the above, 1-4 are okay in all cases. 5 is then perhaps not so
> absolute, as one could also do a merge if there are several commits. I
> 100% endorse Fernando's recommendations:
>
> http://mail.scipy.org/pipermail/ipython-dev/2010-October/006746.html
>
> This really sounds like best-practice to me, and it's even empirically
> tested!
OK - so it seems to me that you agree with Fernando's recommendations,
and that's basically the same as what Stefan was proposing (give or
take a rebase), and David agreed with Stefan. So - really - everyone
agrees on the following - work on topic branches - don't merge from
trunk - rebase on trunk if necessary. I think _insisting_ on rebase
on trunk before merge with trunk is a little extreme (see follow-up to
ipython thread) - but it's not a big deal.
> Then there's the second question (B) on when core devs should push
> changes. When ready, when reviewed, or only before release?
>
> I would be open even for the "radical" never-push-your-own-changes
> solution.
>
> I think we could even try it this way for the 1.5.1 release. If it seems
> that unhandled pull requests start to accumulate (which I don't think
> will happen), we could just reverse the policy.
OK - right - that's the second big issue and obviously that's at the
heart of thing. I think that splits into two in fact:
i) How often to merge into trunk
ii) Who should merge into trunk
At the extreme, you have the SVN model where the answers are:
i) a merge for almost every commit
ii) by the person who wrote the code
and I thought that we'd decided that we didn't want that because trunk
started getting unpredictable and painful to maintain.
At the other end is the more standard DVCS-type workflow:
i) merges by branches (which might have only a few commits)
ii) by small team of people who are responsible for overseeing trunk.
And rarely by the person who wrote the code
So - is that a reasonable summary?
Does anyone disagree with Pauli's never-push-your-own-changes suggestion?
Best,
Matthew
More information about the NumPy-Discussion
mailing list