Plugin marketplace cache ignores ref when shared across projects with different branches
Personne n'a encore pris cette issue.
- Langage dominant
- Shell
- Étoiles
- 11.2k
- Forks
- 1.9k
- Merge moyen
- 14 h 16 min
- PR mergées (30 j)
- 6
Description
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.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Reproduire le cas de deux projets en utilisant .github/copilot/settings.json, avec la source git partagée épinglée sur branch1 et branch2, puis inspecter le checkout sous %LOCALAPPDATA%\copilot\marketplaces<hash-of-source>. La tâche est terminée lorsque chaque projet charge les plugins depuis la ref demandée, quel que soit le projet ayant utilisé le cache auparavant, avec une couverture de régression pour le scénario de cache partagé.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- git, shell
- Domaine
- cli, tooling
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- Active
- Clarté
- Plutôt claire
- Accessibilité débutants
- 55/100