1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #!/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
|