/
git_clone_all_branches.sh
102 lines (77 loc) · 1.78 KB
/
git_clone_all_branches.sh
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
PAUSE=1
PAUSE=0
################################################################################
# Functions:
press() {
echo $*
[ $PAUSE -eq 0 ] && return
echo "Press <return> to continue"
read _DUMMY
[ "$_DUMMY" = "q" ] && exit 0
[ "$_DUMMY" = "Q" ] && exit 0
}
die() {
echo "$0: die - $*" >&2
exit 1
}
echoCmd() {
echo
echo "-- [$PWD]"
echo "-- $*"
$*
}
################################################################################
# Args:
REGEX=""
while [ ! -z "$1" ];do
case $1 in
-r) shift; REGEX=$1;;
-p) PAUSE=1;;
-np) PAUSE=0;;
*) die "Unknown option '$1'";;
esac
shift
done
################################################################################
# Main:
echo
echo "Getting master URL: "
URL=$(git remote -v | grep fetch | awk '{print $2;}')
echo $URL
GIT_URL=${URL}.git
echo
echo "Getting chapter branches: "
MAIN=__MAIN__
#[ ! -d BRANCHES ] && mkdir BRANCHES
[ ! -d BRANCHES/$MAIN ] && {
mkdir -p BRANCHES/$MAIN;
echo;
echo "Cloning master from $GIT_URL";
echoCmd time git clone --mirror $GIT_URL BRANCHES/$MAIN/.git;
}
cd BRANCHES/$MAIN
if [ -z "$REGEX" ];then
BRANCHES=$(git branch -a)
else
BRANCHES=$(git branch -a | grep -E $REGEX)
fi
cd -
cd BRANCHES/
#BRANCHES=$(ls -1 | grep -v $MAIN)
for branch in $BRANCHES
do
#[ $chapter -lt 10 ] && chapter="0${chapter}"
#BRANCH=chapter_${chapter}
DIR=$branch
echo
press "==== [$PWD] Copying master to $DIR"
cp -a $MAIN $DIR
cd $DIR
#git branch $branch
#git checkout $branch
#git pull remote $branch
git branch -a | grep $branch
echoCmd git config --bool core.bare false;
echoCmd git checkout $branch
cd -
done