On 01/04/2011 03:01 PM, Eric Blake wrote:
> Found one, and it even works on libvirt (where the gnulib submodule is
> named .gnulib instead of gnulib).  It should also work on a repository
> with multiple submodules, although I have not yet tested it on bison.git.
> 
> gnulib-commit-check:
>       git submodule foreach test '$$(git merge-base --independent \
>         origin $$sha1 | wc -w)' = 1
> 
> This effectively runs the shell command:
> 
> git merge-base --independent origin $sha1
> 
> with $sha1 set to the value recorded in the superproject (identical to
> your computation of $commit), and outputs the minimal set of revisions
> not reachable from any other in the set of arguments.  If origin
> contains $sha1, the output is a single hash (it happens to be that of
> origin); if $sha1 is a local-only revision, the output is two hashes, so
> the test fails, which in turn lets 'make alpha' fail.

Not quite robust enough - if your superproject contains commits not
pushed upstream yet, then merge-base would still output a single
reference.  This should close that gap, by requiring that the least
reachable commit be exactly the upstream origin.

gnulib-commit-check:
        git submodule foreach test '$$(git rev-parse origin)' \
          = '"$$(git merge-base --independent origin $$sha1)"'

-- 
Eric Blake   ebl...@redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to