Various synced folder enhancements#1596
Merged
yonaskolb merged 5 commits intoyonaskolb:masterfrom Mar 5, 2026
Merged
Conversation
Contributor
Author
|
Sorry that this includes the full other PR, didn't know how to do it differently. 😬 |
Adds an `explicitFolders` property to `TargetSource` that is expanded from Glob patterns and passed through to `PBXFileSystemSynchronizedRootGroup`.
When createIntermediateGroups was enabled and a syncedFolder source had a multi-component path (e.g. SyncedParent/SyncedChild), two things went wrong: 1. The synced folder was unconditionally added to rootGroups, causing it to appear both at the project root and inside the correct intermediate parent group. 2. The synced folder kept its full project-relative path instead of being made relative to its parent group, so Xcode concatenated them into a wrong path (e.g. SyncedParent/SyncedParent/SyncedChild).
74ef859 to
c89ca14
Compare
Contributor
Author
|
@yonaskolb now that #1587 is merged (thanks!), I've rebased my changes onto |
3 tasks
yonaskolb
added a commit
that referenced
this pull request
Mar 12, 2026
…ers (#1606) `makePathRelative` used `project.basePath` to compute parent paths, while `resolveGroupPath` used `projectDirectory ?? project.basePath`. When these differ (e.g. via --project flag), intermediate group paths become inconsistent, causing Xcode to resolve files to the wrong location. Regression from #1596 which added the `makePathRelative` call in the `createIntermediateGroups` code path. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3 tasks
yonaskolb
added a commit
that referenced
this pull request
Mar 12, 2026
…ers (#1608) * Fix makePathRelative using wrong base path when projectDirectory differs (#1606) `makePathRelative` used `project.basePath` to compute parent paths, while `resolveGroupPath` used `projectDirectory ?? project.basePath`. When these differ (e.g. via --project flag), intermediate group paths become inconsistent, causing Xcode to resolve files to the wrong location. Regression from #1596 which added the `makePathRelative` call in the `createIntermediateGroups` code path. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Extract basePath computed property in SourceGenerator Consolidates `projectDirectory ?? project.basePath` into a single `basePath` property to prevent future mismatches between path resolution call sites. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR addresses a couple of additional things of
syncedFoldersources:explicitFoldersproperty toTargetSourcethat is passed through toPBXFileSystemSynchronizedRootGroup, to turn entire subfolders into Resources.createIntermediateGroups=YESand always beging created at the root level.groupOrdering.Note that this PR builds on #1587 by @mirkokg in two ways:
explicitFolderssetting only works correctly with the empty Resources phase introduced there.