)]}'
{
  "commit": "fffa0affebbacf1961a97ef7cd248be64487d480",
  "tree": "7859a433b82841167ad2ec5e35480b22ac998576",
  "parents": [
    "7b37dc162554009b41d3c8829e074997527e1a61"
  ],
  "author": {
    "name": "Xdng Yng",
    "email": "wyverald@gmail.com",
    "time": "Tue Feb 20 10:59:57 2024 -0800"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Tue Feb 20 11:01:42 2024 -0800"
  },
  "message": "Add `rctx.watch_tree()` to watch a directory tree\n\n- Added `rctx.watch_tree()` to watch a directory tree, which includes all transitive descendants\u0027 names, and if they\u0027re files, their contents.\n  -  In the future we could add glob patterns to this method.\n- Added a new SkyFunction DirectoryTreeDigestFunction to do the heavy lifting.\n  - In the future, for performance, we could try to get this skyfunction to have a mode where it only digests stat(), to use as heuristics (similar to #21044)\n\nWork towards #20952.\n\nCloses #21362.\n\nPiperOrigin-RevId: 608667062\nChange-Id: Ibacbb7af4cf4d7628fe8fcf06e2c4fa50e811e4e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b0f34b7bac8755071d52499b0d3d914ce75eedac",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/BUILD",
      "new_id": "bbc23ef10fe95f4266217b9680782f1fd8dc3a76",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/BUILD"
    },
    {
      "type": "modify",
      "old_id": "feb11e98f76406a07d84241a163f554b4867e377",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryContext.java",
      "new_id": "764c35e14435d787a2182a9ad02668560dd9ddad",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryContext.java"
    },
    {
      "type": "modify",
      "old_id": "b711378b51f0ee3a506dc10025257e0556f22532",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryFunction.java",
      "new_id": "1d357568bd74fc166d7fffc5cfb07332b8df285e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryFunction.java"
    },
    {
      "type": "modify",
      "old_id": "c3c100c5ea4a687e01d2e2dbf475e890c66ed10f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/BUILD",
      "new_id": "cfb7c415690ea91294b9f9ad7d12d31b732dd176",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/BUILD"
    },
    {
      "type": "modify",
      "old_id": "605bd65a7ce3c5a37cdbdda6f79790d2f4b460e5",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/repository/RepoRecordedInput.java",
      "new_id": "4bef44e2efed2b2926637e6447a5b4744fe9d9c6",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/repository/RepoRecordedInput.java"
    },
    {
      "type": "modify",
      "old_id": "dab78bd1eccbea3299483aee7d3531ee3310d82f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/BUILD",
      "new_id": "8f5e4604aa45de1ba206d8d3ecddd87a0a8ab1f5",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ae23c3721b3379d6267d8f580d9e08f0eeda916c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/DirectoryTreeDigestFunction.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "246abf09872020d355dc1e2c4e6dbf58570f72bc",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/DirectoryTreeDigestValue.java"
    },
    {
      "type": "modify",
      "old_id": "0cf31c94232ff482e3156b800c5d1f8f36c7a63b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/SkyFunctions.java",
      "new_id": "ec27b8fcec33182feea52df8074328e2ce5af720",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/SkyFunctions.java"
    },
    {
      "type": "modify",
      "old_id": "d4286034031398e58c27163c5db63c97a0e2f7f4",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java",
      "new_id": "ec3e8e2b31f1d918b80519cfaeff1d5c116ededd",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java"
    },
    {
      "type": "modify",
      "old_id": "08cc6bb8c02d2495e9ee5beb2896124c11c8f996",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/BUILD",
      "new_id": "7c19c3037865fa450696bc691acd2b740ac895bd",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7dd4eed5221952e060abf8ef5d83309bf21235e5",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/DirectoryTreeDigestFunctionTest.java"
    },
    {
      "type": "modify",
      "old_id": "aabc46e0465c41219fa8cdc74e9ef225ae3e5322",
      "old_mode": 33261,
      "old_path": "src/test/shell/bazel/starlark_repository_test.sh",
      "new_id": "f0423297d4a67c20e59440f002df2bd45782004b",
      "new_mode": 33261,
      "new_path": "src/test/shell/bazel/starlark_repository_test.sh"
    }
  ]
}
