git-descr.sh 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/bin/sh
  2. # Script to describe a GCC revision based on git hash
  3. short=no
  4. long=no
  5. c=master
  6. for arg in "$@"
  7. do
  8. case "$arg" in
  9. --short) short=yes long=no
  10. ;;
  11. --long|--full) long=yes short=no
  12. ;;
  13. *) c=$arg
  14. esac
  15. done
  16. if test x$short = xyes; then
  17. r=$(git describe --all --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^tags/,,;s,^basepoints/gcc-\([0-9][0-9]*\)-\([0-9][0-9]*\)-g[0-9a-f]*$,r\1-\2,p;s,^basepoints/gcc-\([0-9][0-9]*\)$,r\1-0,p');
  18. elif test x$long = xyes; then
  19. r=$(git describe --all --abbrev=40 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^tags/,,;s,^basepoints/gcc-,r,p')
  20. else
  21. r=$(git describe --all --abbrev=14 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^tags/,,;s,^basepoints/gcc-,r,p')
  22. expr ${r:-no} : 'r[0-9]\+$' >/dev/null && r=${r}-0-g$(git rev-parse $c);
  23. fi;
  24. if test -n $r; then
  25. o=$(git config --get gcc-config.upstream);
  26. rr=$(echo $r | sed -n 's,^r\([0-9]\+\)-[0-9]\+\(-g[0-9a-f]\+\)\?$,\1,p');
  27. if git rev-parse --verify --quiet ${o:-origin}/releases/gcc-$rr >/dev/null; then
  28. m=releases/gcc-$rr;
  29. else
  30. m=master;
  31. fi;
  32. git merge-base --is-ancestor $c ${o:-origin}/$m && echo ${r};
  33. fi;