Neeraj Singh <nksingh85@xxxxxxxxx> writes: > Is there state we care about besides objects and refs? Maybe we need to > introduce a transactional system for the entire repository like we have > for the refs-db. In-process code that cares about oids that might be > only transactionally present can register a callback for when the transaction > commits or rollsback. I'm not volunteering to write this, btw :). I take it to mean by "objects and refs" that we care only about objects that are reachable from the refs? The index (the primary index array plus extensions that record object names) also has anchoring points we care about (ask "git fsck" what they are). > We can make the tmp object directory stuff more prevalent by using it in > git-apply and the merge stategy, and by using bulk-checkin while writing out > the cached tree and commits. This should flush out any issues and keep other > parts of the codebase honest. I wonder what's so wrong about cruft objects in the main object store that may be gc-ed away laster, though. IOW, I wonder if it is simpler to treat the quarantine while accepting dubious foreign data via "git push" in receive-pack as an exception, not a norm.