#! /bin/sh
# See https://stackoverflow.com/q/1260748/7976758
+case "$1" in
+ -c|--cached) cached=--cached; shift ;;
+esac &&
+
if [ $# != 1 ]; then
- echo "Usage: $0 submodule_name" >&2
+ echo "Usage: $0 [-c|--cached] submodule_name" >&2
exit 1
fi
cd "`git rev-parse --show-toplevel`" || exit 1
if [ \! -f .gitmodules ]; then
- echo "The command must be run in the top-level directory" >&2
- echo "of a repository with submodules" >&2
+ echo "Cannot find .gitmodules. The command must be run " >&2
+ echo "in the top-level directory of a repository with submodules" >&2
exit 1
fi
exit 1
fi
-git rm "$path"
-rm -rf "git rev-parse --git-dir"/modules/"$name"
-exec git config --remove-section submodule."$name"
+git rm $cached "$path" &&
+rm -rf "`git rev-parse --git-dir`"/modules/"$name" &&
+git config --remove-section submodule."$name" &&
+
+if [ \! -s .gitmodules ]; then
+ git rm -f .gitmodules
+fi &&
+
+if [ -z $(ls -A "`git rev-parse --git-dir`/modules") ]; then
+ exec rmdir "`git rev-parse --git-dir`/modules"
+fi