aboutsummaryrefslogtreecommitdiff
path: root/bin/subtrees
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2014-03-03 15:08:15 -0300
committerSilvio Rhatto <rhatto@riseup.net>2014-03-03 15:08:15 -0300
commitc7d3048eadf49882c159d03294d2dec2ee843bfe (patch)
tree3944670353dc1b4220ddfe11375cc849de24cb08 /bin/subtrees
parent7087278751fb051f8a5e5eef40fab20163b8b9d5 (diff)
downloadpuppet-bootstrap-c7d3048eadf49882c159d03294d2dec2ee843bfe.tar.gz
puppet-bootstrap-c7d3048eadf49882c159d03294d2dec2ee843bfe.tar.bz2
Adding subtrees script and updating submodules script
Diffstat (limited to 'bin/subtrees')
-rwxr-xr-xbin/subtrees41
1 files changed, 41 insertions, 0 deletions
diff --git a/bin/subtrees b/bin/subtrees
new file mode 100755
index 0000000..1858a48
--- /dev/null
+++ b/bin/subtrees
@@ -0,0 +1,41 @@
+#!/bin/bash
+#
+# Setup subtrees.
+#
+
+# Parameters
+DIRNAME="`dirname $0`"
+
+# Usage
+function usage {
+ echo "Usage: $1 add-submodules <DIR>"
+ exit $2
+}
+
+# Check for git-subtree
+if ! which git-subtree &> /dev/null; then
+ echo "fatal: please install git-subtree"
+ exit 1
+fi
+
+# Get module list
+repos="`grep = $DIRNAME/../.mrconfig | cut -d = -f 2 | cut -d ' ' -f 4`"
+
+# Add subtrees
+for repo in $repos; do
+ module="`basename $repo .git | sed -e s/^puppet-//`"
+ if [ ! -d "modules/$module" ]; then
+ echo "Processing puppet module $module..."
+ git remote add $module $repo
+ git subtree add --prefix modules/$module $module master --squash
+ elif [ ! -d "modules/$module/.git" ]; then
+ # The puppet module exists and is a subtree, so update it
+ if ! git remote | grep -qe "^$module$"; then
+ git remote add $module $repo
+ fi
+
+ # Update subtrees
+ git fetch $module master
+ git subtree pull --prefix modules/$module $module master --squash
+ fi
+done