Repository navigation
feat(list): add structured repo metadata to JSON output #3021
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
Merged
max-sixty
merged 8 commits into
max-sixty:main
from
jeremy0dell:fix-structured-repo-provider-semantics
Jun 18, 2026
Merged
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
8bcb05b
feat(list): add structured repo metadata to JSON output
jeremy0dell fc7da43
Merge branch 'main' into fix-structured-repo-provider-semantics
jeremy0dell 99dd4c4
test: normalize help snapshot git env
jeremy0dell 5a8dca2
Merge branch 'main' into fix-structured-repo-provider-semantics
jeremy0dell a61dfae
Collapse repo provider JSON enum
jeremy0dell c5e4286
refactor(list): collapse JsonRepo into GitRepoInfo
worktrunk-bot c68725a
Merge remote-tracking branch 'origin/main' into fix-structured-repo-p…
worktrunk-bot 316d82c
Merge branch 'main' into fix-structured-repo-provider-semantics
jeremy0dell File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't understand this, vs. the "never includes
remote" phrase below? Can you explain?Ideally we would canonicalize onto
repo, deprecate therepo_urlvariable in favor ofrepo.url.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
remotehere isn't repo data — it's a single string naming the local git remote the metadata was derived from (e.g."origin"). SeeGitRepoInfo: the field isOption<String>, "Set only for the top-levelrepoofwt list; absent for PR/MR-URL-derived metadata such asci.repo."The two phrases describe where that name can exist:
repois built inRepository::repo_info()fromself.primary_remote()→info.remote = Some(remote). It came from a local remote, so it can report which one → "includesremote".ci.repois derived from the PR/MR URL (for fork PRs, the upstream target), not from any local remote, so there's no remote name to attach → "never includesremote".So the asymmetry is exactly that one field. I can make the docs clearer — the column descriptions read like
remoteis a sub-object. Something like "names the local git remote it was derived from (e.g.origin)" on thereporow, dropping the bare "includesremote" / "never includesremote" phrasing, would be less ambiguous.On canonicalizing onto
repoand deprecatingrepo_url/ci.repo_urlin favor ofrepo.url/ci.repo.url: agreed that's the cleaner end state. It's orthogonal to this PR (which keeps them as compat fields), so I'd suggest a follow-up rather than folding it in here — and since these are documented JSON fields, dropping them is a soft break for consumers, so a deprecation-noted transition (keep emitting, document as deprecated, remove later) reads better than a hard cut. Happy to open that follow-up PR if you'd like it.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agree that canonicalizing onto repo would improve the API but yeah, I wouldn't want anything to break
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@max-sixty Just checking, do you want me to close this? I can make a PR canonicalizing onto
repoor just leave the API alone for now and parse everything on my end