mirror of https://github.com/sbt/sbt.git
Previously the persistent attribute map was only reset when the file event monitor detected a change. This made it possible for the cache to be inconsistent with the state of the file system*. To fix this, I add an observer on the file tree repository used by the continuous build that invalidates the cache entry for any path for which it detects a change. Invalidating the cache does not stamp the file. That only happens either when a task asks for the stamp for that file or when the file event monitor reports an event and we must check if the file was updated or not. After this change, touching a source file will not trigger a build unless the contents of the file actually changes. I added a test that touches one source file in a project and updates the content of the other. If the source file that is only ever touched ever triggers a build, then the test fails. * This could lead to under-compilation because ExternalHooks would not detect that the file had been updated. |
||
|---|---|---|
| .. | ||
| src | ||
| NOTICE | ||