Plugin marketplace cache ignores ref when shared across projects with different branches
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Shell
- Sterne
- 11.2k
- Forks
- 1.9k
- Ø Merge
- 14 Std. 16 Min.
- Gemergte PRs (30 T.)
- 6
Beschreibung
Describe the bug
When two projects reference the same git-based marketplace source but pin different ref values (branches) in .github/copilot/settings.json 's extraKnownMarketplaces , Copilot CLI reuses a single on-disk cache checkout keyed only by the source URL/path — not by ref . Opening a project that expects branch1 does not re-checkout the cache to branch1 if it was last left on branch2 by another project.
Affected version
Copilot CLI 1.0.80
Steps to reproduce the behavior
- Create marketplace repo with branch1 and branch2 , differing plugin content.
- Project A's .github/copilot/settings.json sets extraKnownMarketplaces..source.ref = "branch2" . Open Copilot CLI there — cache clones/checks out branch2 .
- Project B (different repo) sets ref = "branch1" for the same marketplace source URL. Open Copilot CLI there.
- Expected: cache checks out branch1 before loading plugins for Project B.
- Actual: cache in %LOCALAPPDATA%\copilot\marketplaces<hash-of-source> remains on branch2 ; Project B silently loads branch2's plugins instead of branch1's.
Expected behavior
When a project's .github/copilot/settings.json specifies a ref (branch/tag/commit) for an extraKnownMarketplaces entry, Copilot CLI should ensure the local cache reflects that exact ref before loading plugins for that session — regardless of what ref was last checked out there by a different project sharing the same source URL.
Additional context
Suggested fix (from copilot lol): Include ref in the cache key/path, or verify+checkout the requested ref on every load regardless of cache state.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Reproduziere den Fall mit zwei Projekten unter Verwendung von .github/copilot/settings.json, wobei die gemeinsam genutzte Git-Quelle auf branch1 bzw. branch2 festgelegt ist, und untersuche anschließend den Checkout unter %LOCALAPPDATA%\copilot\marketplaces<hash-of-source>. Abgeschlossen ist die Aufgabe, wenn jedes Projekt Plugins aus seiner angeforderten Ref lädt, unabhängig davon, welches Projekt den Cache zuvor verwendet hat, mit einer Regressionstestabdeckung für das Szenario mit gemeinsam genutztem Cache.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- git, shell
- Bereich
- cli, tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Aktiv
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 55/100