Skip to content

docs: ignore workspace-local Xcode Build folders in app templates #93

Description

@gaelic-ghost

Summary

Add Build/ to the template .gitignore used by Socket Apple/Xcode project guidance, bootstrap, and guidance-sync workflows for Xcode app repositories.

This came up in gaelic-ghost/envbar after switching Xcode to use workspace-relative build folders instead of sending build products into global DerivedData. A normal local build succeeded, but it left a large untracked Build/ tree in the repo until xcodebuild clean removed it.

Why this matters

Workspace-relative build folders are a reasonable local Xcode preference, especially when a developer wants build products close to the repo instead of hidden somewhere under DerivedData. Socket-generated or Socket-synced Xcode app guidance should treat that as expected local developer behavior, not as a source-control noise trap.

Suggested change

Update the relevant Apple/Xcode app template and guidance-sync surfaces so the default .gitignore includes at least:

Build/
DerivedData/
xcuserdata/
*.xcuserstate

Also check any repo-maintenance or sync validation docs that describe ignored local Xcode output folders, so the wording stays consistent across bootstrap, sync, and maintenance guidance.

Acceptance criteria

  • Xcode app template .gitignore includes Build/ for workspace-relative build products.
  • Apple/Xcode project guidance or sync workflows preserve or add Build/ where they manage local generated-output ignore rules.
  • Repo-maintenance docs/examples remain consistent with the template behavior.
  • Existing DerivedData/, xcuserdata/, and *.xcuserstate ignore behavior is preserved.

Evidence

  • gaelic-ghost/envbar builds successfully with xcodebuild -project envbar.xcodeproj -scheme envbar -configuration Debug -destination platform=macOS build.
  • With workspace-relative build output, the build generated a large untracked Build/ directory because the repo only ignored DerivedData/, xcuserdata/, and *.xcuserstate.
  • Adding Build/ to .gitignore fixed the local source-control noise while preserving workspace-relative build output.

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions