getsentry / getsentry/XcodeBuildMCP

Allow reusing Xcode.app's per-workspace DerivedData (avoid duplicate builds); static XCODEBUILDMCP_DERIVED_DATA_PATH can't map per workspace

Đang mở
#525 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
TypeScript
Star
6.4k
Fork
319
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

**Version:** 2.7.0

## Problem

For derived data the MCP currently offers two modes, neither of which lets agent builds share Xcode.app's DerivedData per workspace:

1. **Default:** per-workspace isolation (#340), but under the MCP's own tree (`~/Library/Developer/XcodeBuildMCP/workspaces//DerivedData`). This is *separate* from Xcode.app's `~/Library/Developer/Xcode/DerivedData/-`, so a project built both in the GUI and via the MCP is built and stored twice — double the disk and no incremental reuse across the two.
2. **`XCODEBUILDMCP_DERIVED_DATA_PATH`:** a single static path applied to every call (`resolveEffectiveDerivedDataPath` returns it verbatim). With multiple workspaces/worktrees, they all collide in one folder → build-product clobbering and full rebuilds.

## Request

A mode to resolve derived data to the **existing** Xcode.app DerivedData folder for each workspace (e.g. matching `WorkspacePath` in each folder's `info.plist`), and/or per-workspace configurability instead of a single static override.

This would let a repo built in both Xcode and the MCP share one DerivedData per workspace — no duplication, true incremental reuse between interactive and agent builds.

## Workaround

I currently achieve this with a client-side `PreToolUse` hook that rewrites each build/test call's `derivedDataPath` to the matching GUI folder (looked up via `WorkspacePath` in each folder's `info.plist`), falling back to a deterministic per-workspace path when no GUI folder exists yet. Happy to share it if useful.

## Related

- #340 (per-workspace DerivedData isolation) — implemented isolation, but into the MCP's own tree rather than Xcode.app's.
- #283 (tilde expansion in config'd derived data path).

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Start at resolveEffectiveDerivedDataPath and review the per-workspace isolation introduced by #340. Inspect how Xcode.app DerivedData folders expose WorkspacePath in info.plist, then define how matching and fallback paths should work. Done means each workspace can reuse its GUI DerivedData without collisions, while workspaces without an existing folder retain deterministic isolation.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
typescript
Lĩnh vực
build-system, tooling
Loại issue
Tính năng
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Sôi nổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
45/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.