There was some discussion about our OBS and how in contrast Gentoo, VoidLinux or Fedora used git to track packages.
So I made an experimental openSUSE:Factory git mirror to see how well it goes and how using it feels.
The repo currently needs around 1GB but will slowly grow over time. I did not want to spend effort to import all history.
Binary files are replaced by cryptographically secure symlinks into IPFS
and I am currently providing files up to 9MB there.
If you can not run ipfs, you can still get these files through any of the public gateways like this:
curl https://ipfs.io$(readlink packages/a/aubio/aubio-0.4.9.tar.bz2) > OUTPUT
So some benefits are already obvious.
It is now much easier to find and download our patches.
Downloading and seaching all of openSUSE is now much faster.
And it works even on Thursdays (when our maintenance window often causes OBS downtimes).
It is meant to be a read-only mirror, so there is no point in opening pull-requests on github.
I hope, you enjoy it and have a lot of fun…
Both comments and pings are currently closed.
Very interesting but only based on a quick and superficial glance at your repository, it’s hard to grasp exactly what I’m looking at… I see plenty of metadata but no packages (which might be the point, but 1Gig’s worth?!). Maybe your reference to use of symlinks to binaries is what you meant by the missing packages?
For those of us who were not party to the discussion which spurred your experiment, a short summary might have been nice, and possibly include the reason for why searching the git mirror is so much faster.
Yhc, it looks like a cool project.
It is about source packages. Some people think of those as .src.rpm files, but in OBS they are tracked as their components, e.g.:
https://build.opensuse.org/package/show/openSUSE:Factory/aubio
and that is now mapped to
https://github.com/bmwiedemann/openSUSE/tree/master/packages/a/aubio
‘binaries’ was a bit misleading in what I wrote – the source tarball got replaced by a symlink.
Does not make much sense to track those in git because diff and deltas do not work on them.