)]}'
{
  "commit": "72556e5e4fa6dcb880081efc071bd53c23adc6ca",
  "tree": "78d67637d66656637ad05cf25b202b37ae15c4ab",
  "parents": [
    "94f3a8e883ab5181a683b5c4d47079ae972858ac"
  ],
  "author": {
    "name": "Daniel Wagner-Hall",
    "email": "dwagnerhall@apple.com",
    "time": "Thu Dec 05 15:25:16 2024 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Dec 05 15:25:16 2024 +0000"
  },
  "message": "Improve workspace discovery logic (#3030)\n\nPreviously we were assuming that any crate with a path dep lives in a\nworkspace, and any that doesn\u0027t isn\u0027t.\n\nThis isn\u0027t correct logic.\nhttps://doc.rust-lang.org/cargo/reference/workspaces.html describes the\nspecification. We do filesystem traversal to detect implicit members.\nThis is a little more expensive, but much more correct.\n\nThis is a precursor for supporting path dependencies - the current\nincorrect logic incorrectly identifies any Cargo.toml file containing a\npath dependency as expecting to live in a workspace, which breaks some\nuse-cases.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d837a2a73b651c90c061c39255b64b98418f0ccf",
      "old_mode": 33188,
      "old_path": "MODULE.bazel",
      "new_id": "b2121e484e8b31ecce46e6d29708394e2d457f70",
      "new_mode": 33188,
      "new_path": "MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "0979fe1a5293a6144e175f14551c961a4ba6e634",
      "old_mode": 33188,
      "old_path": "crate_universe/3rdparty/crates/BUILD.bazel",
      "new_id": "9d1640c46a15e3e85147c3d096b0d66cc569060d",
      "new_mode": 33188,
      "new_path": "crate_universe/3rdparty/crates/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "06e1d4f82857d4059bbd1947a7932331f847d556",
      "old_mode": 33188,
      "old_path": "crate_universe/3rdparty/crates/BUILD.gix-features-0.38.2.bazel",
      "new_id": "6b8a60e3cc8a524cfc16ae1892b26ce046761e8a",
      "new_mode": 33188,
      "new_path": "crate_universe/3rdparty/crates/BUILD.gix-features-0.38.2.bazel"
    },
    {
      "type": "modify",
      "old_id": "7a00110357ebe9caef22971f5d4276f5bccfa027",
      "old_mode": 33188,
      "old_path": "crate_universe/3rdparty/crates/BUILD.globwalk-0.8.1.bazel",
      "new_id": "4ce25fc6ef33a667c5b84c6a8bf0a238f3b73fcd",
      "new_mode": 33188,
      "new_path": "crate_universe/3rdparty/crates/BUILD.globwalk-0.8.1.bazel"
    },
    {
      "type": "modify",
      "old_id": "4af93d1664af9aeef35e1cffa04a961e01927639",
      "old_mode": 33188,
      "old_path": "crate_universe/3rdparty/crates/BUILD.ignore-0.4.18.bazel",
      "new_id": "81b790484b4892818344d20de48a4088e8e1aaf7",
      "new_mode": 33188,
      "new_path": "crate_universe/3rdparty/crates/BUILD.ignore-0.4.18.bazel"
    },
    {
      "type": "rename",
      "old_id": "e0330a89fb1193610900094c1ac430a8ac9b6523",
      "old_mode": 33188,
      "old_path": "crate_universe/3rdparty/crates/BUILD.walkdir-2.3.3.bazel",
      "new_id": "31d600e9df452eff85297e4aa0836e43b1feffb5",
      "new_mode": 33188,
      "new_path": "crate_universe/3rdparty/crates/BUILD.walkdir-2.5.0.bazel",
      "score": 99
    },
    {
      "type": "modify",
      "old_id": "a48ffc1d01c166de508c123f22f6e4e69ffd1e60",
      "old_mode": 33188,
      "old_path": "crate_universe/3rdparty/crates/defs.bzl",
      "new_id": "6f59105f6ffd0879c356ea6b42e413230a9ff65b",
      "new_mode": 33188,
      "new_path": "crate_universe/3rdparty/crates/defs.bzl"
    },
    {
      "type": "modify",
      "old_id": "3e9dcc12bb1f5ef84ce2920192683b2efbf4e687",
      "old_mode": 33188,
      "old_path": "crate_universe/Cargo.lock",
      "new_id": "61808076bb850980c55cd4b5fe3a6e1d663ebf34",
      "new_mode": 33188,
      "new_path": "crate_universe/Cargo.lock"
    },
    {
      "type": "modify",
      "old_id": "28716ebaebca3c1d9fdf8658accafd06a1e8c1ad",
      "old_mode": 33188,
      "old_path": "crate_universe/Cargo.toml",
      "new_id": "5f1d73093ed66aed6c64c50111cf365f14d59ebc",
      "new_mode": 33188,
      "new_path": "crate_universe/Cargo.toml"
    },
    {
      "type": "modify",
      "old_id": "279b9d703e191fb8f0e7daa38f330f0d9a039f59",
      "old_mode": 33188,
      "old_path": "crate_universe/extensions.bzl",
      "new_id": "a224cc122482982a723932920892c94c58817b1e",
      "new_mode": 33188,
      "new_path": "crate_universe/extensions.bzl"
    },
    {
      "type": "modify",
      "old_id": "6234510127e952cf2cd440ca06d4587c595e6b5c",
      "old_mode": 33188,
      "old_path": "crate_universe/private/splicing_utils.bzl",
      "new_id": "c9ccdb77f1139a0683a16ec208d034c7c4192d0d",
      "new_mode": 33188,
      "new_path": "crate_universe/private/splicing_utils.bzl"
    },
    {
      "type": "modify",
      "old_id": "bea5cc28f946a90ecc6bd79776bc353f6cc63b02",
      "old_mode": 33188,
      "old_path": "crate_universe/private/srcs.bzl",
      "new_id": "53f9e7b8cd68b86bf42fc54cc0d9e034fe245e06",
      "new_mode": 33188,
      "new_path": "crate_universe/private/srcs.bzl"
    },
    {
      "type": "modify",
      "old_id": "bc9da74c829016d2d49a12adbdb451e436ae2bac",
      "old_mode": 33188,
      "old_path": "crate_universe/src/cli/splice.rs",
      "new_id": "c47fcd3a8bbf3331c67b12b878fcf714c9035000",
      "new_mode": 33188,
      "new_path": "crate_universe/src/cli/splice.rs"
    },
    {
      "type": "modify",
      "old_id": "f80e119447220c9ed4f49010c2f5342078a7b771",
      "old_mode": 33188,
      "old_path": "crate_universe/src/cli/vendor.rs",
      "new_id": "ee2fa83b60fd324352fd35297cd2d844d27751b5",
      "new_mode": 33188,
      "new_path": "crate_universe/src/cli/vendor.rs"
    },
    {
      "type": "modify",
      "old_id": "a2e6a662b0daa9094802cb2a8c2f185f4b0505b4",
      "old_mode": 33188,
      "old_path": "crate_universe/src/metadata.rs",
      "new_id": "729c88228c78f5f6180a2c116b21f539e3fd4436",
      "new_mode": 33188,
      "new_path": "crate_universe/src/metadata.rs"
    },
    {
      "type": "modify",
      "old_id": "8d2555f6a899e170ac71dff9a583639e2ba57953",
      "old_mode": 33188,
      "old_path": "crate_universe/src/metadata/cargo_bin.rs",
      "new_id": "7d00dc72e2960a667eed24ed48445bc315140a51",
      "new_mode": 33188,
      "new_path": "crate_universe/src/metadata/cargo_bin.rs"
    },
    {
      "type": "modify",
      "old_id": "8908db898fcd5b184bdc0ad37f20c051caface6d",
      "old_mode": 33188,
      "old_path": "crate_universe/src/metadata/cargo_tree_resolver.rs",
      "new_id": "eaf42f848d445a9e12dab5e1ef7d2de100df3f52",
      "new_mode": 33188,
      "new_path": "crate_universe/src/metadata/cargo_tree_resolver.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "51eb0fd23303093a8247593acd205cfb3284cf74",
      "new_mode": 33188,
      "new_path": "crate_universe/src/metadata/workspace_discoverer.rs"
    },
    {
      "type": "modify",
      "old_id": "7f0560f47d0fc03018169942269288474af318ad",
      "old_mode": 33188,
      "old_path": "crate_universe/src/splicing.rs",
      "new_id": "92f7d6e05a8d770007ec82bc189d11d6fb55048f",
      "new_mode": 33188,
      "new_path": "crate_universe/src/splicing.rs"
    },
    {
      "type": "modify",
      "old_id": "8b4b7ea84fb9e0bd4f1fee7f75fae1c18260bb7b",
      "old_mode": 33188,
      "old_path": "crate_universe/src/splicing/splicer.rs",
      "new_id": "bfc3d7d84e16d40f6c01abb989cb576e30960981",
      "new_mode": 33188,
      "new_path": "crate_universe/src/splicing/splicer.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "14bc9afb2403c7190b9aeaae2f0a088948af5645",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/non-ws/Cargo.toml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7a11a969c037e00a796aafeff6258501ec15e9a",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/non-ws/src/main.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f1cc7144e3106b6f36b921d96be1e9a1184750d3",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/symlinked/Cargo.toml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7a11a969c037e00a796aafeff6258501ec15e9a",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/symlinked/src/main.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "15f10821b196c19383499402d52fbcf4c68e5ffa",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws1/Cargo.toml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7a11a969c037e00a796aafeff6258501ec15e9a",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws1/src/main.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "aaf6ae258fd947ddf2db7439f62c7473edfa3973",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws1/ws1c1/Cargo.toml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7a11a969c037e00a796aafeff6258501ec15e9a",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws1/ws1c1/src/main.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7854ddced85ee928e300e925666823a535e105e5",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws1/ws1c1/ws1c1c1/Cargo.toml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7a11a969c037e00a796aafeff6258501ec15e9a",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws1/ws1c1/ws1c1c1/src/main.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "530ad7fc1a8ef8c08892f517b60c454eeda307d8",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws1/ws1c2/Cargo.toml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7a11a969c037e00a796aafeff6258501ec15e9a",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws1/ws1c2/src/main.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "58fe97c9c140d965654513e7b47321777c18de26",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws2/Cargo.toml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7a11a969c037e00a796aafeff6258501ec15e9a",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws2/src/main.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fbae0ef0e9804c4c493ccc157f0ec80af1aefbe7",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws2/ws2c1/Cargo.toml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7a11a969c037e00a796aafeff6258501ec15e9a",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws2/ws2c1/src/main.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "559086fa342be667016940cdee49979125a0e87b",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws2/ws2excluded/Cargo.toml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7a11a969c037e00a796aafeff6258501ec15e9a",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws2/ws2excluded/src/main.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4a502721412b0878d99a8b8ac68585651c1534b9",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws2/ws2excluded/ws2excluded2/Cargo.toml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7a11a969c037e00a796aafeff6258501ec15e9a",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws2/ws2excluded/ws2excluded2/src/main.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e4c6f023d6e46a54a1eb7e9b428faaf02609de65",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws2/ws2excluded/ws2included/Cargo.toml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e7a11a969c037e00a796aafeff6258501ec15e9a",
      "new_mode": 33188,
      "new_path": "crate_universe/test_data/workspace_examples/ws2/ws2excluded/ws2included/src/main.rs"
    },
    {
      "type": "modify",
      "old_id": "ac4595273460e8ed14b03ecb236c59387c07fbe8",
      "old_mode": 33188,
      "old_path": "crate_universe/tests/cargo_integration_test.rs",
      "new_id": "49b739b8d2254899b35497580bfa1053f26cb897",
      "new_mode": 33188,
      "new_path": "crate_universe/tests/cargo_integration_test.rs"
    },
    {
      "type": "modify",
      "old_id": "34fdf16a8e0e5305cbce4782ddac993fc5b8aea0",
      "old_mode": 33188,
      "old_path": "examples/crate_universe_local_path/MODULE.bazel",
      "new_id": "33111a9d55175181b50ca934f139894d1b33f907",
      "new_mode": 33188,
      "new_path": "examples/crate_universe_local_path/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "8621b7a45793e04ff22ee80abfabe5ecdb1766d3",
      "old_mode": 33261,
      "old_path": "examples/crate_universe_local_path/vendor_lazy_static.sh",
      "new_id": "4f81d5aee4f96693539fe20097a9c12521c4337d",
      "new_mode": 33261,
      "new_path": "examples/crate_universe_local_path/vendor_lazy_static.sh"
    }
  ]
}
