Skip to content

Conversation

@IanButterworth
Copy link
Collaborator

@IanButterworth IanButterworth commented Dec 12, 2025

% julia --project backporter.jl --audit --dry-run -r JuliaLang/Pkg.jl        
  Activating project at `~/Documents/GitHub/Backporter`
Backport Label Audit Tool
=========================

Discovering backport labels...
Found 4 backport label(s): 1.13, 1.12, 1.11, 1.10

Backport Label Audit
====================
Version: 1.13
Repository: JuliaLang/Pkg.jl
Label: backport 1.13
Branch: release-1.13
Dry run: true

Cloning JuliaLang/Pkg.jl to temporary directory...
Fetching release-1.13...
Parsing git log from origin/release-1.13...
Found 1480 cherry-picked PRs
Fetching closed PRs with label backport 1.13...
Found 19 closed PRs with label backport 1.13

=== PRs already backported (label should be removed) ===
  #4542: handle_repo_add: unshallow repo when adding via commit hash (afb6601 via #4543)
  #4538: Fix 7z extraction when path has symlink/.. (7327631 via #4543)
  #4534: Fix is_stdlib uses when julia_version is used (861187f via #4543)
  #4524: Publicize `Apps` (a988d36 via #4543)
  #4521: CI: Fix duplicate CI jobs on backports PRs (5a2055a via #4543)
  #4517: ensure REPLExt is precompiled before we disallow it (4be6c86 via #4519)
  #4505: avoid some overhead from Tar.jl when unpacking the registry (1ec6996 via #4519)
  #4503: only propagate paths in sources for fixed packages if they actually exist (93cf225 via #4519)
  #4498: Fix formatting of warning admonition (d666697 via #4519)
  #4496: keep using gzip on Windows for the registry (7eb4503 via #4519)
  #4264: Fix historical stdlib fixup if `Pkg` is in the Manifest (cae9ce0 via #4338)

=== PRs still needing backport (label should remain) ===
  #4570: Add test for workspace sources pointing to parent package
  #4564: fixup many type instabilities
  #4559: Avoid false warning about apps in PATH on Windows
  #4558: fix: fixup historical stdlibs in manifest
  #4555: Fix VersionSpec to VersionNumber conversion error when freeing packages
  #4541: Fix manifest validation issue
  #4516: Finish deprecating collect_delay
  #4512: fix: work around string indexing issues in windows drive letter detection

Dry run mode - no changes made
Would remove backport 1.13 from 11 PR(s)

============================================================

Backport Label Audit
====================
Version: 1.12
Repository: JuliaLang/Pkg.jl
Label: backport 1.12
Branch: release-1.12
Dry run: true

Cloning JuliaLang/Pkg.jl to temporary directory...
Fetching release-1.12...
Parsing git log from origin/release-1.12...
Found 1349 cherry-picked PRs
Fetching closed PRs with label backport 1.12...
Found 33 closed PRs with label backport 1.12

=== PRs already backported (label should be removed) ===
  #4559: Avoid false warning about apps in PATH on Windows (f1291a4 via #4563)
  #4558: fix: fixup historical stdlibs in manifest (2d1edf9 via #4563)
  #4555: Fix VersionSpec to VersionNumber conversion error when freeing packages (0fe4cec via #4563)
  #4541: Fix manifest validation issue (4cae51a via #4563)
  #4534: Fix is_stdlib uses when julia_version is used (a2cfbdd via #4563)
  #4524: Publicize `Apps` (06af5ca via #4544)
  #4521: CI: Fix duplicate CI jobs on backports PRs (cf3649a via #4544)
  #4517: ensure REPLExt is precompiled before we disallow it (18d6367 via #4544)
  #4505: avoid some overhead from Tar.jl when unpacking the registry (105cca0 via #4563)
  #4498: Fix formatting of warning admonition (859b129 via #4544)
  #4491: fix building packages on app add (c07bcd0 via #4522)
  #4490: Improve docs for test-specific deps with workspace approach (f5d531c via #4522)
  #4474: move some allocations out of hot loop in the graph simplification in the resolver (`propagate_constraints!`) (3da3974 via #4544)
  #4467: ensure we do not end up in a situation where both tree hash and path is set (ce62cba via #4563)
  #4465: do not create a separate app environment for devved apps (4ff74e8 via #4522)
  #4463: consistently normalize paths to be relative to the manifest (11a0ea1 via #4563)
  #4450: fix another URL scheme parsing in the repl mode (7921d2b via #4522)
  #4443: install / update registries for app add in the same way as for packages (c182174 via #4522)
  #4441: fall back to fetching more refspects in case the restricted set doesnt find the rev (7249bb8 via #4522)
  #4428: update docs to show how workspaces are used for test deps (3acbc2a via #4522)
  #4421: update to newer PrecompileTools approach (2dcc3e5 via #4522)
  #4419: Fix typo in Pkg.jl (00df718 via #4522)
  #4418: Fix completion on empty command (b15f840 via #4563)
  #4414: STDLIBS_BY_VERSION: Check sorted & require same minor (9e74726 via #4522)
  #4373: Fix completion at the end of a complete line (5856b33 via #4544)
  #4331: Add a pkg message if julia_version is being specified (b0ef2b6 via #4393)
  #4264: Fix historical stdlib fixup if `Pkg` is in the Manifest (8a6604b via #4563)
  #4186: Update registries during `dev` (440991c via #4393)

=== PRs still needing backport (label should remain) ===
  #4512: fix: work around string indexing issues in windows drive letter detection
  #4427: make `.path` field consistently be relative manifest and convert to project relative upon writing to a project file
  #4402: Fix deleting in compat mode
  #4393: Clear the registry cache on Pkg module end
  #4392: Adapt delayed delete mechanism

