)]}'
{
  "commit": "c22c43da2a7fe0a0e62090d2c1d6a67b9a715a8c",
  "tree": "0b014ba9f98992d9579aabdb490963e57efb1ba5",
  "parents": [
    "a43cecc1e205555938ba82c64d30c9bb13ef747d"
  ],
  "author": {
    "name": "Michael Bolin",
    "email": "mbolin@fb.com",
    "time": "Wed Oct 30 12:23:08 2013 -0700"
  },
  "committer": {
    "name": "Michael Bolin",
    "email": "mbolin@fb.com",
    "time": "Wed Oct 30 13:52:47 2013 -0700"
  },
  "message": "Replace InputRule with Path.\n\nSummary:\nUpdated `ConcurrentMapFileHashCache` to use a `LoadingCache` to maintain the\nmapping from `Path` to `HashCode`.\n\nPreviously, `InputRule` contained four fields (`File`, `BuildTarget`, `ListenableFuture`, `RuleKey`).\nWe had one of these for potentially every file in a project. That is a large potential for\nwasted memory. The existence of `InputRule` also required us to persist some kludginess in\n`BuildTarget`.\n\nThis diff removes the hacks from `BuildTarget` and reclaims potentially a ton of memory.\nBy using a `LoadingCache`, we do not have to worry about the same input file being sha1\u0027d\nmultiple times. We can also stop passing around references to a pathResolver in many places\nand rely on `Path` being a path relative to the project root.\n\nTest Plan: Sandcastle builds.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "48298b83667c849794b56553684419c397d12ffa",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/cli/AuditInputCommand.java",
      "new_id": "95174b1e81d7405c979e88d650b0df8e20c8887a",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/cli/AuditInputCommand.java"
    },
    {
      "type": "modify",
      "old_id": "0f44e1dba94f6c76121f8baf1a5c37502bda51ea",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/cli/AuditOwnerCommand.java",
      "new_id": "2fc63c516375a05e784d886e5fc60243f961eb66",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/cli/AuditOwnerCommand.java"
    },
    {
      "type": "modify",
      "old_id": "28676a2fb21d98d003bf238eea87147345f48574",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/cli/Main.java",
      "new_id": "37446889ab48679551ca8baeefea6ace0ecbaf62",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/cli/Main.java"
    },
    {
      "type": "modify",
      "old_id": "3e69339ed3cb82663d0f4086d925ff435be7d192",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/cli/TargetsCommand.java",
      "new_id": "5f95da24693915bc05e6ff49e5f33146141ed094",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/cli/TargetsCommand.java"
    },
    {
      "type": "modify",
      "old_id": "8a4632cdb4a511934aef5987dcbacaaa582eb97d",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/model/BuildTarget.java",
      "new_id": "d7d4b585876233cd30e05728c2f04d1ae2bb8dd7",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/model/BuildTarget.java"
    },
    {
      "type": "modify",
      "old_id": "ee147f563f5ad595ae570cf217db28a57b17af4a",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/rules/AbstractCachingBuildRule.java",
      "new_id": "774dfec645c56fe4a28260fbd108b005800cdfd6",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/rules/AbstractCachingBuildRule.java"
    },
    {
      "type": "modify",
      "old_id": "a68b728816a1b5a8c8f5b2ea2aac3c9ab41cc1a2",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/rules/BUCK",
      "new_id": "a92ba22f6b157b18409c4e816f10f9c8c20678d1",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/rules/BUCK"
    },
    {
      "type": "modify",
      "old_id": "57e0c69007474ceb0d4cd649984e31730d6627c9",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/rules/BuildRule.java",
      "new_id": "ab745ffad8b04b94534dab148b54035cf27e21f7",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/rules/BuildRule.java"
    },
    {
      "type": "modify",
      "old_id": "385ada09a9aeddc520d66e0b1118fe2134a1a5fb",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/rules/BuildRuleSuccess.java",
      "new_id": "70358889389b397af310c1e7c9c58eff3cda2e4c",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/rules/BuildRuleSuccess.java"
    },
    {
      "type": "modify",
      "old_id": "2d6a4bff413fa01b1af91364d3b8511198046855",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/rules/BuildRuleType.java",
      "new_id": "e85c016af5889fdfb3b02458d0d5bc6f85185021",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/rules/BuildRuleType.java"
    },
    {
      "type": "modify",
      "old_id": "0ef11cfa9a028188b428ce6a5e20c8e3d7fafb07",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/rules/Buildable.java",
      "new_id": "49b80429c0dccdc845db7b23a8d3e9a526319163",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/rules/Buildable.java"
    },
    {
      "type": "delete",
      "old_id": "510522a5eaf55849ea61bf1ede8d1bea301f327e",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/rules/InputRule.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "5973a1f5b8b7ea2abda900339debd2b01ce4cf43",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/rules/ProjectConfigRule.java",
      "new_id": "bc4cf116c2d626841fe7c7bf56152e4afe74b39b",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/rules/ProjectConfigRule.java"
    },
    {
      "type": "modify",
      "old_id": "71eb0d49d2b5866fb77bc2f8d15863f93ab822e1",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/rules/RuleKey.java",
      "new_id": "b14012d73d3d1d0f91b933bd00c924411654d3cc",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/rules/RuleKey.java"
    },
    {
      "type": "delete",
      "old_id": "e9ff13d6888f985b9659908716d3517eb963754f",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/util/ConcurrentMapFileHashCache.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9032b84cdac5d409fc7d4f91c99554296f8b6459",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/util/DefaultFileHashCache.java"
    },
    {
      "type": "modify",
      "old_id": "51a5dc5b3a29cdde31260f50cd040ddcf6586931",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/util/FileHashCache.java",
      "new_id": "3d48a32f16d4c2b6f1cdaa5962c6f682f0f97f71",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/util/FileHashCache.java"
    },
    {
      "type": "modify",
      "old_id": "dff2c96d50e80621fcaf92e7980ca9ee840037ca",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/util/MorePaths.java",
      "new_id": "fcaca0ac5960b566e7ef1961db99b91f2b170078",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/util/MorePaths.java"
    },
    {
      "type": "modify",
      "old_id": "50b5ccd6c06dd87ef25acede3c93026bd6a5eb40",
      "old_mode": 33188,
      "old_path": "src/com/facebook/buck/util/NullFileHashCache.java",
      "new_id": "de78b52582c8518fda84ac616c512e50f6555a66",
      "new_mode": 33188,
      "new_path": "src/com/facebook/buck/util/NullFileHashCache.java"
    },
    {
      "type": "modify",
      "old_id": "4ed4b6f42e75c678dbdaea605b810e5db9d72d3e",
      "old_mode": 33188,
      "old_path": "test/com/facebook/buck/cli/AuditOwnerCommandTest.java",
      "new_id": "044e41efbb8637c5dda3a09903dba91d5cec701f",
      "new_mode": 33188,
      "new_path": "test/com/facebook/buck/cli/AuditOwnerCommandTest.java"
    },
    {
      "type": "modify",
      "old_id": "0c6b38e1633caf53e5d2b09b32f114478f0ff150",
      "old_mode": 33188,
      "old_path": "test/com/facebook/buck/cli/TargetsCommandTest.java",
      "new_id": "baaa93ca8263a7ca432a9e51ef9ce8f2d0b98cab",
      "new_mode": 33188,
      "new_path": "test/com/facebook/buck/cli/TargetsCommandTest.java"
    },
    {
      "type": "modify",
      "old_id": "a27a3f05d076ca0000d02d01faa607599f6c05b9",
      "old_mode": 33188,
      "old_path": "test/com/facebook/buck/rules/AbstractBuildRuleTest.java",
      "new_id": "361a929c27d8c2c4e167f30f591c926e7092c858",
      "new_mode": 33188,
      "new_path": "test/com/facebook/buck/rules/AbstractBuildRuleTest.java"
    },
    {
      "type": "modify",
      "old_id": "8617c7b76f34b1be890d9e358082e2dbd190e926",
      "old_mode": 33188,
      "old_path": "test/com/facebook/buck/rules/AbstractCachingBuildRuleTest.java",
      "new_id": "57f7ce495f54b2942b320640673209490ca263d8",
      "new_mode": 33188,
      "new_path": "test/com/facebook/buck/rules/AbstractCachingBuildRuleTest.java"
    },
    {
      "type": "modify",
      "old_id": "527b4183c2d7084d5cfa0324c7e8559500a797f8",
      "old_mode": 33188,
      "old_path": "test/com/facebook/buck/rules/BUCK",
      "new_id": "7ee4b124b0f6a0b636b443e78ef222beb7a9c319",
      "new_mode": 33188,
      "new_path": "test/com/facebook/buck/rules/BUCK"
    },
    {
      "type": "modify",
      "old_id": "46d1ad3d03aa45782a291ef854ae0fc80dc182d8",
      "old_mode": 33188,
      "old_path": "test/com/facebook/buck/rules/DirArtifactCacheTest.java",
      "new_id": "5053ade4ec7f36a30cab4860b38b96b2cee57a5d",
      "new_mode": 33188,
      "new_path": "test/com/facebook/buck/rules/DirArtifactCacheTest.java"
    },
    {
      "type": "modify",
      "old_id": "04e67067579771970e0f07b59e25ffbc77064630",
      "old_mode": 33188,
      "old_path": "test/com/facebook/buck/rules/FakeBuildRule.java",
      "new_id": "a7250af0010f671c0c6f134e5742fc716529c3e7",
      "new_mode": 33188,
      "new_path": "test/com/facebook/buck/rules/FakeBuildRule.java"
    },
    {
      "type": "delete",
      "old_id": "f11027f5fb0d3132a64fa5ecf6d4669021228010",
      "old_mode": 33188,
      "old_path": "test/com/facebook/buck/rules/FakeInputRule.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "f88bca3987072bdf88037b473c4ae7c689862006",
      "old_mode": 33188,
      "old_path": "test/com/facebook/buck/rules/FakeTestRule.java",
      "new_id": "f3b6f26bace441a38a3874ebf3ca8e87601fff6f",
      "new_mode": 33188,
      "new_path": "test/com/facebook/buck/rules/FakeTestRule.java"
    },
    {
      "type": "delete",
      "old_id": "90869014702de84945488c030a8e056c6590c22c",
      "old_mode": 33188,
      "old_path": "test/com/facebook/buck/rules/InputRuleTest.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "12d09ca94be7b60dc497eda4f2893788aff27c66",
      "old_mode": 33188,
      "old_path": "test/com/facebook/buck/rules/RuleKeyTest.java",
      "new_id": "727c6f1832c8706a82b2d1ca480d68f5e417462c",
      "new_mode": 33188,
      "new_path": "test/com/facebook/buck/rules/RuleKeyTest.java"
    },
    {
      "type": "modify",
      "old_id": "fa11daf4b1deb7013be04d7d6023e3d03c3b89a4",
      "old_mode": 33188,
      "old_path": "test/com/facebook/buck/testutil/BUCK",
      "new_id": "ab32c43fbd31eb6aeee2b24d369e4b8dc5ac3a87",
      "new_mode": 33188,
      "new_path": "test/com/facebook/buck/testutil/BUCK"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f95a9973b6e8cba004019a900dc8dadda56cfa6b",
      "new_mode": 33188,
      "new_path": "test/com/facebook/buck/testutil/FakeFileHashCache.java"
    },
    {
      "type": "modify",
      "old_id": "8c15eb525f5d94983cdcf74c4acf7160cdcfec93",
      "old_mode": 33188,
      "old_path": "test/com/facebook/buck/util/ConcurrentMapFileHashCacheTest.java",
      "new_id": "d75340b474e131fa2452d4659a39cbaabc6c09da",
      "new_mode": 33188,
      "new_path": "test/com/facebook/buck/util/ConcurrentMapFileHashCacheTest.java"
    }
  ]
}
