86 lines
1.8 KiB
Bash
Executable File
86 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [ -n "$2" ]; then
|
|
cd "$2" # update given directory only
|
|
else
|
|
cd "$(dirname $0)"/../../mods_src
|
|
fi
|
|
|
|
VERBOSE="$1"
|
|
|
|
GIT="git --no-pager"
|
|
GITPARAM="--color=always"
|
|
|
|
if [ "$VERBOSE" == "" ]; then
|
|
VERBOSE=0
|
|
fi
|
|
|
|
# 0: just update relevant infos
|
|
# 1 display "branch -vaa" + local changes
|
|
# 2 display log on current branch
|
|
# 3 display "remote -v"
|
|
|
|
|
|
find . -name ".git" -type d | while read repo; do
|
|
echo ''
|
|
echo '--------------------------------------'
|
|
echo "$(dirname "$repo")"
|
|
echo '--------------------------------------'
|
|
|
|
cd "$(dirname "$repo")"
|
|
|
|
# fetch all connected remotes
|
|
for repo in $(git remote); do
|
|
$GIT fetch "$repo" --prune
|
|
done
|
|
|
|
# Display repo status in different verbosity
|
|
if [ "$VERBOSE" -ge 1 ]; then
|
|
$GIT branch -vva $GITPARAM
|
|
fi
|
|
|
|
# create log range
|
|
currentbranch="$(git branch | grep '^*' | sed 's:\* ::g')"
|
|
remotebranch="$(git branch -avv | grep '^\*' | sed 's@.*\[@@g;s@[]:].*@@g' | grep -v '^\*')"
|
|
|
|
# print the log information
|
|
if [ "$VERBOSE" -ge 2 ]; then
|
|
if [ "$remotebranch" == "" ]; then
|
|
echo '!!!!! No remote branch for' $currentbranch '!!!!!!'
|
|
else
|
|
echo $currentbranch '=>' "$remotebranch"
|
|
$GIT log $currentbranch..$remotebranch
|
|
fi
|
|
|
|
if [ "$VERBOSE" -ge 3 ]; then
|
|
$GIT remote -v
|
|
fi
|
|
fi
|
|
|
|
# Now pull+merge
|
|
# git pull. (from man git-pull: git pull is shorthand for git fetch followed by git merge FETCH_HEAD.)
|
|
if [ ! "$remotebranch" == "" ]; then
|
|
$GIT merge "$remotebranch"
|
|
fi
|
|
|
|
# display local changes
|
|
if [ $VERBOSE -ge 1 ]; then
|
|
$GIT diff $GITPARAM #display local changes
|
|
fi
|
|
|
|
echo "last commit: $(git log -1 --format=%cd)"
|
|
|
|
cd - >/dev/null
|
|
done
|
|
|
|
|
|
#########################################
|
|
# Find all ".hg" and pull them
|
|
find . -name ".hg" -type d | while read repo; do
|
|
echo "$(dirname "$repo")"
|
|
cd "$(dirname "$repo")"
|
|
hg pull
|
|
cd - >/dev/null
|
|
done
|
|
|