on commit to submodule: zephyr nothing else? superrepo heads are dev, prod on commit to superrepo: for each changed submodule revision: (as optimization: if same commit already in dev, just reprepro move) try to build submodule if fail: abort whole commit 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 actually commit zephyr This makes a long pre-receive process. Is that cool? Probably is the right thing.