Files
sbt/notes
90ce3b99f8 [2.x] fix: Re-extract a declared output directory on cache hit when it is missing (#9473)
A directory declared via Def.declareOutputDirectory is packaged as a sibling
<dir>.sbtdir.zip, so deleting the directory leaves the zip behind. On a cache
hit, syncFile's up-to-date short-circuit saw the zip in sync (same digest,
already a CAS symlink) and returned without the unpack side effect, which only
ran from the file-write path: the directory was never restored. For sbt's own
compile, whose classes directory is declared this way, rm -rf of the classes
directory with a warm cache meant run failed with ClassNotFoundException and no
recompile; only deleting the zip as well (or the whole cache) recovered.

The up-to-date branch now re-extracts when the extracted directory itself is
missing: a single stat on the warm path, per review preference over a
manifest-based per-file check. Partial deletions inside a still-existing
directory are not repaired, consistent with treating target/ contents as
sbt-managed.

Refs #9462 (the directory-restoration half; the declareOutput-in-a-loop half is
a separate macro-layer issue)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
Co-authored-by: eugene yokota <[email protected]>
2026-07-25 15:55:33 -04:00
..
2018-05-04 16:39:05 +02:00
2016-05-06 16:01:49 -04:00
2016-05-06 16:01:49 -04:00
2016-05-06 16:01:49 -04:00
2016-05-06 16:01:49 -04:00
2025-02-04 01:11:28 -05:00
2025-02-04 01:11:28 -05:00
2019-09-05 14:11:13 -04:00
2019-09-05 14:11:04 -04:00
2025-02-04 01:11:28 -05:00
2019-09-05 14:11:04 -04:00
2019-09-05 14:11:13 -04:00
2019-09-05 14:11:13 -04:00
2025-02-04 01:11:28 -05:00
2019-09-05 14:11:04 -04:00
2017-09-16 20:32:33 -04:00
2017-10-26 22:39:35 -04:00
2025-02-04 01:11:28 -05:00
2025-02-04 01:11:28 -05:00
2019-09-05 14:11:04 -04:00
2019-09-05 14:11:13 -04:00
2017-12-15 01:49:14 +00:00