)]}'
{
  "commit": "280bbe244543ecf9d7dcb549f77e4c83fc600dca",
  "tree": "407ea75788e64956676ed77111ed84bfa2886061",
  "parents": [
    "238108f8a5e63c88e6041c66a422195834ea57c9"
  ],
  "author": {
    "name": "ajurkowski",
    "email": "ajurkowski@google.com",
    "time": "Wed Aug 19 11:26:20 2020 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Aug 19 11:27:45 2020 -0700"
  },
  "message": "Add an archived representation for tree artifacts.\n\nTree artifacts are currently passed as individual files which are in the\ndirectory. This change is a prototype which allows to pass those directories\nusing a single archived file instead.\n\nAdd a new option which, if enabled, assigns an archived representation to each\nof the tree artifacts. The representation is a single file, which contains all\nof the files in the artifact (zip archive). Those files are added in a\ndirectory using a reserved name (containing a `:`), therefore cannot clash with\nuser-created files.\n\nExpand the TreeArtifactValue to enable storing the archived representation and\nupdate the inputs mapping code to include the archived file.\n\nAdd handling for changes to the archived files in `FilesystemValueChecker` to\nensure correctness in case of incremental builds, when the files get\nedited/deleted.\n\nAdd explicit errors for use cases for which archived tree artifacts are not\nsupported yet like inputs discovery, shared actions, action templates or\ndiscarding orphaned artifacts.\n\nPlease note that this feature relies on spawn runners to create the artifact\nitself -- using it with one which does not support it will result with an error\n(missing tree artifact output).\n\nAdd a new, parameterized category of tests for `FilesystemValueChecker` to\ncover handling of archived files. Improve reliability of\n`FilesystemValueChecker` by replacing the clock used to generate file `ctimes`\nfor files with a `ManualClock` (previously `JavaClock`, using\n`System.currentTimeMillis()`).\n\nPiperOrigin-RevId: 327472179\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fb0873303abcfbe9b9c2ec6b554d00f8149ed68a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/actions/Actions.java",
      "new_id": "dbaa0f96fcf1ed273cec4347b9467e853ee6bd71",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/actions/Actions.java"
    },
    {
      "type": "modify",
      "old_id": "b2eda56395aebd3102baa9964c6ad42e5e80d2f4",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/actions/Artifact.java",
      "new_id": "60f2cd3d8b284c641046d1928ff2ee167e7d3d6e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/actions/Artifact.java"
    },
    {
      "type": "modify",
      "old_id": "3ae550e1cba300548bb749f446c742fb3d2093a3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/actions/CompletionContext.java",
      "new_id": "0d600699f0f8c635623c728d5885ca207f6c94a8",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/actions/CompletionContext.java"
    },
    {
      "type": "modify",
      "old_id": "a5686f922e7c6c1d05df2de529613496af114df9",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java",
      "new_id": "3e30b3f3131d069038037aaa298b1ce41b97d240",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java"
    },
    {
      "type": "modify",
      "old_id": "b1dc981f209dd9ad8ee27ca0064dd9d9385676e3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java",
      "new_id": "567b2b6423670117dd6ca86e98a86df80721f4a0",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java"
    },
    {
      "type": "modify",
      "old_id": "6bef59b4e47c6413a5812d68e87ba6d8f997669d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java",
      "new_id": "e5126a28726edba6108112340b4ed4a8fbe98c04",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java"
    },
    {
      "type": "modify",
      "old_id": "060aba8af00f0b0920b78992f6d611468eacf9d8",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java",
      "new_id": "f4056c46ee446b6fbff0b547ddd5b84056587073",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java"
    },
    {
      "type": "modify",
      "old_id": "d6472b7dfbe5bd59a83d6a7673c97a0904181a2b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java",
      "new_id": "f423473dabd72c18e396d1bcb492d5885663cccc",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java"
    },
    {
      "type": "modify",
      "old_id": "40d115a0f5f3acbbbcf4351f636d7cc108e67875",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java",
      "new_id": "d84043ba0a4efe6c4136a11d57dd66ef71a06e31",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java"
    },
    {
      "type": "modify",
      "old_id": "4d53e005ca0e06951aaa4292762f04adbd99a647",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScanning.java",
      "new_id": "9cbc36b15b734d2b23f3e9376eeda1aff1d254fc",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/IncludeScanning.java"
    },
    {
      "type": "modify",
      "old_id": "904f88c1ea0c5ef2b871f9f4d2ef5366b236f72f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java",
      "new_id": "52f0c5d59f72518160212c5bb548f63283f7c19d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java"
    },
    {
      "type": "modify",
      "old_id": "21c0a80a8a3bced32d4bf0366253af7e496dc168",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java",
      "new_id": "00a8b994db5a41dae63d0b7bd5de1536610b5f28",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java"
    },
    {
      "type": "modify",
      "old_id": "0930356f16c4f74c3d07278a246a0def0ea1be18",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java",
      "new_id": "0116f1ac86d35b8e444b740635e04bdc427a8a86",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java"
    },
    {
      "type": "modify",
      "old_id": "e9c4f247d8a5acae2b514437ca803bb5351c7ee4",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionState.java",
      "new_id": "fd04a88fe26786a0d4a092f8d2d9a89533a06d6d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionState.java"
    },
    {
      "type": "modify",
      "old_id": "e021d3bbfcc77bbd9b01b791e9f35ebcd7ea65e2",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java",
      "new_id": "825ec57cb50b73b3060fe2f98c7b01c5c9dc0abb",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java"
    },
    {
      "type": "modify",
      "old_id": "0a90d9a7385718f11af7b91db849149ffa81dec3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/ActionInputMapHelper.java",
      "new_id": "38cf9111abdf2eb218b82ec9ad985b33080d94ce",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/ActionInputMapHelper.java"
    },
    {
      "type": "modify",
      "old_id": "777fcc23e2c980e8ea8d46ad256461537fdd051f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandler.java",
      "new_id": "c6c6aa614cf3f952593cc607f349af095ecd5fae",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandler.java"
    },
    {
      "type": "modify",
      "old_id": "b9edfcc7dca7a9078b41fe528329fc8f24a25d2a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/BUILD",
      "new_id": "b1278e73bdd39d145ff692053d478df09e970163",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/BUILD"
    },
    {
      "type": "modify",
      "old_id": "d7c1be6cad8f21e55117cf905e027fc4b69757f1",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/CompletionFunction.java",
      "new_id": "63f130dee4ce24cb8e24cf5825b36d0674306627",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/CompletionFunction.java"
    },
    {
      "type": "modify",
      "old_id": "d3bdf1d478cdbd64fb97524586831ddaea982b08",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java",
      "new_id": "a6beab70d69f1992de3a86d2a9a2b3774e81163f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/FilesystemValueChecker.java"
    },
    {
      "type": "modify",
      "old_id": "1cdfeb4731f5648c68e5d83129569fdb53a58d9a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java",
      "new_id": "1e94a7f615971732e177be4face4b7b0cacd2848",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java"
    },
    {
      "type": "modify",
      "old_id": "ec36e8369693e2ebb165872f2b919c8ad1cf8b03",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java",
      "new_id": "df6359025bce1a7ba565f4311411e082a3c0532b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/TreeArtifactValue.java"
    },
    {
      "type": "modify",
      "old_id": "601f5074f87cdff2d3fce27777f4cb50d4c93c74",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/vfs/BatchStat.java",
      "new_id": "73289b8a1f0a265ed5ebde77e971a14ad5997a33",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/vfs/BatchStat.java"
    },
    {
      "type": "modify",
      "old_id": "dfff759a3cb705d95236e84aa362ded75f750bad",
      "old_mode": 33188,
      "old_path": "src/main/protobuf/failure_details.proto",
      "new_id": "50e29a55c6cc84435e5607768feb3e6bdc49b25d",
      "new_mode": 33188,
      "new_path": "src/main/protobuf/failure_details.proto"
    },
    {
      "type": "modify",
      "old_id": "d59daff6232e3c78ee2ceb3c3fc5a1adc32e168b",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandlerTest.java",
      "new_id": "0038aba28bb810afc0a87e1f33bbf84394c8dbe4",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandlerTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8051c56865ea0d45a62ab01ef4c730789278e246",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerParameterizedTest.java"
    },
    {
      "type": "modify",
      "old_id": "5bd1ed42a49e51ab164e11ac830a50bf4066e879",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java",
      "new_id": "cae0cb1ad0dfee067e126516c09ee37f3125b978",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "09a1136bd4bcc78eb1ad60cf8df692d0572e6a3e",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTestBase.java"
    },
    {
      "type": "modify",
      "old_id": "6f7a1d4e10bfc0143a7216282ae1374a9f2581c5",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutorTest.java",
      "new_id": "cdf5f95190d967f7662831316849287dc966dd35",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutorTest.java"
    },
    {
      "type": "modify",
      "old_id": "30bd726002ff6cd036742ea765a46f74be4d3f6d",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java",
      "new_id": "28c409fd3bdce86a50234f89d0164c0c0baba841",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java"
    },
    {
      "type": "modify",
      "old_id": "3dbc7dfcc31b0cf99fd72dd31ef97b7fd9c7f22a",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleImplementationFunctionsTest.java",
      "new_id": "94fa7f5ca8980b1a7ead7dd72268e111b22cc99a",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleImplementationFunctionsTest.java"
    }
  ]
}
