X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=submodules%2Fremove;h=f9436cead70e12fdd84b414fb746d3c89aff7e83;hb=refs%2Fheads%2Fmaster;hp=92efc14be3302e4621047e87c1b099b1f36a9a9a;hpb=d542fe583dbdee0911cc377758ad55cc47b46b7c;p=git-scripts.git diff --git a/submodules/remove b/submodules/remove index 92efc14..f9436ce 100755 --- a/submodules/remove +++ b/submodules/remove @@ -1,14 +1,19 @@ #! /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 +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 "Cannot find .gitmodules. The command must be run " >&2 + echo "in the top-level directory of a repository with submodules" >&2 exit 1 fi @@ -20,6 +25,14 @@ if [ -z "$path" ]; then exit 1 fi -git submodule deinit -f -- "$path" -rm -rf .git/modules/"$name" -exec git rm -rf "$path" +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