X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=sync.sh;h=6600c889344ea4e21bdcaf554eb373d701bbd95f;hb=9571f95bc667454fab054ba67477d90ff323d87c;hp=88b59e296cddb7a0018ea49c754a1fe14baa003f;hpb=0ac6aa77b7b14c940a6b85f633326b57bc03f043;p=config%2Fdotfiles.git diff --git a/sync.sh b/sync.sh index 88b59e2..6600c88 100755 --- a/sync.sh +++ b/sync.sh @@ -6,12 +6,12 @@ # Select the method: fetch, push and status is possible. -if [ x$1 = x -o x$1 = xfetch -o x$1 = xfe ]; then +if [ x$1 = x -o x$1 = xstatus -o x$1 = xst ]; then + method=status +elif [ $1 = fetch -o $1 = fe ]; then method=fetch elif [ $1 = push -o $1 = pu ]; then method=push -elif [ $1 = status -o $1 = st ]; then - method=status else echo "Usage: sync.sh [fetch | fe | push | pu | status | st]" echo @@ -29,10 +29,28 @@ for project in `find . -name .git -type d`; do # Remove .git from repository name. project=`echo "$project" | sed "s|.git||"` - # Display all commits not in the master branch. + # Display all commits not in the master branch (which have to be merged + # from the remote branches) or not in the remote branches (which have to + # be pushed to the remote hosts). if [ $method = status ]; then - echo "status of $project" - git log --graph --all --pretty=oneline master.. + # Display a log similar to gitk but for the console. + git_log() { + output=`git log --graph --all --pretty=oneline --color $1` + if [ "x$output" != x ]; then + echo $2 + echo "$output" + fi + } + + # Display unmerged commits. + git_log master.. "$project needs merge:" + + # Display not pushed commits. + for branch in `git branch -r`; do + branch=`echo "$branch" | sed 's|* ||g'` + git_log "$branch.." "$project ($branch) needs push:" + done + # Fetch from/Push to all remotes. else for remote in `git remote`; do