]> ruderich.org/simon Gitweb - config/dotfiles.git/commitdiff
sync.sh: Status also displays unpushed commits.
authorSimon Ruderich <simon@ruderich.org>
Sun, 1 Mar 2009 15:36:46 +0000 (16:36 +0100)
committerSimon Ruderich <simon@ruderich.org>
Sun, 1 Mar 2009 15:36:46 +0000 (16:36 +0100)
sync.sh

diff --git a/sync.sh b/sync.sh
index a3f9eaf124ffc324b942582a7e30ff2736fddcb2..95b3c4a925b0a2b4ac6bcede643c9be0f2a5bfc9 100755 (executable)
--- a/sync.sh
+++ b/sync.sh
@@ -29,13 +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
-        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