[petsc-dev] Long running development

Jed Brown jedbrown at mcs.anl.gov
Sat Mar 16 10:09:04 CDT 2013

Matthew Knepley <knepley at gmail.com> writes:

> Okay, so that way I make sure that stuff is not breaking is always to merge
> into next.
> However, it  still appears that the model for publishing features has the
> costs
> above. Maybe I do not see how you want it to go. Here is my situation:
>   I have a knepley/pylith branch. I have this branch because I anticipate
> that
>   new things required by PyLith will not come out in 'master' fast
> enough.

What exactly is the purpose of 'knepley/pylith'? Is it to develop new
features specifically for PyLith or is it to certify some combination of
recent states that should work with PyLith? If it is to certify states,
then I suggest just having 'knepley/pylith' mark a snapshot of 'next'
that has been tested with PyLith. Your workflow would look like this:

  finish my feature
  (next) $ git pull         # get changes from upstream
  (next) $ git merge knepley/new-feature-for-pylith

run tests with PyLith, then

  (next) $ git push origin next next:knepley/pylith

That is, you're pushing your local branch 'next' (that you just tested)
to both 'next' and 'knepley/pylith'.

PyLith then follows 'knepley/pylith', which is just marking the state of
'next' the last time you tested it with PyLith. Since it's always
marking a point on 'next', it will fast-forward, so the PyLith user just
clones PETSc, then

  $ git checkout knepley/pylith

and from then on, they will get your latest tested state with

  (knepley/pylith) $ git pull

Note that in the above, your workflow is exactly the same as if PyLith
didn't exist, except that you add 'next:knepley/pylith' to pushes when
you want to certify that a state in 'next' works with PyLith.

Instead of 'knepley/pylith', you might call it 'next/pylith'.

> However,
>   all things in here should eventually go into master.
> If master was integrated frequently, I have no problem. I will just use
> that, but
> that was not my impression. The alternative seems to be to pull in each
> branch
> individually that went into 'next', and which we think will go to master.
> But what if
> I am wrong and merge something that does not go into master?

This would be a lot of work and would defeat the purpose.

More information about the petsc-dev mailing list