

on commit to submodule:
  zephyr
  nothing else?

superrepo heads are dev, prod, and dev-incoming, prod-incoming
on commit to superrepo:
  reject commits to dev, prod
  grab lock or fail
  spawn build process
  zephyr

in build process for foo-incoming:
  for each changed submodule revision:
    (as optimization: if same commit already in dev, just reprepro move)
    try to build submodule
    if fail:
      abort whole build
      clean up any previous packages' built files, maybe keep this one's around
    remember package and version
  for each changed submodule revision:  (if we're still going)
    tag submodule with version
    upload to dev/prod respectively
    clean up built files
  commit to foo
  zephyr?
  release lock
if fail:
  reset foo-incoming to old revision
  send mail with log
  zephyr
  release lock

Maybe there could be something sane without the lock?  It'd require
more thought.
