The last thread cut — SwiftGitX and libgit2 leave the project
Step 6 of strategy/01-git-excision.md, the proving step: the two packages and their rationale blocks (including the stale never-runs-in-the-free-app note) come out of project.yml, the project regenerates, and the build resolves clean — nothing living referenced libgit2. Resurrection pins (SwiftGitX 0.4.0, libgit2 1.9.2) are recorded in the plan and at the pre-git-excision tag. 2,707 tests green. Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
This commit is contained in:
+3
-37
@@ -23,35 +23,9 @@ packages:
|
||||
IndieAbout:
|
||||
url: https://git.rzen.dev/rzen/indie-about.git
|
||||
minorVersion: 0.2.2
|
||||
# **The bundled git client** (06-history-undo.md ▸ Rules: "Bundled libgit2 — no git install
|
||||
# required"): SwiftGitX vendors libgit2 as an in-process library, so every git operation the app
|
||||
# performs runs inside the sandbox with no `Process`, no `/usr/bin/git`, and no sandbox extension.
|
||||
# A board's history therefore works identically in a Release build on a machine that has never had
|
||||
# Xcode or the command-line tools installed.
|
||||
#
|
||||
# `exactVersion` rather than a range, and pinned to the pathfinder's own 0.4.0: the package is
|
||||
# pre-1.0 with an API that moves between minors (the commit and diff surfaces this depends on both
|
||||
# changed shape in 0.3→0.4), so a floating pin would be a resolver deciding when the git provider
|
||||
# stops compiling.
|
||||
SwiftGitX:
|
||||
url: https://github.com/ibrahimcetin/SwiftGitX
|
||||
exactVersion: 0.4.0
|
||||
# **The C library underneath SwiftGitX, named directly** (06-history-undo.md ▸ Interaction with
|
||||
# external writers: "foreign changes are committed under the pinned synthetic author"). SwiftGitX
|
||||
# 0.4.0's `commit(message:)` takes no signature — its `CommitOptions` leaves `author`/`committer`
|
||||
# null and libgit2 falls back to `git_signature_default`, which reads a config the sandbox cannot
|
||||
# see — so the auto-committer's per-commit authorship is unreachable through the wrapper. It
|
||||
# reaches `git_commit_create` itself (`GitCommitOperation`), which needs the same vendored module
|
||||
# SwiftGitX imports.
|
||||
#
|
||||
# **The same package SwiftGitX already resolves**, pinned to the version SwiftGitX pins exactly
|
||||
# (`.package(url: …/libgit2.git, exact: "1.9.2")`): this adds no second copy of libgit2 to the
|
||||
# binary and no second resolution to argue with — it makes a module the app already links
|
||||
# *importable*. A drift between these two pins is a resolver error at build time, which is the
|
||||
# loudest place for it to be.
|
||||
libgit2:
|
||||
url: https://github.com/ibrahimcetin/libgit2.git
|
||||
exactVersion: 1.9.2
|
||||
# SwiftGitX 0.4.0 / libgit2 1.9.2 (both `github.com/ibrahimcetin/…`) left with the git excision
|
||||
# (strategy/01-git-excision.md, 2026-08-08) — the exact pins for resurrection are recorded there
|
||||
# and at the `pre-git-excision` tag.
|
||||
|
||||
settings:
|
||||
base:
|
||||
@@ -69,12 +43,6 @@ settings:
|
||||
# What that buys this file: no anchors, no per-target exclusion lists, no second copy of the
|
||||
# resources. There is one product, one Info.plist, one entitlements file, one Swift module, and one
|
||||
# `.kanban` UTI **exported** (never imported) by the app that owns it.
|
||||
#
|
||||
# libgit2 arrived here with pro-m1, as SwiftGitX above — a dependency of the one target, dormant
|
||||
# behind the subscription gate rather than the contents of a second download. It links into the free
|
||||
# app and never runs there: detection itself is tier-gated (`HistoryStore.compose`), so a free-tier
|
||||
# session opens without so much as a `fileExists` under `.git` (12-editions.md ▸ The free tier and
|
||||
# `.git`, and `InertGitTests`).
|
||||
targets:
|
||||
# MARK: - Lanework
|
||||
|
||||
@@ -116,8 +84,6 @@ targets:
|
||||
- package: swift-markdown
|
||||
product: Markdown
|
||||
- package: IndieAbout
|
||||
- package: SwiftGitX
|
||||
- package: libgit2
|
||||
postBuildScripts:
|
||||
- script: '"${SRCROOT}/../indie-skills/skills/app-versioning/scripts/update_build_info.sh"'
|
||||
name: Update Build Info
|
||||
|
||||
Reference in New Issue
Block a user