github / github/copilot-cli

Adding agentic marketplace fails when marketplace repo has files with long paths

オープン
#4,690 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

area:platform-windows area:plugins
主要言語
Shell
スター
11.2k
フォーク
1.9k
平均マージ
14時間 16分
マージ済み PR(30日)
6

説明

Describe the bug

So, i have seen a couple of times where someone tries to add an agentic marketplace via "/plugin marketplace add" and fails with obscure error, because the marketplace repo happens to have a file path long enough where, together with the location CLI chooses to clone the repo locally, exceeds the default 260 char max limit in windows.

Example error from CLI when this happens (a couple of specific paths obscured for privacy):

`/plugin marketplace add https://dev.azure.com/microsoft/OS.Developer/_git/NAME_OF_REPO_PROJECT_HERE

Failed to add marketplace: Request plugins.marketplaces.add failed with message: Failed to fetch git marketplace from the provided URL. Please verify that the URL and reference are correct. Details: Command failed: git clone --depth 1 --progress https://dev.azure.com/microsoft/OS.ZZZZZZZZZZZ/_git/NAME_OF_REPO_PROJECT_HERE C:\Users\USER_NAME_HERE\AppData\Local\copilot\marketplaces\https---dev-azure-com-XXXXXXXX-YY-ZZZZZZZZZZ--git-NAME_OF_REPO_PROJECT_HERE

Cloning into 'C:\Users\USER_NAME_HERE\AppData\Local\copilot\marketplaces\https---dev-azure-com-XXXXXXX-YY-ZZZZZZZZZZZ--git-NAME_OF_REPO_PROJECT_HERE'...

remote: Azure Repos

remote: remote: Found 5359 objects to send. (148 ms)

(truncated)

Updating files: 100% (3956/3956), done.

fatal: unable to checkout working tree

warning: Clone succeeded, but checkout failed.

You can inspect what was checked out with 'git status'

and retry with 'git restore --source=HEAD :/'
`

The above error is generally pretty obscure and end user has no idea why adding the marketplace fails.

  1. Can we detect this scenario and have better error message to explain to the user what happened? (And ideally help them resolve it by turning off windows path limit or something.)
  2. Can we internally clone the repo to a shorter path so that this is less likely to trip? E.g. hash the repo URI or something, instead of having the entire repro URI as part of the path. The existing install path by default is like 100 char long and uses up half the char length already.
Affected version

GitHub Copilot CLI 1.0.81-1

Steps to reproduce the behavior
  1. Find a agentic marketplace with some long-ish path inside. (Contact cchui@microsoft.com offline if you need examples.)
  2. Run /plugin marketplace add INSERT_MARKETPLACE_URI_HERE
  3. Encounter error desscribed above in the bug description
Expected behavior

Ideally succeed, or at least a helpful error so the user understands what went wrong / how to resolve it (e.g. turn off max path limit.)

Additional context

No response

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

/plugin marketplace add の背後にある実装と git clone のパス構築から始め、その後、長いパスを持つ marketplace を使って Windows 上で checkout の失敗を再現します。完了の条件は、より短いクローン先で marketplace が成功するか、Windows のパス長制限による失敗について実行可能な説明を報告することです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
git, shell
領域
cli, operating-systems
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
活発
明瞭さ
おおむね明確
初心者へのやさしさ
58/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。