On 2014-08-20 10:50+0100 Phil Rosenberg wrote:

> Hi Alan
> Just so you know, I have no real preference for either a merge or a rebase 
> workflow.

> I feel that merge is more idealistically "gittish" but pragmatically
the rebase workflow might be easier. The downside is that branches
which have been shared should not be rebased, because work that
branches from it ends up containing the same commits twice (the merged
version and the rebased version).

I don't think that last remark can be correct if all merge commits
are avoided, i.e., we use a rebase-only workflow.  Up to now, PLplot
developers have not shared developments of topics very much.  But if
they did with a rebase-only workflow, my guess is it would work
exactly as in subversion; with a published topic branch for
collaboration and published master (equivalent to svn trunk).

To flesh out that guess, let's say someone starts a topic branch and
publishes it at our SF repo.  Those doing topic
collaboration would first pull the published version of the topic
(with --rebase option to avoid a merge and to bring all local changes
of the topic branch up to speed with other's work), carry on with more
development, fetch and rebase again, then finally push the topic
branch to the SF repo so other collaborators could benefit from your
work. From time to time one of the collaborators (assuming it is a
fairly long-lived topic) would want to rebase that topic using master
to keep up with master (similarly to how individuals have been using
PLplot svn/trunk to develop).  And ultimately when the topic matures,
one of the collaborators would rebase master from the topic. and
delete the topic. Note that no merge commits are done at all using
this workflow. Also see discussion of rebase style workflow at
<http://randyfay.com/content/rebase-workflow-git>.  But I am new at
this so please correct what I said, if you spot something wrong with
this summary of how I think collaborative work on a topic would
proceed.

>I also think that the rebase method
lends itself best to a single master branch rather than a trio of
master, next and bug fixes. When using rebase the only way I think the
three stream method would work is if we branch from master, rebase
onto next or bug fixes, then at some point these get merged into
master. The disadvantage is that I don't think we can differentiate
mature, vs unstable topic branches in next, because after a rebase the
topics don't really exist as separate entities. Pragmatically though,
perhaps a single master branch would be better to start with. Walk
before you run and all that.

Agree with almost everything you said here.  The only integration
branch used for subversion has been svn/trunk, and with a rebase-only
workflow, I think we could continue to be satisfied with just a master
branch used the same way. That approach inspires development
discipline (to keep master working at all costs), but also has the
downside of inhibiting any experimental topics.  But I think with
rebase-only, you could also maintain a "next" branch to encourage
integration testing of experimental work. And for the topics that pass
all tests on next, use a rebase method to get those topics onto
master.  But again, please correct if I am assuming something that is
not true about the rebase-only workflow.

> What I do feel strongly about is the fact that whatever we do go for
it will not be perfect. Things that work for other groups might not
work for us, because every group and project is different. The only
way we will get a system that works well for us is to use it for a
while, then assess what we need to change. Don't get me wrong, making
good plans and starting from a good point is essential. But when it
gets to a point where you don't know the right answer it is usually
because there is no right answer based on the available info so that's
when it's time to start testing.

Excellent points with which I agree.  I take probably longer than
others to get to the point of saying "Let's get on with it", but I am
close to that point now. In other words, it's one of those cases where
it is obviously getting very close to time to make the workflow
decision even if (in worst case scenario) it is a wrong one due to
lack of information.

> So anyway, I think you are doing a great job of keeping this on
track. As I said to start I don't have a big preference either way so
if you want to take Brads advice for rebasing that works for me.

OK.  Thanks for the kind words.  Also, since nobody else has said
anything, I assume they also don't feel strongly about the workflow
decision (except we should get on with it). Therefore, I have decided
to follow Brad's advice and go with an initial rebase-only workflow
enforced by the server-side update hook logic for that particular
case.

For my next step I plan to put together a rebase-only workflow
document which will mostly be based on the idea to simply follow a git
implementation of the rebase-only workflow that we have been using all
along with subversion (except I will add a rebased next integration
branch as well).  I hope that document will help to give PLplot
development with git a kick start!

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________

Linux-powered Science
__________________________

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to