)]}'
{
  "commit": "e2b0a82be3885167e6e5d7e2900254af3f2b016f",
  "tree": "eb06dd6e4c1d18191638460e0935034a3b2830b2",
  "parents": [
    "a23d00a69a94fac2f7d3057955769f079fdc3a5e"
  ],
  "author": {
    "name": "James Farrell",
    "email": "jamesfarrell@google.com",
    "time": "Wed May 21 23:53:09 2025 +0000"
  },
  "committer": {
    "name": "James Farrell",
    "email": "jamesfarrell@google.com",
    "time": "Tue May 27 19:51:08 2025 +0000"
  },
  "message": "Use the feature resolver for imports and updates.\n\nAlso rework and improve the dependency differ to use the fact that the\nDependency type is hashable.\n\nGet rid of crate_tool/src/crates_io.rs because all functionality is now\nsuperseded by crates_io_util.\n\nTest: treehugger, cargo test, ./crate_tool analyze-updates ahash\nChange-Id: If7f5a7985afe032f966d13686de791500fafe6fc\n",
  "tree_diff": [
    {
      "type": "delete",
      "old_id": "0b7fda57b2135ed089781117204ed0272fac7f2e",
      "old_mode": 33188,
      "old_path": "tools/external_crates/crate_tool/src/crates_io.rs",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "20ca22a1cb08a02afbad2777c11c4cc824472bd6",
      "old_mode": 33188,
      "old_path": "tools/external_crates/crate_tool/src/lib.rs",
      "new_id": "037b9b0041ae76c846feb0c5c33fa9527eb98986",
      "new_mode": 33188,
      "new_path": "tools/external_crates/crate_tool/src/lib.rs"
    },
    {
      "type": "modify",
      "old_id": "3c62a550200f2b5cd7f436a2b7962fc020739686",
      "old_mode": 33188,
      "old_path": "tools/external_crates/crate_tool/src/managed_repo.rs",
      "new_id": "6e44974b881e567bc1feb88e72d2e8eaf836d888",
      "new_mode": 33188,
      "new_path": "tools/external_crates/crate_tool/src/managed_repo.rs"
    },
    {
      "type": "modify",
      "old_id": "9bc542ab679da18009b8057c13c11e392eafcaed",
      "old_mode": 33188,
      "old_path": "tools/external_crates/crates_io_util/src/android_target.rs",
      "new_id": "5c6fe40a61fdd2fc3735cd9e66be80d9abe5a0a4",
      "new_mode": 33188,
      "new_path": "tools/external_crates/crates_io_util/src/android_target.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d020e044392ef95a5719cc7b55edc59f9c39ae42",
      "new_mode": 33188,
      "new_path": "tools/external_crates/crates_io_util/src/dependency.rs"
    },
    {
      "type": "modify",
      "old_id": "6e580c4df49afbab6a446530320fee59c00d168d",
      "old_mode": 33188,
      "old_path": "tools/external_crates/crates_io_util/src/dependency_diff.rs",
      "new_id": "29928124c099965fd404eaaefaf92e719199c7ff",
      "new_mode": 33188,
      "new_path": "tools/external_crates/crates_io_util/src/dependency_diff.rs"
    },
    {
      "type": "modify",
      "old_id": "0ee9d29fc730e5067aeafa6f2816015629ecbae5",
      "old_mode": 33188,
      "old_path": "tools/external_crates/crates_io_util/src/feature_resolver.rs",
      "new_id": "b79fab8c35240e4440989d2046d7856ddabad2ea",
      "new_mode": 33188,
      "new_path": "tools/external_crates/crates_io_util/src/feature_resolver.rs"
    },
    {
      "type": "modify",
      "old_id": "13d63af522484477eaafec80ff3643ed4954f04d",
      "old_mode": 33188,
      "old_path": "tools/external_crates/crates_io_util/src/lib.rs",
      "new_id": "a439490eb0ce76c3a94d19ace9f9f180b6322ae1",
      "new_mode": 33188,
      "new_path": "tools/external_crates/crates_io_util/src/lib.rs"
    },
    {
      "type": "modify",
      "old_id": "415096cf1c9775ff354c43043987491999d2a919",
      "old_mode": 33188,
      "old_path": "tools/external_crates/crates_io_util/tests/resolver_test.rs",
      "new_id": "e8853b64e10f3d10f2b6d66bc722fd428ec8df13",
      "new_mode": 33188,
      "new_path": "tools/external_crates/crates_io_util/tests/resolver_test.rs"
    }
  ]
}
