getver.sh 777 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env bash
  2. export LANG=C
  3. export LC_ALL=C
  4. [ -n "$TOPDIR" ] && cd $TOPDIR
  5. GET_REV=$1
  6. try_version() {
  7. [ -f version ] || return 1
  8. REV="$(cat version)"
  9. [ -n "$REV" ]
  10. }
  11. try_git() {
  12. git rev-parse --git-dir >/dev/null 2>&1 || return 1
  13. [ -n "$GET_REV" ] || GET_REV="HEAD"
  14. case "$GET_REV" in
  15. r*)
  16. GET_REV="$(echo $GET_REV | tr -d 'r')"
  17. BASE_REV="$(git rev-list reboot..HEAD --count)"
  18. REV="$(git rev-parse HEAD~$((BASE_REV - GET_REV)))"
  19. ;;
  20. *)
  21. REV="$(git rev-list reboot..$GET_REV --count)"
  22. REV="${REV:+r$REV}"
  23. ;;
  24. esac
  25. [ -n "$REV" ]
  26. }
  27. try_hg() {
  28. [ -d .hg ] || return 1
  29. REV="$(hg log -r-1 --template '{desc}' | awk '{print $2}' | sed 's/\].*//')"
  30. REV="${REV:+r$REV}"
  31. [ -n "$REV" ]
  32. }
  33. try_version || try_git || try_hg || REV="unknown"
  34. echo "$REV"