On Sun, 30 Jun 2024 at 20:47, Scott Kitterman <deb...@kitterman.com> wrote:
>
> On Sunday, June 30, 2024 1:45:15 PM EDT Aigars Mahinovs wrote:
> > On Sun, 30 Jun 2024 at 19:28, Russ Allbery <r...@debian.org> wrote:
> > > Aigars Mahinovs <aigar...@gmail.com> writes:
> > > > Correct me if I'm wrong, but I believe the intention is to have two
> > > > technically redundant data points saved into the archive:
> > > >
> > > > 1) checksums of the contents of the shallow copy git tree in the
> > > > maintainer work folder (signed by the maintainer)
> > > > 2) contents of the shallow copy git tree in the t2u server work folder
> > > > (signed by t2u)
> > >
> > > Oh!  Did I misunderstand Joerg's second point entirely?  By "the tag that
> > > t2u wants to upload," I assumed that meant the tag the uploader signed or,
> > > in other words, the state of the tree *before* t2u started doing its work
> > > that has the uploader signature attached.
> >
> > I do not see that in either what me or Joerg wrote. And I also don't
> > see much sense in that.
> >
> > In contrast, having a tarball of the git state *before* t2u starts its
> > work would provide a tarball that *can* be verified against the
> > checksums from the first file. That will give you a clear data point -
> > t2u started its work with the exactly the same workspace as the
> > maintainer signed. And will provide a frozen copy of that starting
> > workspace in the archive independent of the (more complex) dgit
> > service.
>
> It's one at the point the maintainer signed the tag.

Yes, but I would like to point out the difference. It's where and when
this tarball is created.

The Debian developer/maintainer creates a signed git tag that contains
(in its message, presumably, to avoid adding new communication lines)
the file listing of the git checkout at the point of signing
(including file names, modes and short SHA checksum hashes). This
extra content is added at the end of the tag message, after the other
metadata that t2u proposal/code already defines. This tag is pushed to
a git server that t2u is monitoring. No files or tarballs are created
at this point yet. No files or tarballs leave travel out of the
developers computer. Only the signed tag with a (now quite long)
message.

t2u starts its work by checking out the git tag and saving two files:
1) the tag message with the corresponding Devian developer/maintainer
signature, so it can be checked outside of git (can this be done
easily?)
2) tarball of the git clone before anything is done to it - filesystem
tree in this tarball will be (presumably) the same as what was in the
workspace of the maintainer when they signed the tag

Both t2u and dak may check this equivalence at any time in the
process. The contents of the listing in the tag *should* match the
file tree content of the checkout that t2u gets from git. If that does
not match, then something fishy is going on and the upload should be
aborted.

After that t2u does all its processing, pushes the unified git tree to
dgit, constructs the source packages, signs the source package and the
new two files and sends it all to dak.

IMHO that all makes sense and does not block anything while providing
useful features, like a frozen git snapshot in the archive. Please
correct if I got anything wrong. This is getting into lower level git
and t2u details that I am barely competent in :D

-- 
Best regards,
    Aigars Mahinovs        mailto:aigar...@debian.org
  #--------------------------------------------------------------#
 | .''`.    Debian GNU/Linux (http://www.debian.org)            |
 | : :' :   Latvian Open Source Assoc. (http://www.laka.lv)     |
 | `. `'    Linux Administration and Free Software Consulting   |
 |   `-                                 (http://www.aiteki.com) |
 #--------------------------------------------------------------#

Reply via email to