SIGN IN SIGN UP

Fix synced folder issues: configFiles duplicate, group insertion, and directory-level membershipExceptions (#1607)

* Fix configFiles creating duplicate group inside synced folder

When configFiles reference paths inside a synced folder source,
getContainedFileReference() created a separate PBXGroup hierarchy
that duplicated the PBXFileSystemSynchronizedRootGroup already
managing those files.

Skip group creation in getContainedFileReference when the file
path falls inside an existing synced folder root.

Fixes the same class of issue as #1602, but for configFiles
rather than target sources.

* Fix synced folder group duplication and directory-level membershipExceptions

- Prevent rootGroups insertion for paths inside synced folders,
  avoiding duplicate PBXGroup alongside PBXFileSystemSynchronizedRootGroup
- Recurse into non-included directories in findExceptions to list
  individual file paths instead of directory names, since Xcode does
  not recursively exclude directory contents from membershipExceptions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Update test: expect individual file paths instead of directory names in exceptions

Xcode does not recursively exclude directory contents from
membershipExceptions, so the correct behavior is to list individual
files rather than directory names.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Use basePath instead of project.basePath for synced folder checks

When XcodeGen is run with --project-directory, the computed basePath
property accounts for the different output location. Using project.basePath
would resolve paths incorrectly in that scenario.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
A
Alexandre Nussbaumer committed
df251b29cd01f7527007c9e995fdf5ea79c04645
Parent: 3e6e5e3
Committed by GitHub <noreply@github.com> on 4/14/2026, 1:14:22 PM