diff options
Diffstat (limited to 'superproject-post-push.sh')
-rw-r--r-- | superproject-post-push.sh | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/superproject-post-push.sh b/superproject-post-push.sh new file mode 100644 index 0000000..d680a94 --- /dev/null +++ b/superproject-post-push.sh @@ -0,0 +1,38 @@ +#!/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 |