Dry run mode - no changes made
Would remove backport 1.12 from 28 PR(s)

============================================================

Backport Label Audit
====================
Version: 1.11
Repository: JuliaLang/Pkg.jl
Label: backport 1.11
Branch: release-1.11
Dry run: true

Cloning JuliaLang/Pkg.jl to temporary directory...
Fetching release-1.11...
Parsing git log from origin/release-1.11...
Found 1223 cherry-picked PRs
Fetching closed PRs with label backport 1.11...
Found 15 closed PRs with label backport 1.11

=== PRs already backported (label should be removed) ===
  #4198: also collect packages tracking a repo when "traversing" developed packages (5b3ff38)
  #4077: Increase version of `StaticArrays` in `why` tests (820b7f8)

=== PRs still needing backport (label should remain) ===
  #4402: Fix deleting in compat mode
  #4375: Add pdf link to the docs
  #4357: Avoid deprecated RadioMenu method
  #4331: Add a pkg message if julia_version is being specified
  #4316: Fix lack of color in CI and don't warn about loaded packages in test Pkg.precompile. 
  #4260: don't use tree hash from manifest if the path is set from sources
  #4254: prompt for confirmation before removing compat entry
  #4228:  add some missing hash definitions
  #4227: improve package syntax parsing a bit
  #4186: Update registries during `dev`
  #4136: Use copy_test_packages in some more places, and ensure that the copied test package is user writable.
  #4117: avoid writing and reparsing the artifact usage file once per artifact file in the project deps
  #3624: Fix bind_artifact! when platform has compare_strategy

Dry run mode - no changes made
Would remove backport 1.11 from 2 PR(s)

============================================================

Backport Label Audit
====================
Version: 1.10
Repository: JuliaLang/Pkg.jl
Label: backport 1.10
Branch: release-1.10
Dry run: true

Cloning JuliaLang/Pkg.jl to temporary directory...
Fetching release-1.10...
Parsing git log from origin/release-1.10...
Found 1129 cherry-picked PRs
Fetching closed PRs with label backport 1.10...
Found 21 closed PRs with label backport 1.10

=== PRs already backported (label should be removed) ===
  #4202: Lock io within printpkgstyle to avoid print tearing (653993d via #4205)
  #4128: Don't set up LibGit2 callbacks if using cli git (4685857 via #4205)
  #4075: Fix artifact directories not having traversal permissions (bc293f9 via #4205)

=== PRs still needing backport (label should remain) ===
  #4555: Fix VersionSpec to VersionNumber conversion error when freeing packages
  #4541: Fix manifest validation issue
  #4402: Fix deleting in compat mode
  #4375: Add pdf link to the docs
  #4357: Avoid deprecated RadioMenu method
  #4331: Add a pkg message if julia_version is being specified
  #4316: Fix lack of color in CI and don't warn about loaded packages in test Pkg.precompile. 
  #4313: Fix stack overflow in `safe_realpath`
  #4286: fix a header when cloning and use credentials when fetching
  #4270: feat(errors): Improve error message for incorrect package UUID
  #4254: prompt for confirmation before removing compat entry
  #4228:  add some missing hash definitions
  #4227: improve package syntax parsing a bit
  #4186: Update registries during `dev`
  #4177: Update docs for versioned manifest
  #4151: Fixes for julia_version. Expand and consolidate julia_version tests.
  #4136: Use copy_test_packages in some more places, and ensure that the copied test package is user writable.
  #3624: Fix bind_artifact! when platform has compare_strategy

Dry run mode - no changes made
Would remove backport 1.10 from 3 PR(s)

============================================================

@KristofferC
Copy link
Owner

KristofferC commented Dec 17, 2025

Would be nice if this could auto detect repo, backport branch etc like the backporter script. This could also be a command to the backporter script.

@KristofferC
Copy link
Owner

Why does this need to use the GitHub API to fetch commits? We can just look on the branch locally, or?

@KristofferC
Copy link
Owner

I'm not sure I want to add a comment to all the PRs that got backported

@IanButterworth
Copy link
Collaborator Author

My thinking with that was to make it clearer which backport branch a backport actually landed in. Currently there's a lot of crosslink noise when PRs are mentioned but not included in backport PRs.

I can imagine it being too many notifications though.

- Add --audit and --cleanup-pr flags to backporter.jl
- Auto-detect repo from git remote (no longer required)
- Use local git commands instead of GitHub API for fetching commits
- Remove PR comment functionality when removing labels

Co-Authored-By: Claude <noreply@anthropic.com>
@IanButterworth
Copy link
Collaborator Author

Updated

@DilumAluthge
Copy link
Contributor

My thinking with that was to make it clearer which backport branch a backport actually landed in. Currently there's a lot of crosslink noise when PRs are mentioned but not included in backport PRs.

I often find myself confused as to whether a PR has been backported yet (and in which backport PR), so I agree that it'd be nice to have a solution to this.

One idea I had was to have two backport labels for each release. E.g. for 1.12:

  • backport 1.12 pending
  • backport 1.12 completed

So then when a "Backports for Julia 1.12.x" PR is merged, the backport script would remove the backport 1.12 pending label from each backported PR, and would replace it with the backport 1.12 completed label. That would solve the problem of "has this PR been backported to Julia 1.12". But it wouldn't solve the problem of "which 1.12.x release has this backport". So maybe posting a comment is better. I do get that it's a lot of notifications, but I feel like it would make things more clear than they are now.

@IanButterworth
Copy link
Collaborator Author

@KristofferC gave me the commit bit and is happy to give this a try.

I think this is a step in the right direction to help track which backport PRs landed in, so I think we should give this a go and then consider more if still needed after a few trials in the wild.

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.

3 participants