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