-
Notifications
You must be signed in to change notification settings - Fork 52
/
Copy pathfoo
executable file
·79 lines (71 loc) · 2.56 KB
/
foo
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
startup_check()
{
# Need to do a git fecth first to download remote changes for us to compare against
git fetch
# Most of this code was taken from the __git_ps1_changes method of https://github.com/markgandolfo/git-bash-completion
local branch_ref
branch_ref="$(git symbolic-ref -q HEAD 2>/dev/null)";
if [ -n "$branch_ref" ]; then
local branch_origin
branch_origin="$(git for-each-ref --format='%(upstream:short)' $branch_ref)";
if [ -n "$branch_origin" ]; then
local branch
branch=${branch_ref##refs/heads/};
if [ "$branch" != "master" ]; then
echo "Not working on the master - cannot proceed"
exit 1
fi
local unpush
unpush=$(git rev-list $branch_origin..$branch --count);
local unpull
unpull=$(git rev-list $branch..$branch_origin --count);
local staged
staged=$(git diff --staged --name-status | wc -l);
local uncommits
uncommits=$(git status -s -uall --porcelain);
if [[ $unpush -gt 0 ]]; then
echo "There are changes which have not been pushed - cannot proceed. The following commits need to be pushed:"
local unpushed
unpushed=$(git rev-list $branch_origin..$branch);
for commit in $unpushed; do
git --no-pager log --pretty=format:"%H - %an, %ar : %s" -n 1 $commit
done
exit 1
fi
if [[ $unpull -gt 0 ]]; then
echo "There are changes which have not been pulled - cannot proceed. The following commits have been added to master since your last pull:"
local unpulled
unpulled=$(git rev-list $branch..$branch_origin);
for commit in $unpulled; do
git --no-pager log --pretty=format:"%H - %an, %ar : %s" -n 1 $commit
done
exit 1
fi
if [[ $staged -gt 0 ]]; then
local staging
staging=$(git diff --staged --name-status);
echo "There are changes which are staged but have been commited - cannot proceed"
echo $staging
exit 1
fi
local unstaged
unstaged=$(echo "$uncommits" | grep -c "^ [A-Z]");
if [[ $unstaged -gt 0 ]]; then
echo "There are unstaged changes - cannot proceed"
echo $(echo "$uncommits" | grep "^ [A-Z]")
exit 1
fi
local untracked
untracked=$(echo "$uncommits" | grep -c "^??");
if [[ $untracked -gt 0 ]]; then
echo "There are untracked changes - cannot proceed"
echo $(echo "$uncommits" | grep "^??")
exit 1
fi
fi
else
echo "Working folder isn't a git folder"
exit 1
fi
}
startup_check