aboutsummaryrefslogtreecommitdiff
path: root/git-submodule-move-git-dir
blob: cd89517d06698870aea6d8b2179accfb4fd5c3cf (plain)
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
40
41
42
43
#!/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 <submodule-path>"
  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"