Skip to content
zit Check-in [d6cf7bf59c]
Login

Check-in [d6cf7bf59c]

Overview
Comment:Lock the store with exclusive-create lock files instead of flock

Writers create .zit.lock with O_CREAT|O_EXCL before opening the store. A waiter names the holder and gives up after a minute; a dead holder's lock is broken; pack and shun --force hold the writer lock across their final check and rename. Release 0.3.33.

Timelines: family | ancestors | descendants | both | trunk | version-0.3.33
Files: files | file ages | folders
SHA3-256: d6cf7bf59c9bba1e5716d92512aa7dad91b808180d1281e5dae23098e8a7d928
User & Date: dmestas on 2026-09-28 11:59:39.964
Other Links: manifest | tags
Context
2026-09-28
12:35
landing accept: read the target once; --expect-target refuses a moved one

accept merged onto the target resolved by name at merge time, so a landing accepted meanwhile put an untested target under the merge. It now reads the target once and merges onto that check-in by hash. --expect-target HASH refuses with exit 7 and nothing written when the target is no longer at HASH. check-in: 676068f793 user: dmestas tags: trunk

11:59
Lock the store with exclusive-create lock files instead of flock

Writers create .zit.lock with O_CREAT|O_EXCL before opening the store. A waiter names the holder and gives up after a minute; a dead holder's lock is broken; pack and shun --force hold the writer lock across their final check and rename. Release 0.3.33. check-in: d6cf7bf59c user: dmestas tags: trunk, version-0.3.33

02:59
import-git: record a project code; verify notes a store without one

import-git wrote no project code, so every sync peer and forge refused the store it made. It now derives one from the destination's absolute path, as init does, and the import request requires it. verify notes a repository with no project code without counting it as damage. check-in: add51a12d2 user: dmestas tags: trunk

Changes