[v3] gcc_update: use human readable name for revision string in gcc/REVISION

Message ID 87eebuzgw3.fsf_-_@depni.sinp.msu.ru
State New
Headers show
Series
  • [v3] gcc_update: use human readable name for revision string in gcc/REVISION
Related show

Commit Message

Serge Belyshev July 19, 2021, 11:23 a.m.
>> > 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

>> > <belyshev@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(-)

Comments

HAO CHEN GUI via Gcc-patches Sept. 6, 2021, 9:49 a.m. | #1
Ping?

[PATCH v3] gcc_update: use human readable name for revision string in gcc/REVISION
https://gcc.gnu.org/pipermail/gcc-patches/2021-July/575556.html

>

> 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
HAO CHEN GUI via Gcc-patches Sept. 6, 2021, 9:54 a.m. | #2
On Mon, Sep 06, 2021 at 12:49:18PM +0300, Serge Belyshev wrote:
	* gcc_update: derive human readable name for HEAD using git describe

After : start with upper case, ^^^ Derive

	like "git gcc-descr" with short commit hash.  Drop "revision" from gcc/REVISION.

Too long line.

Otherwise LGTM.

> > --- 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


	Jakub
Serge Belyshev Sept. 6, 2021, 1:01 p.m. | #3
Jakub Jelinek <jakub@redhat.com> writes:

> On Mon, Sep 06, 2021 at 12:49:18PM +0300, Serge Belyshev wrote:

> 	* gcc_update: derive human readable name for HEAD using git describe

>

> After : start with upper case, ^^^ Derive

>

> 	like "git gcc-descr" with short commit hash.  Drop "revision" from gcc/REVISION.

>

> Too long line.

>

> Otherwise LGTM.


Thanks!  Changed and committed as r12-3370-g78b34cd8a80.

Patch

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