fix: re-lock the self-referencing git dep after the history rewrite #60
Reference in New Issue
Block a user
Delete Branch "fix/relock-after-history-rewrite"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
🔴 The history rewrite broke the build for every machine except this one.
crates/sylpheed-exportdepends on this repository by tag:and
Cargo.lockpinned it to commit#1cd5b8b1. The #49 rewrite replaced every commit, so1cd5b8b1no longer exists and the tag now dereferences toe2630413.Why it looked fine
⚠️
~/.cargo/gitstill holds the old object, so builds keep working on the machine that did the rewrite. A clean checkout — CI, or the other desktop — cannot resolve the locked rev at all. That is the worst shape a breakage can take, so this was measured from an emptyCARGO_HOMErather than trusted to a local build.docs/agents/CONSOLIDATION.mdnamed this dependency as the hard blocker for a history rewrite. It was not re-checked before the push. This is the fix.The source is unchanged
crates/sylpheed-formatshas tree55461e46at both the old and the new commit — the rewrite never touched that crate, so the build result is identical. Only the SHA moved.Verified
e2630413— matches the new lock ✅cargo fetch --locked, empty CARGO_HOMEcargo check -p sylpheed-export --lockedWorth considering separately
A crate depending on its own repository by tag is what made a history rewrite dangerous in the first place. A
path = "../sylpheed-formats"dependency would remove that class of breakage entirely — out of scope here, but the pin will keep needing this dance otherwise.`crates/sylpheed-export` depends on THIS repository by tag: sylpheed-formats = { git = "…/Sylpheed.git", tag = "formats-pin-2026-09-01" } and `Cargo.lock` pinned it to commit `#1cd5b8b1`. The issue-#49 history rewrite replaced every commit, so `1cd5b8b1` no longer exists on the remote and the tag now dereferences to `e2630413`. ⚠️ The failure is invisible here: `~/.cargo/git` still has the old object, so builds on the machine that did the rewrite keep working. A clean checkout -- CI, or the other desktop -- cannot resolve the locked rev at all. That is the worst shape for a breakage, which is why this was measured from an empty CARGO_HOME rather than trusted to a local build. `CONSOLIDATION.md` called this dependency out as the hard blocker for the rewrite. It was not re-checked before the push; this is the fix. The dependency's SOURCE is unchanged -- `crates/sylpheed-formats` has tree `55461e46` at both the old and the new commit, so the rewrite never touched it and the build result is identical. Verified: * remote tag peels toe2630413, matching the new lock * `cargo fetch --locked` from an EMPTY CARGO_HOME -> exit 0 * `cargo check -p sylpheed-export --locked` -> exit 0 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>