summaryrefslogtreecommitdiff
path: root/pull.sh
diff options
context:
space:
mode:
Diffstat (limited to 'pull.sh')
-rwxr-xr-xpull.sh68
1 files changed, 68 insertions, 0 deletions
diff --git a/pull.sh b/pull.sh
new file mode 100755
index 0000000..f90a1cb
--- /dev/null
+++ b/pull.sh
@@ -0,0 +1,68 @@
+#!/usr/bin/env bash
+
+export LANG=C
+
+function status {
+ if [ ! -d "$1" ]; then
+ return
+ fi
+ DIR=$(pwd)
+ cd "$1"
+ echo "$2 ($(git symbolic-ref --short -q HEAD)):"
+ if [[ "${CMD}" == "more" ]]; then
+ git last
+ fi
+
+ if [[ "${CMD}" == "force" ]]; then
+ git pull --commit --no-edit
+ cd "$DIR"
+ return
+ fi
+ STR=$(git diff --name-only)
+ STR2=$(git status|grep "Your branch is ahead")$(git status|grep -E "have diverged")
+ STR3=$(git status -s -uno)
+ if [[ -n "${STR}${STR2}${STR3}" ]]; then
+ echo -e "\e[1;31mCant pull because changes not pushed\e[0m"
+ else
+ git pull
+ fi
+ cd "$DIR"
+}
+
+function status2 {
+ if [ ! -d "$1" ]; then
+ return
+ fi
+ DIR=$(pwd)
+ cd "$1"
+ STR=$(git diff --name-only)
+ STR2=$(git status|grep "Your branch is ahead")
+ STR3=$(git status -s -uno)
+ echo "$2 ($(git symbolic-ref --short -q HEAD)):"
+ if [[ -n "${STR}${STR2}${STR3}" ]]; then
+ echo -e "\e[1;31mCant pull because changes not pushed\e[0m"
+ else
+ git pull --no-commit
+ git fetch upstream #origin
+ export BRANCH=$(git rev-parse --abbrev-ref HEAD)
+ git reset --hard "origin/${BRANCH}"
+ fi
+ cd "$DIR"
+}
+
+CMD="$1"
+if [[ -z "${CMD}" ]]; then
+ export CMD="normal"
+fi
+
+status . evol-all
+status client-data client-data
+status2 server-code server-code
+status server-data server-data
+status tools tools
+status server-code/src/evol evol-hercules
+#status music music
+status manaplus manaplus
+#status docs docs
+#status art art
+#status wiki wiki