>> > On 19 Jul 2021, at 11:39, Richard Biener via Gcc-patches 
>> > <gcc-patches@gcc.gnu.org> wrote:
>> > 
>> > On Fri, Jul 16, 2021 at 12:37 PM Serge Belyshev
>> > <belys...@depni.sinp.msu.ru> wrote:
>> >> 
>> >> Based on discussion I've chosen open-coded version without commit hash.
>> > 
>> > As said I'd prefer one with (shortened) hash,

Oh, I misunderstood then.

>> 
>> Likewise, I’ve been using a local change to produce “r12-2447-gcca1e30db142” 
>>  since soon after
>> change; I suspect that 12 digits is ‘enough’.  It makes it easier for the 
>> folks who want to find by 
>> SHA1 as well as folks who want to find by revision number.
>
> If the patch is changed from
>       revision=$r;
> to
>       revision=${r}-g${revision};
> then the exact hash length isn't hardcoded to 12 digits, but whatever git
> chooses to make it unique (with the current state of repository).
> Of course, changes later on in the repository can introduce collisions and
> more hash letters might be needed, but that is a general git problem.  And
> at least when we have the rXX-YYYY-gZZZZZZZZZ revisions, it is still unique
> on the release branches, just one might need to use
> $(git gcc-descr `echo $rev | sed 's/-g[0-9a-f]*$//'`)
> instead of just
> $rev
> in case such collision happens if git tells rXX-YYYY-gZZZZZZZZ is ambiguous.
>

Right, variant with hash has the advantage that it is understood by git
out of the box without customisations, so be it then.

OK for mainline?

---
contrib/Changelog:

        * gcc_update: derive human readable name for HEAD using git describe
        like "git gcc-descr" with short commit hash.  Drop "revision" from 
gcc/REVISION.
---
 contrib/gcc_update | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/contrib/gcc_update b/contrib/gcc_update
index 80fac9fc995..ce472545e25 100755
--- a/contrib/gcc_update
+++ b/contrib/gcc_update
@@ -332,7 +332,22 @@ case $vcs_type in
             exit 1
        fi
 
-       revision=`$GCC_GIT log -n1 --pretty=tformat:%p:%t:%H`
+       # Open-coded version of "git gcc-descr" from 
contrib/gcc-git-customization.sh
+       revision=`$GCC_GIT log -n1 --pretty=tformat:%h`
+       r=`$GCC_GIT describe --all --match 'basepoints/gcc-[0-9]*' HEAD \
+          | 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'`;
+       if test -n $r; then
+               o=`$GCC_GIT config --get gcc-config.upstream`;
+               rr=`echo $r | sed -n 
's,^r\([0-9]\+\)-[0-9]\+\(-g[0-9a-f]\+\)\?$,\1,p'`;
+               if $GCC_GIT rev-parse --verify --quiet 
${o:-origin}/releases/gcc-$rr >/dev/null; then
+                       m=releases/gcc-$rr;
+               else
+                       m=master;
+               fi;
+               if $GCC_GIT merge-base --is-ancestor HEAD ${o:-origin}/$m; then
+                       revision=${r}-g${revision};
+               fi
+       fi
        branch=`$GCC_GIT name-rev --name-only HEAD || :`
        ;;    
 
@@ -414,6 +429,6 @@ rm -f LAST_UPDATED gcc/REVISION
     date
     echo "`TZ=UTC date` (revision $revision)"
 } > LAST_UPDATED
-echo "[$branch revision $revision]" > gcc/REVISION
+echo "[$branch $revision]" > gcc/REVISION
 
 touch_files_reexec

Reply via email to