[petsc-dev] git : list branches started off maint - but not yet merged back

Jed Brown jedbrown at mcs.anl.gov
Thu Aug 29 18:59:08 CDT 2013

Karl Rupp <rupp at mcs.anl.gov> writes:

> Hi Satish,
>  > In git - how do I list branches that started off maint - but are not
>> yet merged back?
> Hmm, I don't have a one-liner for this, but you'll get some idea of the 
> relevant branches using
>   git branch --contains maint
> as well as
>   git branch --no-merge maint

Note that 'maint' is usually part of 'master', so any branch started
From 'master' after 'maint' has been merged will also contain 'maint'.

My ad-hoc method has just been to check whether 'git log
maint..my/branch' contains patches that don't belong in the branch.  But
that's not robust or automatable.  Here's a script that I think does the
trick.  It works by checking whether the "merge base" of the branch with
'master' (before it was merged to 'master') is actually part of 'maint'.

candidate-branches () {
  git for-each-ref --shell --format 'branch=%(refname) date=%(committerdate)' refs/remotes/origin | while read entry
    eval "$entry"
    git merge-base --is-ancestor $branch $merged || continue
    git merge-base --is-ancestor $branch $dest && continue
    merge_point=$(git rev-list --ancestry-path --reverse $branch..$merged | head -1)
    start=$(git merge-base $branch ${merge_point}~1)
    # echo Testing branch $branch merge_point $merge_point start $start
    git merge-base --is-ancestor $start $dest || continue
    echo Candidate for $dest: $branch $date

Don't just blindly merge these things.  For example,
'jed/pcmg-residual-underscore' contains two commits, the first of which
went to 'maint' and the second of which removes the old function and
thus cannot go to 'maint'.  (The merge commit messages explain this.)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20130829/aa06ae0b/attachment.sig>

More information about the petsc-dev mailing list