Proposal
jr component rename OLD NEW [--project KEY | --all-projects] [--dry-run]
- Case-insensitive match on OLD; renames every matching component (per project or instance-wide) to the single canonical NEW casing.
--dry-run prints the per-project rename set before touching anything.
- Renames keep component IDs (verified:
PUT /rest/api/3/component/{id} with a new name), so ID-based references survive; name-based references are the subject of the companion impact-analysis issue.
Motivation
Cross-project JQL addresses components by name string, so CloudSmith/Cloudsmith, Github/GitHub, N8N/n8n (real drift between our two projects) are operationally different components in every multi-project query. Convergence today is N hand-written PUT calls plus an eyeball diff of two project component lists. Normalizing rename makes name alignment — the thing cross-project component search depends on — a one-liner.
Proposal
--dry-runprints the per-project rename set before touching anything.PUT /rest/api/3/component/{id}with a new name), so ID-based references survive; name-based references are the subject of the companion impact-analysis issue.Motivation
Cross-project JQL addresses components by name string, so
CloudSmith/Cloudsmith,Github/GitHub,N8N/n8n(real drift between our two projects) are operationally different components in every multi-project query. Convergence today is N hand-writtenPUTcalls plus an eyeball diff of two project component lists. Normalizing rename makes name alignment — the thing cross-project component search depends on — a one-liner.