Hi Jeremy,

thank you for taking the time to describe in more detail your workflow. Russ said in a reply to your email «we should not be trying to talk upstreams out of this sort of thoughtful approach». He is right. Nevertheless, please allow me to try to talk you out of your approach one last time. :)

On 13/02/26 19:47, Jeremy Stanley wrote:
On 2026-02-13 00:25:58 +0100 (+0100), Gioele Barabucci wrote:
[...]
Is it really different from what you are already doing when you create the tarball? Currently someone has to:

1. pick a commit,
2. tag it,
3. run a script to create the extra files,
4. put everything in a tarball,
5. sign it,
6. publish it.

In the Git-only version steps 4, 5 and 6 would become:

   checkout -b v1.2.3-relase
   git add .
   git commit -m 'Release version 1.2.3'" --gpg-sign
   git push

or:

   checkout -b v1.2.3-relase
   git add .
   git commit -m 'Release version 1.2.3'"
   git tag --sign v1.2.3-full
   git push; git push --tags

The person doing the release would be the same, all constraints would be the same. But now the Git repo would have all the info that is in the tarball. (And the tarball could be generated via a simple `git archive v1.2.3-full`, with the extra assurance that it matches what is in Git.)

This is getting into the weeds of our workflow automation, but currently the system works like this:

1. A human chooses a specific existing repository state on a particular branch and submits a release request associating it with a particular version number.

2. Automation reacts to the request and generates a local tag, builds test versions of release artifacts and exercises them, then reports back on the request.

3. Human release managers review the request and test results, then approve the request if it's suitable.

4. Automation performs the testing from step 2 again (because external factors may have changed in the meantime), and then if successful pushes a signed tag into the official repository for the project as well as publishing other release artifacts (signed source tarball, language ecosystem packages, container images, et cetera).

[…] I think your proposal basically implies additional sub-steps between 3 and 4, namely:

I don't see why these extra steps would be needed.

In your Step 2 simple change "Automation […] builds test versions of release artifacts and exercises them" to "Automation […] commits test versions of the release artifacts, exercises them creates a release artefact by `git-archive`-ing that commit", and in Step 4 have the automation push two tags (v1.2.3 and v1.2.3-release) instead of just one.

The rest can remain exactly the same. No additional human involvement is necessary.

Also, the release tags create implicit branches, you don't need to create explicit branches if your automation is good enough at manipulating Git objects. And you don't need to merge back anything. These are leaf commits that just document the fact that a release has been cut with certain generated files.

Another point that I haven't raised in my previous email: can developers build your project starting from any commit?

If that is the case, why should Debian care about the generated tarball at all, whose extra content does not have an impact to the functionality of the built binaries?

Regards,

--
Gioele Barabucci

Reply via email to