-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
action to grab old sync dbs from installers #3
base: main
Are you sure you want to change the base?
Conversation
releases prior to 2020-07-20 don't set the content-type of the tar.xz files to application/x-xz, so check the url ends with .tar.xz too.
add an optional input to allow skipping already-uploaded versions
I happened to look at git-for-windows repositories today and notice one getting lots of activity: https://github.com/git-for-windows/pacman-repo. It seems @dscho is doing something similar to what I was thinking about doing here with this repository, though with considerably fewer releases 😉 |
@jeremyd2019 yes, I am experimenting with ideas how to disentangle Git for Windows from my personal Azure Account. My latest idea was to have branches that have only the most recent package versions (plus signatures) and the corresponding database (plus .files and .sig files): x86_64, aarch64 and i686. Sadly, the As to having a proliferation of GitHub releases in the same repository: My original idea was to upload the new package versions to GitHub Releases, including the updated package database, and then use a custom |
Not quite the same as what I was proposing here.
The
For https://github.com/jeremyd2019/msys2-build32, I use a single release for all files, and use # work around github issue with ~ in file name (turns into .)
for a in *~*; do
mv "$a" "`tr '~' '.' <<<"$a"`"
done before repo-add. |
Oh d'oh! So the GitHub Release assets do have that
The problem with that is that it is absolutely not atomic. If it detects that the upload would fail because of an existing asset with the same name, it deletes that asset before uploading, leaving an undetermined time window (think about the possibility of network glitches while uploading) during which the asset is simply missing. If that asset is the package database, or its signature, that would be bad. |
But that breaks the epoch upgrade logic, no? Like, |
No, that only changes the filename, the version inside the package's metadata is still the same, which is what goes into the database as the version and is what is reasoned about.
|
Yeah. My build32 stuff is already not atomic (I frequently split big builds into multiple runs, so there are definitely times where there are broken things in the db), and I don't figure I have enough users that it's really a problem. Git for Windows, on the other hand, has. |
I hadn't thought about this, but that is probably a show-stopper for my idea to archive some old 'snapshots' in github releases (in this repo). pacman wouldn't be able to find any packages with epochs, and altering the db to change the filename entries would break the signatures. |
delay between upload batches
exclude already present assets
it seems release create creates another draft even if one exists with the same name, so only create if release view fails (presumably because the release doesn't exist)
add rate limit sleep
punt on ~s for now
I did a test to mirror clang32 as of 20231025 (the largest clang32.db in the archived dbs I already extracted from installer releases). The silent renaming of
|
add the renaming workaround for ~ to . in filenames. This limitation still exists.
use bash instead of calling out to tr to replace ~s with .s
break up long bash -c string
publish the release at the end
something like this... #1 (comment) Unfortunately, installers don't have .files dbs. Perhaps those are lost to the mists of time...
See https://github.com/jeremyd2019/msys2-archive/releases for the releases this generates