[Cython] Git workflow, branches, pull requests

Dag Sverre Seljebotn d.s.seljebotn at astro.uio.no
Thu May 5 21:52:06 CEST 2011


There was just a messup in git history: Mark's OpenMP pull request got 
merged twice; all commits show up two times.

It doesn't matter, since the two openmp branches with the same changes 
merged OK, but we shouldn't make this a habit. For instance, the openMP 
commits also show up as part of vitja's pull request, which is confusing.

In Mercurial speak: The openmp branch was used like you would use a 
Mercurial "patch queue" in one case, and as a branch in another case. In 
git they are the same technically and you rely on conventions to make 
sure you don't treat a "queue" as a "branch".

OPTION A) Either i) only branch from master, or ii) make sure you agree 
with whoever you're branching from that this is a "branch", not a "patch 
queue", so that it isn't rebased under your feet.

We could also, say, prepend all patch queues with an underscore (its 
private).

OPTION B) Stop rebasing. I'd have a very hard time doing that myself, 
but nobody are pulling from dagss/cython these days anyway.

Opinions?

FYI,

The workflow me and Mark is currently using is:

  a) Fork off a feature branch from master (with master I'll always 
refer to cython/master)

  b) When one gets in sync with master, do NOT merge master, but rather 
rebase on top of it:

      git pull --rebase origin master

  c) Continue rebasing, and eventually .

The advantage of this approach is that ugly merges disappear from 
history, since commits are rewritten. And the history graph looks very 
nice and is easy to follow.

BUT, if the result is duplication, we should avoid this practice, and 
rather always merge.


Dag Sverre


More information about the cython-devel mailing list