#!/bin/bash # # Put the .git submodule folder back to the right place. # # When initializing a git submodule, git usually puts the # submodules' .git folder inside the .git/modules folder # in the parent repository. # # While this keeps all submodule metadata in a single place, # it may not be confortable when you also want to develop # the submodule. # # This plugin simply moves the submodules' git folder back # to the standard place. # Parameters BASENAME="`basename $0`" MODULE="$1" # Checks if [ -z "$MODULE" ]; then echo "usage: $BASENAME " exit 1 elif [ ! -d "$MODULE" ]; then echo "module not found: $MODULE" exit 1 elif [ -d "$MODULE/.git" ]; then echo "module $MODULE already converted" exit 1 elif [ ! -d ".git" ]; then echo "please run this command in the top-level repository folder" exit 1 fi # Additional parameters REPO_DIR="`pwd`" MODULE_DIR="`cd $MODULE &> /dev/null && pwd`" RELATIVE_REPO_DIR="$(echo $MODULE_DIR | sed -e "s|^$REPO_DIR/||")" # Convert rm $MODULE/.git mv ".git/modules/$RELATIVE_REPO_DIR" "$MODULE/.git" sed -i -e '/worktree =/d' "$MODULE/.git/config"