Skip to content

Move per-contributor team override from pbxproj to a gitignored xcconfig #1033

@datlechin

Description

@datlechin

Follow-up to #1028.

#1028 unblocked external-contributor builds, but the personal-team setup still requires editing TablePro.xcodeproj/project.pbxproj in Xcode (Team, Bundle Identifier, Code Signing Entitlements) and then telling git to ignore those edits via git update-index --skip-worktree.

That works but is fragile:

  • --skip-worktree is per-clone, easy to forget on a fresh checkout.
  • Any future Xcode UI tweak by a contributor risks accidentally committing their team prefix back.
  • It's not the Apple-recommended pattern.

Proposal

Move the three overridable values into a gitignored xcconfig file. The repo already uses Secrets.xcconfig (CONTRIBUTING.md:12) for similar purposes, so the infrastructure is in place.

Roughly:

  1. Add Local.xcconfig to .gitignore (with a committed Local.xcconfig.example).
  2. In TablePro.xcodeproj, set the Debug build settings for DEVELOPMENT_TEAM, PRODUCT_BUNDLE_IDENTIFIER, and CODE_SIGN_ENTITLEMENTS to read from the xcconfig (\$(inherited) chain).
  3. Default values stay set to the official team / com.TablePro / TablePro/TablePro.entitlements so unmodified clones keep working.
  4. Replace the personal-team section in CONTRIBUTING.md with a 3-line block: copy the example, set DEVELOPMENT_TEAM, set PRODUCT_BUNDLE_IDENTIFIER, optionally set CODE_SIGN_ENTITLEMENTS=TablePro/TablePro.Debug.entitlements.

Outcome

  • No more pbxproj edits for personal-team contributors.
  • git status stays clean by construction; no --skip-worktree needed.
  • Official Release builds are unchanged (xcconfig is empty / absent → defaults apply).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions