)]}'
{
  "commit": "4310aeb36c134e5fc61ed5cdfdf683f3e95f19b7",
  "tree": "d0a852c2df70c65365454fd03986da1d44141c0f",
  "parents": [
    "8002df18400f77554fe7ea9628eb2db74468b1d4"
  ],
  "author": {
    "name": "Fabian Meumertzheim",
    "email": "fabian@meumertzhe.im",
    "time": "Mon May 09 06:20:10 2022 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Mon May 09 06:21:26 2022 -0700"
  },
  "message": "Create output directories for remote execution\n\nBy explicitly declaring output directories as inputs to a remote action,\nthis commit ensures that these directories are created by the remote\nexecutor prior to the execution of the action. This brings the behavior\nof remote execution regarding tree artifacts in line with that of local\nor sandboxed execution.\n\nGetting the tests to pass requires modifying a check in Bazel\u0027s own\nremote worker implementation: Previously, the worker explicitly verified\nthat output directories don\u0027t exist after the inputs have been staged.\nThis behavior is not backed by the spec and has thus been modified: Now,\nit is only checked that the output directories either don\u0027t exist or are\ndirectories.\n\nFixes #6393\n\nCloses #15366.\n\nPiperOrigin-RevId: 447451303\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c0602762ba8e5f0f623127798bc207dc847c62c9",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/remote/RemoteExecutionService.java",
      "new_id": "27132d528c19613978b9bec54ca0e6db95a136a0",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/remote/RemoteExecutionService.java"
    },
    {
      "type": "modify",
      "old_id": "bca6b54363c084b7cf328a8617c459ae717049dc",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/remote/merkletree/BUILD",
      "new_id": "5a1a76569c4f9dffd1fd69c9007df32de5de1fe3",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/remote/merkletree/BUILD"
    },
    {
      "type": "modify",
      "old_id": "c641f80accfe0ccadd8f30f68549976c3d5e8cb1",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/remote/merkletree/DirectoryTreeBuilder.java",
      "new_id": "f188b234ef18d6949ad1df816d413a5feb92d0ea",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/remote/merkletree/DirectoryTreeBuilder.java"
    },
    {
      "type": "modify",
      "old_id": "d669cb32fd151208b44e26aa9ef8f5a764e7bb77",
      "old_mode": 33261,
      "old_path": "src/test/shell/bazel/remote/remote_execution_test.sh",
      "new_id": "30a4b6913d71559bfdee630680fa7ef38361bbd0",
      "new_mode": 33261,
      "new_path": "src/test/shell/bazel/remote/remote_execution_test.sh"
    },
    {
      "type": "modify",
      "old_id": "af325e3b3b1a8b9c93501f63c0158653f627c8cb",
      "old_mode": 33188,
      "old_path": "src/tools/remote/src/main/java/com/google/devtools/build/remote/worker/ExecutionServer.java",
      "new_id": "1e85b9e8637ca451c388e283a95c4275597bd39f",
      "new_mode": 33188,
      "new_path": "src/tools/remote/src/main/java/com/google/devtools/build/remote/worker/ExecutionServer.java"
    }
  ]
}
