GIT: Monotonically increasing trunk and release branch ids

Jakub Jelinek jakub@redhat.com
Fri Jan 10 16:39:00 GMT 2020


Hi!

As I said earlier, one thing I find useful in svn compared to git are
the monotonically increasing revision numbers that we at Red Hat e.g. use
in our gcc bisect seed but I find it useful even in bugzilla everyday use.

With the help of various folks on IRC, I have something that seems to work.

We would need to add some tags (I wouldn't bother with pre-GCC 5 era,
because that doesn't have single number version numbers in the branch
names), like:
for r in 10 9 8 7 6; do
  git tag branchpoints/gcc-$r `git rev-list $(git merge-base origin/master origin/releases/gcc-$(expr $r - 1))..origin/master | tail -1`
done
git tag branchpoints/gcc-5 `git rev-list $(git merge-base origin/master origin/releases/gcc-4.9)..origin/master | tail -1`
and aliases:
git config --local alias.descr \!"f() { git describe --all --match 'branchpoints/gcc-[0-9]*' \${1-master} | sed -n 's,^tags/branchpoints/gcc-\\([0-9]\\+\\)-\\([0-9]\\+\\)-g[0-9a-f]*\$,r\\1-\\2,p;s,^tags/branchpoints/gcc-\\([0-9]\\+\\)\$,r\\1-0,p'; }; f"
git config --local alias.undescr \!"f() { 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 origin/releases/gcc-\$r); if test -z \$h; then h=\$(git rev-parse --verify --quiet origin/master); fi; p=\$(git describe --all --match 'branchpoints/gcc-'\$r \$h | sed -n 's,^tags/branchpoints/gcc-[0-9]\\+-\\([0-9]\\+\\)-g[0-9a-f]*\$,\\1,p;s,^tags/branchpoints/gcc-[0-9]\\+\$,0,p'); git rev-parse --verify \$h~\$(expr \$p - \$n); }; f"

Then e.g.
$ git descr origin/master
r10-5824
$ git undescr r10-5824
42950b74c9b103676f99dc9f1a27859e3f7be436
$ git rev-parse origin/master
42950b74c9b103676f99dc9f1a27859e3f7be436
$ git descr branchpoints/gcc-10
r10-0
$ git undescr r10-0
fb7c6bf5aba75edc0cd439e0f07af3757bbda973
$ git descr branchpoints/gcc-10~
r9-7160
$ git undescr r9-7160
a5bc16f3199c9aa43aec5af2c2839a1cd4bfce1e
$ git rev-parse branchpoints/gcc-10
fb7c6bf5aba75edc0cd439e0f07af3757bbda973
$ git rev-parse branchpoints/gcc-10~
a5bc16f3199c9aa43aec5af2c2839a1cd4bfce1e
$ git descr2 origin/releases/gcc-9
r9-8116
$ git undescr r9-8116
3de43a2189f1e74b73b024109b922d7279dc7658

I'm sorry for my limited git-fu, could those branchpoints
tags be something that is fetched by default (given they would be added only
once a year for each trunk commit after the branching, usually the
BASE-VER bumping to N+1.0.0)?

As it is short, could it be something we'd put as first thing in the gcc-cvs
mail subjects (of course, only for trunk and release branch commits; like
the current svn mails start with rNNNNNN - ), and somewhere before or after the hash
in the body which also makes it into bugzilla?

Another thing, we right now have the useful https://gcc.gnu.org/rNNNNNN redirects.
For those (i.e. SVN revisions), do we want them to point to the read-only SVN repo
svnweb, or remap those to the gitweb?
Can we get similarly https://gcc.gnu.org/rNN-NNNN (for 1-2 decimal digits before - and 1-6
decimal digits after it) pointing to the gitweb using the git undescr and let
bugzilla turn those rNN-NNNN strings in the comments into URLs?

Yet another thing are git hashes.  For those, I'd be afraid that turning [0-9a-f]{7,}
into URLs might trigger too often, do we want to use some prefix, like g12345ab to
be https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=12345ab ?  If we'd add an prefix,
then we should also adjust the gcc-cvs mail content to use those prefixes in there.

Thoughts on this?

	Jakub



More information about the Gcc mailing list