add superproject-post-push.sh with an abstracted $HOME for the $superproject directory
authorMicah Anderson <micah@riseup.net>
Wed, 23 Jan 2013 17:30:17 +0000 (12:30 -0500)
committerMicah Anderson <micah@riseup.net>
Wed, 23 Jan 2013 17:30:17 +0000 (12:30 -0500)
superproject-post-push.sh [new file with mode: 0644]

diff --git a/superproject-post-push.sh b/superproject-post-push.sh
new file mode 100644 (file)
index 0000000..d680a94
--- /dev/null
@@ -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