Skip to content
go-libfossil Check-in [d5fdd30d12]
Login

Check-in [d5fdd30d12]

Overview
Comment:fix(manifest): make root check-in mlink derivation idempotent (#294) (#325)

* fix(manifest): make root check-in mlink derivation idempotent (#294)

The root-file branch of insertCheckinMlinks inserts each file row with no already-derived guard, unlike addMlink's pmid>0 early-out, so crosslinking a root a second time -- which the relink path does after clearing event and tagxref -- inserted a second copy of every row. Skip the block when a root row (pmid=0) is already present, matching the idempotence of fossil's manifest_crosslink.

* test(manifest): root check-in mlink derivation is idempotent on relink (#294)

Timelines: family | ancestors | descendants | both | main | trunk
Files: files | file ages | folders
SHA3-256: d5fdd30d12bcfc2f21d28f4b58774c1c6ea68f2bed82b210c97910084633e1cd
User & Date: [email protected] on 2026-10-12 00:08:35.000
Other Links: branch diff | manifest | tags
Context
2026-10-12
00:13
fix(manifest): refuse a technote with a non-self or non-singleton T-card (#287) (#326)

fossil rejects a CFTYPE_EVENT artifact at parse time unless every T-card is a '+' tag on the technote itself; a technote may not tag another artifact, propagate, or cancel. go-libfossil's parser still accepts such a technote, so gate it in isArtifact: a technote whose T-cards are not all self-referential singletons is not an artifact and applies none of its tags. check-in: cf9089ec35 user: [email protected] tags: main, trunk

00:08
fix(manifest): make root check-in mlink derivation idempotent (#294) (#325)

* fix(manifest): make root check-in mlink derivation idempotent (#294)

The root-file branch of insertCheckinMlinks inserts each file row with no already-derived guard, unlike addMlink's pmid>0 early-out, so crosslinking a root a second time -- which the relink path does after clearing event and tagxref -- inserted a second copy of every row. Skip the block when a root row (pmid=0) is already present, matching the idempotence of fossil's manifest_crosslink.

* test(manifest): root check-in mlink derivation is idempotent on relink (#294) check-in: d5fdd30d12 user: [email protected] tags: main, trunk

00:03
fix(manifest): write the first check-in's sym-trunk as propagating (#289) (#324)

fossil new and repo-state §6.1 write *branch and *sym-trunk, both propagating, so the trunk alias descends to every check-in on the branch. The initial check-in built sym-trunk as a singleton (+), which stopped the alias at the root. check-in: 470f85d9fa user: [email protected] tags: main, trunk

Changes