Message ID | 7e803eb3-d9df-99de-490d-823c1ffe29d7@suse.cz |
---|---|
State | New |
Headers | show |
Series | contrib: git gcc-descr defaulting to print hash | expand |
On Fri, Oct 08, 2021 at 01:01:33PM +0200, Martin Liška wrote: > I'm sending a patch originally written by Martin Jambor. > The patch changes the behavior in the following way: > > $ git gcc-descr HEAD~ > > r12-4245-gdb3d7270b42fe2 > > $ git gcc-descr --short HEAD~ > > r12-4245 I think changing the default is ok, but dropping --full is not, it should stay and behave the way it did before (i.e. print r12-4245-gdb3d7270b42fe27fb05664c4fdf524ab7ad13a75 same thing as the new default except for full hash instead of first 14 chars from it). > $ git gcc-undescr r12-4245-gdb3d7270b42fe2 > > db3d7270b42fe27fb05664c4fdf524ab7ad13a75 I don't understand this. Why do you want to make this work? That is clearly a noop, you can use r12-4245-gdb3d7270b42fe2 directly in git commands, and if you for whatever strange reason don't want the r12-4245-g prefix before it, just copy'n'paste what is after it. Jakub
On 10/8/21 13:12, Jakub Jelinek wrote: > I think changing the default is ok, but dropping --full is not, > it should stay and behave the way it did before (i.e. print > r12-4245-gdb3d7270b42fe27fb05664c4fdf524ab7ad13a75 > same thing as the new default except for full hash instead of > first 14 chars from it). All right, makes sense, but updating the git alias doesn't work for me. Thus I'm suggesting a Python replacement of it, which does: $ ./describe.py basepoints/gcc-11 r11-0-g50ee04838efc16 $ ./describe.py r12-4285-g07dd3bcda17f97 $ ./describe.py --short r12-4285 $ ./describe.py --full r12-4285-g07dd3bcda17f97cf5476c3d6f2f2501c1e0712e6 Motivation behind usage of Python: - the script can be put to contrib and nobody would have to re-run contrib/gcc-git-customization.sh locally - it's not a single line script and one doesn't have to do bash escaping in the contrib/gcc-git-customization.sh script - positional argument support Thoughts? Note I can port the same way the counterpart script. One another note: $ git gcc-descr basepoints/gcc-11 r11-0 seems to me like bogus. Cheers, Martin
Hello. There's a complete patch that implements both git gcc-descr and gcc-undesrc and sets corresponding git aliases to use them. Ready to be installed? Thanks, Martin
Hi Martin, On 12.10.21 10:59, Martin Liška wrote: > There's a complete patch that implements both git gcc-descr and > gcc-undesrc > and sets corresponding git aliases to use them. When invoking ./contrib/git-describe.py directly, I get the error: fatal: Not a valid object name /master I think you need something like: - upstream = r.stdout.strip() if r.returncode else 'origin' + upstream = r.stdout.strip() if r.returncode == 0 else 'origin' * * * Additionally, I observe the following (independent of the conversion): For 7433458d871f6bfe2169b9d7d04fec64bb142924, I get: r0-80854-g7433458d871f6b The question is whether we are happy that only reversions since basepoints/gcc-5 have a version number or whether we want to use releases/gcc-x.y.0 -> x.y as fallback when basepoint does not exist or back-added more basepoints? Admittedly, this will add '.', thus, maybe the answer is 'no'? Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955
On Thu, Oct 14, 2021 at 11:06:55AM +0200, Tobias Burnus wrote: > Additionally, I observe the following (independent of the conversion): > For 7433458d871f6bfe2169b9d7d04fec64bb142924, I get: > r0-80854-g7433458d871f6b > The question is whether we are happy that only reversions since > basepoints/gcc-5 have a version number or whether we want to > use releases/gcc-x.y.0 -> x.y as fallback when basepoint does not > exist or back-added more basepoints? Admittedly, this will add '.', > thus, maybe the answer is 'no'? Yes, everything older than basepoints/gcc-5 is r0-NNNNN-gNNNNNN by design. Digits aren't allowed there and while we could use say underscore, it doesn't seem to be worth it for such old history, and all the bugzilla highlighting, web redirection etc. handles just r number - number - g hexnumber or r number - number formats. It is more common to refer to the old commits through svn revisions anyway. Jakub
On 10/12/21 10:59, Martin Liška wrote: > Hello. > > There's a complete patch that implements both git gcc-descr and gcc-undesrc > and sets corresponding git aliases to use them. > > Ready to be installed? > Thanks, > Martin All right, so Jakub told me at IRC that we doesn't support porting to Python. However, he promised supporting the changes I made in the original shell script. Cheers, Martin
On 10/18/21 11:01, Martin Liška wrote: > On 10/12/21 10:59, Martin Liška wrote: >> Hello. >> >> There's a complete patch that implements both git gcc-descr and gcc-undesrc >> and sets corresponding git aliases to use them. >> >> Ready to be installed? >> Thanks, >> Martin > > All right, so Jakub told me at IRC that we doesn't support porting to Python. > However, he promised supporting the changes I made in the original shell script. @Jakub: May I remind this, please? Thanks, Martin > > Cheers, > Martin
Hi, On Wed, Jan 19 2022, Martin Liška wrote: > On 10/18/21 11:01, Martin Liška wrote: >> On 10/12/21 10:59, Martin Liška wrote: >>> Hello. >>> >>> There's a complete patch that implements both git gcc-descr and gcc-undesrc >>> and sets corresponding git aliases to use them. >>> >>> Ready to be installed? >>> Thanks, >>> Martin >> >> All right, so Jakub told me at IRC that we doesn't support porting to Python. >> However, he promised supporting the changes I made in the original shell script. > > @Jakub: May I remind this, please? putting the following line in ..git/config seems to do the trick? gcc-descr = "!f() { if test ${1:-no} = --short; then c=${2:-master}; 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'); elif test ${1:-no} = --full; then c=${2:-master}; r=$(git describe --all --abbrev=40 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); else c=${1:-master}; r=$(git describe --all --abbrev=14 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); expr match ${r:-no} '^r[0-9]\\+$' >/dev/null && r=${r}-0-g$(git rev-parse ${2:-master}); fi; if test -n $r; then o=$(git config --get gcc-config.upstream); rr=$(echo $r | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\\(-g[0-9a-f]\\+\\)\\?$,\\1,p'); if git rev-parse --verify --quiet ${o:-origin}/releases/gcc-$rr >/dev/null; then m=releases/gcc-$rr; else m=master; fi; git merge-base --is-ancestor $c ${o:-origin}/$m && \\echo ${r}; fi; }; f" Derived from the following before squashing all the new lines: if test ${1:-no} = --short; then c=${2:-master}; 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'); elif test ${1:-no} = --long; then c=${2:-master}; r=$(git describe --all --abbrev=40 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); else c=${1:-master}; r=$(git describe --all --abbrev=14 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); expr match ${r:-no} '^r[0-9]\\+$' >/dev/null && r=${r}-0-g$(git rev-parse ${2:-master}); fi; if test -n $r; then o=$(git config --get gcc-config.upstream); rr=$(echo $r | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\\(-g[0-9a-f]\\+\\)\\?$,\\1,p'); if git rev-parse --verify --quiet ${o:-origin}/releases/gcc-$rr >/dev/null; then m=releases/gcc-$rr; else m=master; fi; git merge-base --is-ancestor $c ${o:-origin}/$m && \\echo ${r}; fi; (And if you wanted to ask then no, I am not touching contrib/gcc-git-customization.sh, not even with a long pole, it scares me :-) Martin
On 1/19/22 13:49, Martin Jambor wrote: > Hi, > > On Wed, Jan 19 2022, Martin Liška wrote: >> On 10/18/21 11:01, Martin Liška wrote: >>> On 10/12/21 10:59, Martin Liška wrote: >>>> Hello. >>>> >>>> There's a complete patch that implements both git gcc-descr and gcc-undesrc >>>> and sets corresponding git aliases to use them. >>>> >>>> Ready to be installed? >>>> Thanks, >>>> Martin >>> >>> All right, so Jakub told me at IRC that we doesn't support porting to Python. >>> However, he promised supporting the changes I made in the original shell script. >> >> @Jakub: May I remind this, please? > > putting the following line in ..git/config seems to do the trick? > > gcc-descr = "!f() { if test ${1:-no} = --short; then c=${2:-master}; 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'); elif test ${1:-no} = --full; then c=${2:-master}; r=$(git describe --all --abbrev=40 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); else c=${1:-master}; r=$(git describe --all --abbrev=14 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); expr match ${r:-no} '^r[0-9]\\+$' >/dev/null && r=${r}-0-g$(git rev-parse ${2:-master}); fi; if test -n $r; then o=$(git config --get gcc-config.upstream); rr=$(echo $r | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\\(-g[0-9a-f]\\+\\)\\?$,\\1,p'); if git rev-parse --verify --quiet ${o:-origin}/releases/gcc-$rr >/dev/null; then m=releases/gcc-$rr; else m=master; fi; git merge-base --is-ancestor $c ${o:-origin}/$m && \\echo ${r}; fi; }; f" > > Derived from the following before squashing all the new lines: > > if test ${1:-no} = --short; then > c=${2:-master}; > 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'); > elif test ${1:-no} = --long; then > c=${2:-master}; > r=$(git describe --all --abbrev=40 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); > else > c=${1:-master}; > r=$(git describe --all --abbrev=14 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); > expr match ${r:-no} '^r[0-9]\\+$' >/dev/null && r=${r}-0-g$(git rev-parse ${2:-master}); > fi; > if test -n $r; then > o=$(git config --get gcc-config.upstream); > rr=$(echo $r | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\\(-g[0-9a-f]\\+\\)\\?$,\\1,p'); > if git rev-parse --verify --quiet ${o:-origin}/releases/gcc-$rr >/dev/null; then > m=releases/gcc-$rr; > else > m=master; > fi; > git merge-base --is-ancestor $c ${o:-origin}/$m && \\echo ${r}; > fi; Anyway, can we please put the nicely formatted bash script to contrib/git-describe.sh (contrib/git-undescribe.sh), having that squashed to one line is just crazy. Martin, can you please do that? > > > (And if you wanted to ask then no, I am not touching > contrib/gcc-git-customization.sh, not even with a long pole, it scares > me :-) Sure, I can then adjust it if we end up with an outlined version where to code sits in proper .sh files. Martin > > Martin >
On Wed, Jan 19, 2022 at 8:18 AM Martin Liška <mliska@suse.cz> wrote: > > On 1/19/22 13:49, Martin Jambor wrote: > > Hi, > > > > On Wed, Jan 19 2022, Martin Liška wrote: > >> On 10/18/21 11:01, Martin Liška wrote: > >>> On 10/12/21 10:59, Martin Liška wrote: > >>>> Hello. > >>>> > >>>> There's a complete patch that implements both git gcc-descr and gcc-undesrc > >>>> and sets corresponding git aliases to use them. > >>>> > >>>> Ready to be installed? > >>>> Thanks, > >>>> Martin > >>> > >>> All right, so Jakub told me at IRC that we doesn't support porting to Python. > >>> However, he promised supporting the changes I made in the original shell script. > >> > >> @Jakub: May I remind this, please? > > > > putting the following line in ..git/config seems to do the trick? > > > > gcc-descr = "!f() { if test ${1:-no} = --short; then c=${2:-master}; 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'); elif test ${1:-no} = --full; then c=${2:-master}; r=$(git describe --all --abbrev=40 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); else c=${1:-master}; r=$(git describe --all --abbrev=14 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); expr match ${r:-no} '^r[0-9]\\+$' >/dev/null && r=${r}-0-g$(git rev-parse ${2:-master}); fi; if test -n $r; then o=$(git config --get gcc-config.upstream); rr=$(echo $r | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\\(-g[0-9a-f]\\+\\)\\?$,\\1,p'); if git rev-parse --verify --quiet ${o:-origin}/releases/gcc-$rr >/dev/null; then m=releases/gcc-$rr; else m=master; fi; git merge-base --is-ancestor $c ${o:-origin}/$m && \\echo ${r}; fi; }; f" > > > > Derived from the following before squashing all the new lines: > > > > if test ${1:-no} = --short; then > > c=${2:-master}; > > 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'); > > elif test ${1:-no} = --long; then > > c=${2:-master}; > > r=$(git describe --all --abbrev=40 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); > > else > > c=${1:-master}; > > r=$(git describe --all --abbrev=14 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); > > expr match ${r:-no} '^r[0-9]\\+$' >/dev/null && r=${r}-0-g$(git rev-parse ${2:-master}); > > fi; > > if test -n $r; then > > o=$(git config --get gcc-config.upstream); > > rr=$(echo $r | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\\(-g[0-9a-f]\\+\\)\\?$,\\1,p'); > > if git rev-parse --verify --quiet ${o:-origin}/releases/gcc-$rr >/dev/null; then > > m=releases/gcc-$rr; > > else > > m=master; > > fi; > > git merge-base --is-ancestor $c ${o:-origin}/$m && \\echo ${r}; > > fi; > > Anyway, can we please put the nicely formatted bash script to contrib/git-describe.sh (contrib/git-undescribe.sh), having that squashed > to one line is just crazy. > > Martin, can you please do that? > > > > > > > (And if you wanted to ask then no, I am not touching > > contrib/gcc-git-customization.sh, not even with a long pole, it scares > > me :-) > > Sure, I can then adjust it if we end up with an outlined version where to code > sits in proper .sh files. > > Martin > > > > > Martin > > > Hi, while people are modifying contrib/gcc-git-customization.sh, could I get someone to take a look at bug 102644, too? https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102664 Thanks, Eric
diff --git a/contrib/gcc-git-customization.sh b/contrib/gcc-git-customization.sh index aca61b781ff..b63c4c80935 100755 --- a/contrib/gcc-git-customization.sh +++ b/contrib/gcc-git-customization.sh @@ -22,8 +22,8 @@ git config alias.svn-rev '!f() { rev=$1; shift; git log --all --grep="^From-SVN: # Add git commands to convert git commit to monotonically increasing revision number # and vice versa -git config alias.gcc-descr \!"f() { if test \${1:-no} = --full; then c=\${2:-master}; r=\$(git describe --all --abbrev=40 --match 'basepoints/gcc-[0-9]*' \$c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); expr match \${r:-no} '^r[0-9]\\+\$' >/dev/null && r=\${r}-0-g\$(git rev-parse \${2:-master}); else c=\${1:-master}; 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'); fi; if test -n \$r; then o=\$(git config --get gcc-config.upstream); rr=\$(echo \$r | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\\(-g[0-9a-f]\\+\\)\\?\$,\\1,p'); if git rev-parse --verify --quiet \${o:-origin}/releases/gcc-\$rr >/dev/null; then m=releases/gcc-\$rr; else m=master; fi; git merge-base --is-ancestor \$c \${o:-origin}/\$m && \echo \${r}; fi; }; f" -git config alias.gcc-undescr \!"f() { o=\$(git config --get gcc-config.upstream); r=\$(echo \$1 | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\$,\\1,p'); n=\$(echo \$1 | sed -n 's,^r[0-9]\\+-\\([0-9]\\+\\)\$,\\1,p'); test -z \$r && echo Invalid id \$1 && exit 1; h=\$(git rev-parse --verify --quiet \${o:-origin}/releases/gcc-\$r); test -z \$h && h=\$(git rev-parse --verify --quiet \${o:-origin}/master); p=\$(git describe --all --match 'basepoints/gcc-'\$r \$h | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-[0-9]\\+-\\([0-9]\\+\\)-g[0-9a-f]*\$,\\2,p;s,^\\(tags/\\)\\?basepoints/gcc-[0-9]\\+\$,0,p'); git rev-parse --verify \$h~\$(expr \$p - \$n); }; f" +git config alias.gcc-descr \!"f() { if test \${1:-no} = --short; then c=\${2:-master}; 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'); else c=\${1:-master}; r=\$(git describe --all --abbrev=14 --match 'basepoints/gcc-[0-9]*' \$c | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-,r,p'); expr match \${r:-no} '^r[0-9]\\+\$' >/dev/null && r=\${r}-0-g\$(git rev-parse \${2:-master}); fi; if test -n \$r; then o=\$(git config --get gcc-config.upstream); rr=\$(echo \$r | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\\(-g[0-9a-f]\\+\\)\\?\$,\\1,p'); if git rev-parse --verify --quiet \${o:-origin}/releases/gcc-\$rr >/dev/null; then m=releases/gcc-\$rr; else m=master; fi; git merge-base --is-ancestor \$c \${o:-origin}/\$m && \\echo \${r}; fi; }; f" +git config alias.gcc-undescr \!"f() { o=\$(git config --get gcc-config.upstream); r=\$(echo \$1 | sed 's/\\([^-]*-[^-]*\\)-.*/\\1/' | sed -n 's,^r\\([0-9]\\+\\)-[0-9]\\+\$,\\1,p'); n=\$(echo \$1 | sed 's/\\([^-]*-[^-]*\\)-.*/\\1/' | sed -n 's,^r[0-9]\\+-\\([0-9]\\+\\)\$,\\1,p'); test -z \$r && echo Invalid id \$1 && exit 1; h=\$(git rev-parse --verify --quiet \${o:-origin}/releases/gcc-\$r); test -z \$h && h=\$(git rev-parse --verify --quiet \${o:-origin}/master); p=\$(git describe --all --match 'basepoints/gcc-'\$r \$h | sed -n 's,^\\(tags/\\)\\?basepoints/gcc-[0-9]\\+-\\([0-9]\\+\\)-g[0-9a-f]*\$,\\2,p;s,^\\(tags/\\)\\?basepoints/gcc-[0-9]\\+\$,0,p'); git rev-parse --verify \$h~\$(expr \$p - \$n); }; f" git config alias.gcc-verify '!f() { "`git rev-parse --show-toplevel`/contrib/gcc-changelog/git_check_commit.py" $@; } ; f' git config alias.gcc-backport '!f() { "`git rev-parse --show-toplevel`/contrib/git-backport.py" $@; } ; f'