#!/bin/bash # # Setup subtrees. # # Parameters DIRNAME="`dirname $0`" # Usage function usage { echo "Usage: $1 add-submodules " exit $2 } # Check for git-subtree if ! which git-subtree &> /dev/null; then echo "fatal: please install git-subtree" exit 1 fi # Set puppet folder if [ -d "puppet" ]; then PUPPET_FOLDER="puppet" else PUPPET_FOLDER="." 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 "$PUPPET_FOLDER/modules/$module" ]; then echo "Processing puppet module $module..." git remote add $module $repo git subtree add --prefix $PUPPET_FOLDER/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 $PUPPET_FOLDER/modules/$module $module master --squash fi done