# 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
# 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