forked from kappapiana/script
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgit-status-subdir.sh
executable file
·101 lines (79 loc) · 1.52 KB
/
git-status-subdir.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
101
#!/bin/bash
echo "
this script is only for git directories with repositories in subdirectories
*** 2 levels down ***
(git/dir/repo/)
don't use if structure is only one level (git/repo)"
maindir="$1"
# No directory has been provided, use current
if [ -z "$maindir" ]
then
maindir="`pwd`"
fi
# Make sure directory ends with "/"
if [[ $maindir != */ ]]
then
dir="$maindir/*"
else
dir="$maindir*"
fi
for f in $maindir/*
do
dir=$f
# Make sure directory ends with "/"
if [[ $maindir != */ ]]
then
dir="$dir/*"
else
dir="$dir*"
fi
echo "dir is $dir"
# Loop all sub-directories
for f in $dir
do
# Only interested in directories
[ -d "${f}" ] || continue
echo -en "\033[0;35m"
echo "${f}"
echo -en "\033[0m"
# Check if directory is a git repository
if [ -d "$f/.git" ]
then
mod=0
cd $f
last_update=$(stat -c %Y .git/FETCH_HEAD)
now=$(date +%s)
if [ $(( $now - $last_update )) -gt 3600 ] ; then
echo "fetching"
git fetch;
else
echo "no need to fetch, too recently fetched, check locally"
fi
# Check for modified files
if [ $(git status | grep modified -c) -ne 0 ]
then
mod=1
echo -en "\033[0;31m"
echo "Modified files"
echo -en "\033[0m"
fi
# Check for untracked files
if [ $(git status | grep Untracked -c) -ne 0 ]
then
mod=1
echo -en "\033[0;31m"
echo "Untracked files"
echo -en "\033[0m"
fi
# Check if everything is peachy keen
if [ $mod -eq 0 ]
then
echo "Nothing to commit"
fi
cd ../
else
echo "Not a git repository"
fi
echo
done
done