X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=sync.sh;h=95b3c4a925b0a2b4ac6bcede643c9be0f2a5bfc9;hb=86090f20bd601d1c66bc05c13b13da9a546fac80;hp=498a2b3f894b600bd9deb849b6f8ed676e6f5cde;hpb=27b94f650cd4d27bbf8bd9fc33030077a675d4d7;p=config%2Fdotfiles.git diff --git a/sync.sh b/sync.sh index 498a2b3..95b3c4a 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 @@ -26,13 +26,31 @@ for project in `find . -name .git -type d`; do pwd=`pwd` cd "$project" - # Display all commits not in the master branch. + # Remove .git from repository name. + project=`echo "$project" | sed "s|.git||"` + + # 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 - output=`git log --graph --all --pretty=oneline --color master..` - if [ "x$output" != x ]; then - echo "$project status:" - echo "$output" - fi + # Display a log similar to gitk but for the console. + function 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 @@ -43,3 +61,8 @@ for project in `find . -name .git -type d`; do cd "$pwd" done + +# Run status after a fetch to see new changes. +if [ $method = fetch ]; then + ./sync.sh status +fi