PETSc developers,

      The current nightly compile builds of both next and master are almost 
completely clean (master will be the same as next in tonight’s tests). This 
means it is easy to check if branches you recently added to next are clean and 
can be merged into master.  The log files can always be found in

http://ftp.mcs.anl.gov/pub/petsc/nightlylogs/next.html   and  
http://ftp.mcs.anl.gov/pub/petsc/nightlylogs/master.html

 Remember the workflow is 

1) have a clean build and don’t break examples in your branch then

2) either 

    a) If the change is large and you want comments before putting into next 
make a pull request into next at the bitbucket.org/petsc/petsc site

    b) If the change is small or you are confident it satisfies all PETSc 
source code standards then merge into next

3) after the branch is merged into next, check the results of the nightly build 
the NEXT day and make sure your changes didn’t introduce any warnings or errors 
in any of the next builds. You should do this the day after the branch was 
merged into next so warnings/errors you may have introduced don’t get jumbled 
up with other peoples introduced warnings/errors, 

   a) if there are warnings/errors fix them in your branch and merge it again 
into next and go back to 3) otherwise 

   b) if you’re change is large or you feel it might violate some PETSc source 
code standards then post a pull request of the branch into master, otherwise
 
   c) merge your branch into master

4) check the nightly builds the next day and make sure you did not break 
anything in master, if you did fix the branch and merge it back into next and 
master


  The most important thing is to remember to ALWAYS check the nightly builds of 
next or master the day after you merged into the branch; if you did break 
something then fix the branch and remerge quickly. This is the only way to 
ensure your branch didn’t break some obscure thing on some odd machine. It is 
also the only way to make sure warnings/errors don’t accumulate in either next 
or master making it impossible to see if your new branch broke something since 
so much is already broken.

 Jed sent out this useful command to find all branches in next but not in 
master, I use it as 

alias gitmasternotupdated='comm -12 <(git branch -r --merged next | sort) <(git 
branch -r --no-merged master | sort) | grep barry’

so I can quickly see what branches are in next but not yet merged so I know I 
should check the nightly next tests.

  Jed and I may disagree on this but I believe that if your branch is 

1) done (that is would be useful for users)

2) is completely clean in next

3) satisfies PETSc coding standards 

then it should be merged into master and not just “hang around” in next for 
days. On the other hand if

1) standalone it is not yet useful for others since more has to written on it

2) it is not clean in next or

3) does not satisfy PETSc coding standards 

4) it has a bunch of ugly commits with changed codes or comments that should be 
rebased then

it should not be moved over to master. 

Jed, it would be nice if we could somehow mark each merge of a branch into next 
as either 

1) I just want this tested with everything but it is not ready for master or
2) this is ready for master if it tests clean in next 

then anyone could easily keep track of the two types of merges and they could 
be handled properly without requiring someone to remember something. Is there 
anyway to do this?


   Barry




   


Reply via email to