src-git (1099B)
1 #!/bin/sh 2 3 for dir in ~/.usr/src/*; do 4 [ -d "$dir"/.git ] || continue 5 6 tag="$(git -C "$dir" tag --sort=creatordate --points-at HEAD | tail -1)" 7 if [ -n "$tag" ]; then 8 [ "$1" = "-u" ] && git -C "$dir" fetch --tags 9 remote_tag="$(git -C "$dir" for-each-ref --sort=creatordate --format '%(refname)' refs/tags | cut -d/ -f3 | tail -1)" 10 if [ "${tag#v}" != "${remote_tag#v}" ]; then 11 printf "%-25s %15s -> %s\n" "$(basename $dir)" "$tag" "$remote_tag" 12 fi 13 else 14 [ "$1" = "-u" ] && git -C "$dir" remote update 15 branch="$(git -C "$dir" rev-parse --abbrev-ref HEAD)" 16 if [ "$branch" = "HEAD" ]; then 17 echo "No branch or tag found for $pkg" 18 exit 1 19 fi 20 if remote="$(git -C "$dir" rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null)"; then 21 commits="$(git -C "$dir" rev-list --left-only --count "$remote...@")" 22 if [ "$commits" != 0 ]; then 23 printf "%-25s %15s ++ %s\n" "$(basename $dir)" "$branch" "$commits" 24 fi 25 fi 26 fi 27 done