Re: Next steps from GTI TAC meeting on 2023-03-08 - Evaluate cost of glibc migration.
Joseph Myers <[email protected]> Wed, 24 May 2023 18:58:53 +0000
| Newsgroups | org.linuxfoundation.lists.cti-tac |
|---|---|
| Message-ID | <[email protected]> |
On Wed, 24 May 2023, Konstantin Ryabitsev wrote:
> This workflow has one important problem -- you must ultimately trust the
> integrity of your infrastructure. It would be very easy for a malicious actor
Hence the importance of limiting access to infrastructure - and limiting
what pieces of infrastructure have access to what others (rather than the
present arrangements where many different services run on the single
system with the master repository and with permissions allowing to write
to it).
> 1. they can override any server-side validations
> 2. they can disable email notifications
A commit entering the repository without appearing on the mailing list is
itself suspect. (It can happen, but it's very rare; maybe about once a
year for GCC. The only cause I know of is a bug in the commit email
generation that makes it fall over when the diffs are not valid UTF-8.)
In the GCC case the commit emails include sequential numbers since the
last release branched off; the motivation of those numbers isn't to make
missing emails easy to spot (rather, they help with Jakub's system for
speeding up bisection by having a large number of prebuilt compilers from
different past revisions), but they do make missing emails easy to spot as
a side effect.
> This situation could be partially mitigated if commits were cryptographically
> signed, but they don't appear to be.
It's quite possible commit signatures would be a useful thing to introduce
in future.
> > Anyone with commit access can create their own branches in their
> > refs/users/ namespace if they wish, and use them without needing review
> > for commits going there. Shared development branches under
> > refs/heads/devel/ have whatever rules are established by the people
> > setting up those branches.
>
> From the git backend perspective, this is not optimal, because the resulting
> packs contain extra objects that aren't interesting to most cloners. For
> example, if I only leave refs/heads and refs/tags in the gcc repository, I get
> rid of over 1.1 million extra objects (from 3.9 million to 2.8 million) and
> the pack shrinks from 1.8GB to 1.1GB.
See what I said in the GCC service analysis about use of delta islands to
make this efficient. The configuration there is:
[pack]
island = refs/heads/
island = refs/tags/
island = refs/(vendors/[^/]+)/
island = refs/(users/[^/]+)/
island = refs/(git-(svn-)?old)/
island = refs/(dead)/
island = refs/(deleted)/
island = refs/(meta)/
(I don't think the other projects do anything this complicated with refs
that aren't fetched by default, only GCC.)
--
Joseph S. Myers
[email protected]