-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgit-submodules-update.sh
More file actions
85 lines (67 loc) · 3.3 KB
/
git-submodules-update.sh
File metadata and controls
85 lines (67 loc) · 3.3 KB
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/bin/bash
ALERT="[alert]"
INFO="[info]"
ERROR="[ERROR]"
FILE_GIT_MODULES=".gitmodules"
vCommandGit="git"
vKernelRelease="$(uname -r)"
vKernelRelease=${vKernelRelease,,}
if [[ $vKernelRelease =~ "microsoft" ]] || [[ $vKernelRelease =~ "wsl" ]]; then
cAliasGitExe="alias $vCommandGit='$vCommandGit.exe'"
searchReturn="$(cat ~/.bashrc | grep -x -m 1 "$cAliasGitExe")"
if [ "$searchReturn" == "$cAliasGitExe" ]; then
vCommandGit+=".exe"
fi
fi
COMMAND_GIT_BRANCH="$vCommandGit branch"
COMMAND_GIT_CONFIG="$vCommandGit config"
COMMAND_GIT_STATUS="$vCommandGit status"
if [ -f $FILE_GIT_MODULES ]; then
if [ "$1" = "--update-only-git-hooks" ]; then
echo "$INFO Checking out and updating submodules (only git-hooks)"
$vCommandGit submodule -q foreach "
if [ \$name = git-hooks ]; then
branchSubmodule=\$($COMMAND_GIT_CONFIG -f \$toplevel/.gitmodules submodule.\$name.branch);
currentBranch=\$($COMMAND_GIT_BRANCH --show-current);
if [ \"\$branchSubmodule\" = \".\" ]; then
cd \$toplevel;
branchSuperproject=\$($COMMAND_GIT_BRANCH --show-current);
cd \$sm_path;
if [ \"\$branchSuperproject\" != \"\$currentBranch\" ]; then
$vCommandGit -c core.hooksPath=/dev/null checkout \$branchSuperproject || ( echo $ERROR Nao foi possivel posicionar no branch \$branchSuperproject no submodule \$sm_path! && exit 1 );
fi;
$vCommandGit pull origin \$branchSuperproject --rebase || $COMMAND_GIT_STATUS;
elif [ -n \"\$branchSubmodule\" ]; then
if [ \"\$branchSubmodule\" != \"\$currentBranch\" ]; then
$vCommandGit -c core.hooksPath=/dev/null checkout \$branchSubmodule || ( echo $ERROR Nao foi possivel posicionar no branch \$branchSubmodule no submodule \$sm_path! && exit 1 );
fi;
$vCommandGit pull origin \$branchSubmodule --rebase || $COMMAND_GIT_STATUS;
else
( echo $ERROR Nao foi possivel posicionar no branch correspondente no submodule \$sm_path, pois o branch nao foi especificado no arquivo .gitmodules do superprojeto! && exit 1 );
fi;
fi;
"
else
echo "$INFO Checking out and updating submodules"
$vCommandGit submodule foreach "
branchSubmodule=\$($COMMAND_GIT_CONFIG -f \$toplevel/.gitmodules submodule.\$name.branch);
currentBranch=\$($COMMAND_GIT_BRANCH --show-current);
if [ \"\$branchSubmodule\" = \".\" ]; then
cd \$toplevel;
branchSuperproject=\$($COMMAND_GIT_BRANCH --show-current);
cd \$sm_path;
if [ \"\$branchSuperproject\" != \"\$currentBranch\" ]; then
$vCommandGit -c core.hooksPath=/dev/null checkout \$branchSuperproject || ( echo $ERROR Nao foi possivel posicionar no branch \$branchSuperproject no submodule \$sm_path! && exit 1 );
fi;
$vCommandGit pull origin \$branchSuperproject --rebase || $COMMAND_GIT_STATUS;
elif [ -n \"\$branchSubmodule\" ]; then
if [ \"\$branchSubmodule\" != \"\$currentBranch\" ]; then
$vCommandGit -c core.hooksPath=/dev/null checkout \$branchSubmodule || ( echo $ERROR Nao foi possivel posicionar no branch \$branchSubmodule no submodule \$sm_path! && exit 1 );
fi;
$vCommandGit pull origin \$branchSubmodule --rebase || $COMMAND_GIT_STATUS;
else
( echo $ERROR Nao foi possivel posicionar no branch correspondente no submodule \$sm_path, pois o branch nao foi especificado no arquivo .gitmodules do superprojeto! && exit 1 );
fi;
"
fi
fi