Skip to content

feat: add skip_old_pre_release option to skip stale pre-releases - #221

Open
yaoge123 wants to merge 1 commit into
tuna:masterfrom
yaoge123:feat/skip-old-pre-release
Open

yaoge123 wants to merge 1 commit into
tuna:masterfrom
yaoge123:feat/skip-old-pre-release

Conversation

@yaoge123

Copy link
Copy Markdown
Contributor

Summary

Adds a new skip_old_pre_release option (default false, backward compatible). When enabled together with pre-release syncing, pre-releases older than a stable release are skipped.

GitHub's releases API returns releases sorted by creation time, newest first. Once a stable (non-draft, non-prerelease) release has been accepted for syncing, every later pre-release in the list is older than it. Syncing such pre-releases serves no purpose, since the mirror can no longer provide "a newer pre-release than the stable release".

Behavior

  • Only relevant when pre-releases are being synced (pre_release: true, or release_versions / pre_release_versions configured).
  • Skipped pre-releases do not consume the pre-release quota (versions / pre_release_versions), so the quota can be used by pre-releases newer than the stable release.
  • When release_versions: 0 (or the stable quota leaves no stable release accepted), all pre-releases are still synced: the "seen a stable release" flag is only set when a stable release is actually accepted. Drafts never set the flag.
  • Default false keeps existing behavior unchanged.

Example

{
  "repo": "M2Team/NanaZip",
  "release_versions": 1,
  "pre_release_versions": 1,
  "skip_old_pre_release": true
}

Testing

Added a mock test covering 7 scenarios: baseline without the flag (older pre-release consumes quota), flag enabled (quota goes to the newer stable release), stable release newest (all pre-releases skipped), release_versions: 0 (all pre-releases kept), separate-limits cross-check with/without the flag, and a pre-release-only repository. All 7 pass.

Releases are listed by creation time (newest first), so any pre-release
appearing after a synced stable release is older than it and provides no
newer builds. With skip_old_pre_release enabled (default false), such
pre-releases are skipped without consuming the pre-release quota, so
limits can be spent on newer entries instead.
Copilot AI balanced review requested due to automatic review settings October 16, 2026 02:46

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Separate-limit mode can fetch the entire release history after filtering makes the remaining pre-release quota impossible to fill.

1 open finding
What changed in this PR

Adds optional filtering of older pre-releases to the GitHub release sync process.

Changes:

  • Introduces skip_old_pre_release, disabled by default.
  • Tracks accepted stable releases and skips subsequent pre-releases without consuming their quota.
File Description
github-release.py Adds configuration, stable-release tracking, and pre-release filtering.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread github-release.py
n_prerelease += 1
else:
n_release += 1
seen_stable = True
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants