nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 74 lines 1.2 kB view raw
1if [ "$1" != "rev-parse" ]; then 2 echo "$@" >&2 3 exit 1 4fi 5shift 6 7short=0 8shortlen=7 9ref= 10while [ $# -gt 0 ]; do 11 case "$1" in 12 --short) 13 short=1 14 if [ $# -gt 1 ] && [ "$2" -eq "$2" ] 2>/dev/null; then 15 shortlen=$2 16 shift 17 else 18 shortlen=7 19 fi 20 ;; 21 --short=*) 22 short=1 23 shortlen=''${1#--short=} 24 ;; 25 --is-inside-work-tree) 26 echo true 27 exit 0 28 ;; 29 HEAD|HEAD:*) 30 ref=$1 31 ;; 32 *) 33 echo "rev-parse $@" >&2 34 exit 1 35 ;; 36 esac 37 shift 38done 39 40if [ -z "$ref" ]; then 41 echo "rev-parse" >&2 42 exit 1 43fi 44 45case "$ref" in 46 HEAD) 47 path=$(pwd) 48 hash= 49 while [ "$path" != "/" ]; do 50 if [ -f "$path/.gitrev" ]; then 51 hash=$(cat "$path/.gitrev") 52 break 53 fi 54 path=$(dirname "$path") 55 done 56 ;; 57 HEAD:*) 58 subpath=''${ref#HEAD:} 59 if [ -f "$PWD/$subpath/.gitrev" ]; then 60 hash=$(cat "$PWD/$subpath/.gitrev") 61 fi 62 ;; 63esac 64 65if [ -z "$hash" ]; then 66 echo "rev-parse $ref" >&2 67 exit 1 68fi 69 70if [ "$short" -eq 1 ]; then 71 printf '%s\n' "$(printf '%s' "$hash" | cut -c1-"$shortlen")" 72else 73 printf '%s\n' "$hash" 74fi