| #!/bin/sh |
| |
| inst_prefix=$( |
| IFS=: |
| for p in $PATH |
| do |
| probed=${p%/git-active/bin} |
| if test "$probed" != "$p" |
| then |
| echo "$probed" |
| exit |
| fi |
| done |
| echo $HOME |
| ) |
| |
| LF=' |
| ' |
| output= |
| for v in maint master next jch seen |
| do |
| installed=$( |
| test -f "$inst_prefix/git-$v/bin/git" && |
| "$inst_prefix/git-$v/bin/git" version |
| ) |
| dirty= |
| if version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$') |
| then |
| : |
| elif version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)\.dirty$') |
| then |
| dirty=" (with changes)" |
| elif version=v$(expr "$installed" : \ |
| 'git version \(.*\)\.rc[0-9]*$') |
| then |
| version="$version"-$(expr "$installed" : \ |
| 'git version .*\.\(rc[0-9]*\)$') |
| else |
| version=v$(expr "$installed" : 'git version \(.*\)') |
| fi |
| |
| version=$(git rev-parse --verify "$version^0" 2>/dev/null) |
| revision=$(git show-ref -s --verify "refs/heads/$v") |
| if test "z$version" = "z$revision" |
| then |
| in= out= |
| if test -z "$dirty" |
| then |
| installed= |
| else |
| installed=" $installed$dirty" |
| fi |
| elif test -z "$version" |
| then |
| in="[41;37m" out="[m" |
| installed=" none" |
| else |
| installed=$(git describe --long $version) |
| case "$dirty" in |
| '') |
| ;; |
| ?*) |
| installed="$installed$dirty" |
| esac |
| in="[41;37m" out="[m" installed=" $installed" |
| fi |
| output="$output${output:+$LF}" |
| output="$output$in$v$out$installed $(git describe --long refs/heads/$v)" |
| done |
| |
| echo "$output" |
| echo "$output" | sha1sum | sed -e 's/ .*//' |