-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsubmodule.sh
More file actions
executable file
·39 lines (34 loc) · 982 Bytes
/
submodule.sh
File metadata and controls
executable file
·39 lines (34 loc) · 982 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/sh
#
# Adam Sharp
# Aug 21, 2013
#
# Usage: Add it to your PATH and `git remove-submodule path/to/submodule`.
#
# Does the inverse of `git submodule add`:
# 1) `deinit` the submodule
# 2) Remove the submodule from the index and working directory
# 3) Clean up the .gitmodules file
#
# Adapted from: https://gist.githubusercontent.com/sharplet/6289697/raw/2490096d3adb1139cd130faf70a69ed3537ce19e/git-remove-submodule
path=$(echo "$1" | sed 's/\/$//'); shift
exit_err() {
[ $# -gt 0 ] && echo "fatal: $*" 1>&2
exit 1
}
if git submodule status "$path" >/dev/null 2>&1; then
git submodule deinit -f "$path"
git rm --cached $path
rm -rf .git/modules/$path
git commit -m "Removed submodule $path"
git rm -f "$path"
# git reset HEAD .gitmodules
git config -f .gitmodules --remove-section "submodule.$path"
if [ -z "$(cat .gitmodules)" ]; then
git rm -f .gitmodules
else
git add .gitmodules
fi
else
exit_err "Submodule '$path' not found"
fi