feat!: rewrite repos-manager in Rust (v1.0.0) #1

Manually merged
dxsk merged 0 commits from rust-rewrite into main 2026-10-08 23:40:18 +02:00
Owner

Rust rewrite with multi-OS builds, install methods in install/, CI and releases on Forgejo + GitHub, forge as primary with a main-only GitHub mirror.

See CHANGELOG.md v1.0.0 for details.

Rust rewrite with multi-OS builds, install methods in install/, CI and releases on Forgejo + GitHub, forge as primary with a main-only GitHub mirror. See CHANGELOG.md v1.0.0 for details.
The Bash implementation could not run natively on Windows and leaned on
jq, yq and curl. A single static binary keeps the same commands, config
and provider CLIs while working on Linux, macOS and Windows.

Includes the develop fixes from #5: GitHub collaborator repos, pull from
origin HEAD and a per-host sync lock. Shell sourceme files are replaced
by `repos-manager completions <shell>`, and Nix packaging is dropped.
All install methods now live in install/: a curl|sh script, a PowerShell
script, a from-source Makefile and an NSIS installer. Scripts verify
release archives against SHA256SUMS.
The forge is now the primary repo: it runs CI, bumps the version from
conventional commits, publishes Linux and Windows builds and mirrors main
and tags to GitHub. GitHub builds the full matrix including macOS, since
the self-updater reads GitHub releases.
docs: document the Rust binary, install methods and forge move
All checks were successful
CI / Rust (pull_request) Successful in 36s
9e4de8ef43
dxsk self-assigned this 2026-10-08 12:57:33 +02:00
dxsk force-pushed rust-rewrite from 9e4de8ef43
All checks were successful
CI / Rust (pull_request) Successful in 36s
to b4263ac7e8
All checks were successful
CI / check (pull_request) Successful in 1m26s
2026-10-08 13:05:58 +02:00
Compare
test: raise coverage with offline API and end-to-end tests
All checks were successful
CI / check (pull_request) Successful in 33s
cbfecef5e5
A small std-only HTTP server serves canned provider and release API
responses, so Forgejo, Bitbucket, update and full sync runs are tested
without network. Sync, status and update logic is split from I/O to be
assertable.
docs: send contributions and security reports to GitHub
All checks were successful
CI / check (pull_request) Successful in 32s
398f81ee5b
External contributors have no access to the upstream forge. GitHub
private vulnerability reporting is now enabled for security reports.
ci: mirror GitHub issues and pull requests to Forgejo issues
All checks were successful
CI / check (pull_request) Successful in 33s
330bd1bc2c
The maintainer works on the forge and should get notified there. Only
the requests are mirrored, never code: PRs are still fetched from
GitHub by hand.
docs: flag 1.0 as breaking and add an upgrade guide from 0.x
All checks were successful
CI / check (pull_request) Successful in 34s
b696dd81aa
The 0.x self-updater cannot install the Rust binary, so users need to
know to reinstall. Security reports from the GitHub issue form now go
to private advisories.
feat: keep a 0.x upgrade stub at the repo root
All checks were successful
CI / check (pull_request) Successful in 34s
47f5d0e6a7
0.x installs read VERSION from repos-manager.sh on main to show their
update banner, and git-clone installs run it after pulling. Without it
they would never hear about 1.0.
AUR, Homebrew, Scoop, winget and cargo installs must not be replaced in
place. The banner and `update` now point to the right command instead.
The crate also only ships the sources, tests and docs.
build: add AUR packaging rendered from a release
All checks were successful
CI / check (pull_request) Successful in 33s
3fed2d1556
docs: list crates.io and AUR packages in the readme and site
All checks were successful
CI / check (pull_request) Successful in 31s
105718f818
dxsk changed title from WIP: feat!: rewrite repos-manager in Rust (v1.0.0) to feat!: rewrite repos-manager in Rust (v1.0.0) 2026-10-08 22:36:12 +02:00
fix(packaging): commit to the AUR with the project's git identity
All checks were successful
CI / check (pull_request) Successful in 1m23s
5edf495cbd
The global git config has no identity when git-identity sets it per
repository, so publishing failed at the commit step.
build: sign release tags
All checks were successful
CI / check (pull_request) Successful in 32s
7c52262ebd
dxsk manually merged commit 7c52262ebd into main 2026-10-08 23:40:18 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
dxsk/repos-manager!1
No description provided.