#!/bin/sh # how to use: # put all of this in some directory (eg. /home/micah/bin/superproject-post-push.sh) and then do this in the git submodule directory: # micah@minnow:~/leap/puppet/modules/apt$ git config alias.xpush "push && /home/micah/bin/superproject-post-push.sh" # use git xpush for pushing # this assumes a couple things: # 1. you do the commit in the top level of the submodule (not any subdirectory within) # 2. you have no local, uncomitted changes in your superproject when you do any submodule commit # exit on any error set -e # change this variable to your superproject checkout superproject=${HOME}/leap/puppet submodule_base=`basename $PWD` submodule=${submodule_base#puppet_} # check out the latest version of the superproject # note: this part is fragile, because if you have local, uncomitted changes in your superproject, then this pull will fail cd ${superproject} git pull git submodule update --init # check out latest version of submodule # according to https://we.riseup.net/riseup+tech/puppet-git-submodules cd ${superproject}/modules/${submodule} git remote update git merge origin/master # commit and push the submodule update commit cd .. git add $submodule git commit -m "automatic update of submodule $submodule_base" git push