commit | 15c55d5234571ffd7a42572e50820d5f22212878 | [log] [tgz] |
---|---|---|
author | ajurkowski <ajurkowski@google.com> | Fri Aug 06 17:58:25 2021 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Fri Aug 06 17:59:40 2021 -0700 |
tree | 6e8d7427c6e8621342b93cd39bfd75d39a1b46bb | |
parent | fe6645d16cae81580fda7136d0abb8206fffc230 [diff] |
Implement handling of diffs which can skip ancestor directories. Implement a new diff checker which deduces affected `FileStateValue` and `DirectoryListingStateValue` keys from diffs which can skip ancestor directories in them. An extreme example of such diff would be one which only lists the leaf files when adding/deleting them (e.g. adding `a/b/c/d/file` where `a` does not currently exist). Use the new algorithm for diffs marked as potentially missing ancestor directory entries. The new logic has a very similar performance to the existing one with the difference of: - adding new file with within new directories -- it does less stats since it deduces the directory from the leaf existence - deleting a file -- it performs 1 extra stat since it cannot assume that the parent of a deleted file still exists - unknown entries -- it tries to be lazy about stating those; we would only do that if that can prevent invalidation of a directory listing. PiperOrigin-RevId: 389301057
{Fast, Correct} - Choose two
Build and test software of any size, quickly and reliably.
Speed up your builds and tests: Bazel rebuilds only what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.
One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.
Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.
Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.
Follow our tutorials:
See CONTRIBUTING.md