summaryrefslogtreecommitdiff
path: root/puppet/bin/subtrees
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2014-09-18 12:47:46 -0300
committerSilvio Rhatto <rhatto@riseup.net>2014-09-18 12:47:46 -0300
commit84baf3dfea376e4b35156acc682f93bfae7e23eb (patch)
tree570011bbabc460651c61640a9ecb07b2b83b21cf /puppet/bin/subtrees
parent12bedcb9dc59316fcbb38bf1592ef73dace30d15 (diff)
parent529cd5077e3d76c1d5b612bc146ab174d7143c30 (diff)
downloaddebian-84baf3dfea376e4b35156acc682f93bfae7e23eb.tar.gz
debian-84baf3dfea376e4b35156acc682f93bfae7e23eb.tar.bz2
Merge commit '529cd5077e3d76c1d5b612bc146ab174d7143c30' as 'puppet'
Diffstat (limited to 'puppet/bin/subtrees')
-rwxr-xr-xpuppet/bin/subtrees41
1 files changed, 41 insertions, 0 deletions
diff --git a/puppet/bin/subtrees b/puppet/bin/subtrees
new file mode 100755
index 0000000..1858a48
--- /dev/null
+++ b/puppet/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