]>
Tony Duckles's Git Repositories (git.nynim.org) - dotfiles.git/blob - bin/git-incoming
2 # Usage: git-incoming [-d] [<upstream>] [<head> [<limit>]]
3 # Show commits on <upstream> that do not exist on current branch.
5 # bail out with message to stderr and exit status 1
7 echo "$(basename $0):" "$@" 1>&2
12 SHA
=$(git config --get-color 'color.branch.local')
13 ADD
=$(git config --get-color 'color.diff.new')
14 REM
=$(git config --get-color 'color.diff.old')
15 RESET
=$(git config --get-color '' 'reset')
17 # check for -d / --diff argument
19 if [ "$1" = '-d' -o "$1" = '--diff' ]
24 # use tracking branch if no upstream given
27 # get the current branch in refs/heads/<branch> form
28 ref
=$(git symbolic-ref -q HEAD)
30 die
"you're not on a branch"
32 # just the branch name please
33 branch
=$(echo "$ref" | sed 's@^refs/heads/@@')
35 die
"you're in a weird place; get on a local branch"
37 # grab remote name for current branch
38 remote
=$(git config --get "branch.$branch.remote" || true)
40 # grab tracked branch name for current branch
41 merge
=$(git config branch.$branch.merge) ||
42 die
"branch $branch isn't tracking a remote branch and no <upstream> given"
45 set -- "$remote/$(echo "$merge" |sed 's@^refs/heads/@@')"
49 then git
diff HEAD...
"$1"
50 else git cherry
-v HEAD
"$@" |
52 sed -e "s/^\(.\) \(.......\)/\1 $SHA\2$RESET/" |
53 sed -e "s/^-/$REM-$RESET/" -e "s/^+/$ADD+$RESET/"