One of the long-standing issues is that there are multiple ways Debian packaging can be represented in a git tree, and none of them are optimal.[..]
A possible implementation would be a type of Git "user extension" object[..]
that contains
- an extension name
- an object type (interpreted by the extension)
- type-tagged references to other objects
- other type-tagged data
Any feelings/objections/missed requirements?
My *feeling* is we should do the opposite - that is, represent less
Debian stuff in git, and especially do it in less Debian-specific
ways. IOW, no git extensions, no setup with multiple branches that
contain more or less unrelated things, etc.
Any feelings/objections/missed requirements?
In the current DEP14/DEP18 discussions a lot of discussion was had about how we
should represent Debian things in git; your mail also goes into this direction.
My *feeling* is we should do the opposite - that is, represent less Debian stuff in git,[..]
and especially do it in less Debian-specific ways. IOW, no git extensions, no setup
with multiple branches that contain more or less unrelated things, etc.
On the other side (perhaps), git is increasingly being used in the Ops setting for
DevOps and DevSecOps. Production configurations for high-value applications are
moving to storing those configurations into git for tracing and audit. Git is an
enabler for good production operations practices.
* Simon Richter <sjr@debian.org> [240820 09:11]:
One of the long-standing issues is that there are multiple ways Debian[..]
packaging can be represented in a git tree, and none of them are optimal. >[..]
A possible implementation would be a type of Git "user extension"
object that contains
- an extension name
- an object type (interpreted by the extension)
- type-tagged references to other objects
- other type-tagged data
Any feelings/objections/missed requirements?
In the current DEP14/DEP18 discussions a lot of discussion was had about how we
should represent Debian things in git; your mail also goes into this direction.
My *feeling* is we should do the opposite - that is, represent less Debian stuff in git,
and especially do it in less Debian-specific ways. IOW, no git extensions, no setup
with multiple branches that contain more or less unrelated things, etc.
I think we should move more towards a setup that is easily understood by people
not closely following our Debian-specific things. We should avoid surprising things,
again that would include the multiple branches and any git extensions.
Before pushing for new ways of representing Debian stuff in git, I think it would be a
good idea to learn from all the other distros and distro-like systems successfully
using git [1]. Debian is not the only distro that wants to use git to capture changes
and encourage contributions to its packages.
On the other side (perhaps), git is increasingly being used in the
Ops setting for DevOps and DevSecOps. Production configurations
for high-value applications are moving to storing those
configurations into git for tracing and audit. Git is an enabler
for good production operations practices. My $0.02 (and my
customers')
Hi Simon,
* Simon Richter <sjr@debian.org> [240820 09:11]:
One of the long-standing issues is that there are multiple ways Debian packaging can be represented in a git tree, and none of them are optimal.
Any feelings/objections/missed requirements?
In the current DEP14/DEP18 discussions a lot of discussion was had
about how we should represent Debian things in git; your mail also
goes into this direction.
Right now, git is used mainly as a network file system, and only tagged releases are expected to be consistent enough to compile, because often going from one consistent state to another as an atomic operation would require multiple changes to be applied in the same commit.
The imported archive is represented either directly as a tree (which may
be imported from the upstream project if no files are undistributable
for Debian), or via a mechanism that can reproduce a compressed archive
that is bitwise identical to the upstream release, from a tree and some additional patch data.
The patch stack is stored as a set of patches inside a directory, and rebased using quilt.
An alternate representation stores the patch stack as a branch that is rebased using git, and then exported to single files.
The Debian changelog is stored as a file inside Git, but some automation exists to update this from Git commit messages.
Debian changelog entries refer to bugs in the Debian Bug Tracking
system. There is a desire to also incorporate forges (currently, GitLab)
and refer to the forges' issue tracker from commit messages (where the
issue tracker is used for team collaboration, while the Debian BTS is
used for user-visible bugs).
All of this is very silly, because we're essentially storing metadata as data because we cannot express in Git what we're actually doing, and the conflicting priorities people have have led to conflicting solutions.
I'd like to xkcd 927 this now, and find a common mapping.
From a requirements perspective, I'd like to be able to
- express patches as commits:
- allow cherry-picking upstream commits as Debian patches
- allow cherry-picking Debian patches for upstream submission
- generate the Debian changelog from changes committed to Git
- express filter steps for generating the upstream archive(s) from a tree‑ish and some metadata
- store upstream signatures inside Git
- keep a history of patches, including patches applied to previously released packages
Changes to packaging would still be represented as commit objects
containing a tree, but that tree would contain a special entry for the "debian" subdirectory that points to the last packaging change.
This is very high-level so far, because I'd like to get some feedback
first on whether it makes sense to pursue this further.This would use
up the last unused three-bit object type in Git, so it will have to be
very generic on this side to not block future development -- and it
would require a lot of design effort on the Debian side as well to
hammer out the details.
I personally think it’s crazy / not a good use of my time to try andOh well. FWIW I think it's crazy and not a good use of my time to NOT
mix both upstream and packaging history in the same repo and try to
make git dance around that when handling new upstream releases. The
extents of the ongoing d-devel discussions on the topic tend to
reinforce that feeling.
(For some value of $fun, try cloning the mesa orBut --depth 1 should work around this.
Firefox repos from a sloppy Internet connection for a packaging
analysis or an occasional contribution.)
From a requirements perspective, I'd like to be able to
- express patches as commits:
- allow cherry-picking upstream commits as Debian patches
- allow cherry-picking Debian patches for upstream submission
- express filter steps for generating the upstream archive(s) from a tree‑ish
and some metadata
- store upstream signatures inside Git
- keep a history of patches, including patches applied to previously released
packages
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 546 |
Nodes: | 16 (2 / 14) |
Uptime: | 00:24:52 |
Calls: | 10,385 |
Calls today: | 2 |
Files: | 14,057 |
Messages: | 6,416,567 |