mirror-sync:
- Add a repo-sync sync method for rpm/deb/arch/apk repositories, with
installer, prune setting, an optional type filter, and trace fields passed
through to it.
- Count what each sync changed and publish SYNC_FILES_* / SYNC_CHANGED to
the post successful sync hook, so a hook can stay idle on a no-op run.
- Make trace saving configurable with save_trace (global and per module)
and publish traces from every method, not just rsync. Exclude the local
trace from deletes, and stop hierarchy entries stacking up per run.
- Add parse_bool so boolean settings reject values that would otherwise be
read as their opposite; keep an explicit bare=false from being
auto-detected away, and require hide_remote on the clone path too.
- MIRROR_SYNC_CONF names an alternate configuration file.
- Fix docroot joining when repo has a trailing slash, unparsable
last-modified headers skipping every sync, s3cmd --host taking a full
URL, and the average rate line for methods with no byte count.
- Exit non-zero when help is printed because of a mistake.
mirror-file-generator:
- Match du summary paths exactly instead of by substring, so sibling repos
sharing a prefix no longer return several sizes.
- Fall back to the default icon when no image is found, and stop the
fallback recursing into itself.
- Validate sections against SECTIONS, count repos written to decide whether
to publish the index, and create the log directory if missing.
- MIRROR_SYNC_CONF support, and exit non-zero on an unknown mirror.
Docs: rewrite README around quick start and sync methods, and move the
file generator reference to docs/mirror-file-generator.md.
Runs a configurable hook at the very end of every sync method, after all
cleanup has finished and the sync is confirmed successful. Unlike the
rsync/qfm post_hook, it is available for all sync methods and runs after
trace files, log cleanup, and mirror reporting.
Bare mirrors served over dumb HTTP need info/refs and objects/info/packs
kept current, so run git update-server-info after every successful bare
sync and clone. The post-update hook cannot be used since it only fires
on push, not on the fetch a mirror performs.
Add a hide_remote option (requires bare + source) that keeps the upstream
URL out of the served files: it removes the stored remote from config,
deletes FETCH_HEAD after each fetch, and fetches directly from source with
a +refs/*:refs/* mirror refspec on every run.
Add a SIGINT/SIGTERM trap that cleans up after an interrupted sync
instead of leaving stale state behind. On a terminal Ctrl-C the signal
reaches the running rsync/aws/git/etc. process directly (it is delivered
to the whole process group), so it stops on its own; the handler then
removes the Archive-Update-in-Progress markers, temporary stage logs and
the module lock file, and exits 130 without counting the interruption as
a sync failure (so it does not inflate the error count or send error
mail).
The rsync and quick-fedora-mirror paths register their in-progress
markers and temp logs for cleanup as they create them.
Bump version to 20260721.
Add a general a:link, a:visited dark mode rule so links anywhere in the
page (e.g. the description block) use the correct color instead of the
browser's default purple.
Add a:visited alongside a:link so visited links inherit the correct color
in both light and dark mode, instead of falling back to the browser's
default dark purple.
Introduces logo_dark and repo_icon_dark config options that serve alternate
images to dark-OS browsers via HTML <picture> elements, and adds a CSS
prefers-color-scheme dark block to the default header template.
- mirror-sync.sh: fix upstream_check/time_file_check to handle missing
timestamp file and empty Last-Modified header; fix rebuild_dusum_totals
variable shadowing; propagate return codes from install helpers; refactor
git_sync out of subshell; scope LOGFILE_STAGE2 to stage-2 block; clean up
mirror_update_file and QFM in-progress files on failure; fix total_time
initialization and wget_sync exit propagation
- mirror-file-generator.sh: add icons_local_repo/icons_repo_url/icons_repo_refresh
for offline icon serving; move PIDFILE to /tmp; enhance image_copy to
refresh stale cached files; fix temp index file cleanup on empty output;
safer ${var:?} → [[ -n $var ]] guards throughout
- README.md: fix typos, heading levels, variable names, and document new
icon repo config options
- Bump VERSION to 20260602 in both scripts
Move PIDFILE to /var/run, fix curl to fail fast on HTTP errors and clean partial
files before fallback, break after read_config in module loop, read per-tier
timestamp/dusum sidecars for promoted CUSTOM_MODULES, and fall back to
.last-synced mtime when no other timestamp source is configured.