summaryrefslogtreecommitdiffstats
path: root/switch_all_submodules_to_head_and_clean
blob: 631381272ebf4593c0e1641ea5d88581daaf016e (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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/bin/bash

if [[ ! -e .git ]] ||
   [[ -z "`git rev-parse --git-dir 2>/dev/null`" ]]; then
	echo "This script can only be run from a top level git directory.  Exiting..."
	exit 1
fi

branch=`git symbolic-ref -q HEAD | sed "s|^refs/heads/||"`
if [[ -z "$branch" ]] ||
   [[ -z "`git rev-parse --symbolic-full-name --remotes=\"*/$branch\"`" ]]; then
	echo "There is not active upstream branch.  Exiting..."
	exit 1
fi

echo "Preparing $PWD for development use"
if [[ $1 == "" ]]; then
	gituser=`sed -n "/^\[remote \"origin\"\]/,/url/s/\turl = http:\/\/\([^@]*\)@.*/\1/p" <\`git rev-parse --git-dir\`/config | grep -v "\(anonymous\|system\)"`
else
	gituser=$1
fi

if [[ $gituser == "" ]]; then
	read -p "Enter your TDE GIT username []: " -e gituser
fi

if [[ $gituser == "" ]]; then
	gituser="anonymous"
fi

THISSCRIPT=$(readlink -f $0)

if [[ ! -e "$THISSCRIPT" ]]; then
	echo "Unable to find myself!  Exiting..."
	exit 1
fi

if [[ ! -z "`git status --porcelain`" ]]; then
	git reset --hard HEAD
	git clean -dxff
fi
git pull
if [[ ! -z "`git status --porcelain`" ]]; then
	git reset --hard HEAD
	git clean -dxff
fi

if [[ -e .gitmodules ]]; then
	if [[ $gituser == "anonymous" ]]; then
		sed -i 's/system@//g' .gitmodules
	else
		sed -i "s/system@/$gituser@/g" .gitmodules
	fi

	git submodule init
	git submodule update
	git submodule foreach "git checkout $branch && $THISSCRIPT $gituser"

	git checkout -- .gitmodules
fi