fix(api): 修复 Windows Git Bash 下 API 路径被 MSYS2 污染导致 404 #406

Closed
chroe wants to merge 0 commits from chroe/gitlink-cli:fix/msys2-path-pollution into master
Contributor

问题

在 Windows Git Bash (MSYS2) 环境下执行:
gitlink-cli api GET /v1/owner/repo
路径参数会被 MSYS2 自动改写为类似
C:/Program Files/Git/v1/owner/repo
(MSYS2 把 /v1 当成 Unix 路径,转换为 Git 安装目录),导致 API 调用 404。
影响所有 Windows Git Bash 用户。

修复

在 cmd/api 的 runAPI 中检测路径首部是否为盘符(^[A-Za-z]:/),
若是则按常见 API 前缀(/v1/ /v2/ /api/ /users/ /projects/)定位并还原原始 API 路径。

改动仅 +15 行,不影响其他平台行为。

## 问题 在 Windows Git Bash (MSYS2) 环境下执行: gitlink-cli api GET /v1/owner/repo 路径参数会被 MSYS2 自动改写为类似 C:/Program Files/Git/v1/owner/repo (MSYS2 把 /v1 当成 Unix 路径,转换为 Git 安装目录),导致 API 调用 404。 影响所有 Windows Git Bash 用户。 ## 修复 在 cmd/api 的 runAPI 中检测路径首部是否为盘符(^[A-Za-z]:/), 若是则按常见 API 前缀(/v1/ /v2/ /api/ /users/ /projects/)定位并还原原始 API 路径。 改动仅 +15 行,不影响其他平台行为。
chroe added 2 commits 2026-07-09 23:38:37 +08:00
b0424aa6d8 fix(api): restore API path polluted by MSYS2/Git Bash on Windows
在 Windows Git Bash (MSYS2) 环境下,gitlink-cli api GET /v1/owner/repo
的路径参数会被 MSYS2 自动改写为类似
C:/Program Files/Git/v1/owner/repo 的 Windows 路径(MSYS2 把 /v1
当成 Unix 路径转换为 Git 安装目录),导致 API 调用 404。

修复:在 runAPI 中检测路径首部是否为盘符(^[A-Za-z]:/),
若是则按常见 API 前缀(/v1/ /v2/ /api/ /users/ /projects/)
定位并还原原始 API 路径。

影响所有 Windows Git Bash 用户,跨平台兼容性修复。
bf9ecc4ba2 docs(api): add MSYS2 path fix doc; extract restoreAPIPath for testability
- 新增命令帮助文档 doc/changes/api-msys2-path.md(问题/根因/修复/影响/测试)。
- 将 runAPI 内联的路径还原逻辑抽成纯函数 restoreAPIPath,便于单元测试;
  并修正一个边界缺陷:路径含多个已知前缀时(如 /api/v1/users)改为取
  最早出现的位置,避免误截到 /v1/。
- 新增表驱动 TestRestoreAPIPath 覆盖:正常路径不变、v1/v2/api 污染还原、
  无已知前缀保留、空路径。
wbtiger closed this pull request 2026-07-14 22:03:51 +08:00
wbtiger reopened this pull request 2026-07-14 23:03:32 +08:00
wbtiger closed this pull request 2026-07-14 23:09:06 +08:00

Pull request closed

Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Gitlink/gitlink-cli#406
No description provided.