)]}'
{
  "commit": "bab4ef56d7803f3a50ccfaca2729509338fcbb23",
  "tree": "3d3c1ad103f88f6ca60c46fc31872dee40244b3e",
  "parents": [
    "d6fb3081d9ddd6384d7e764308e2967ce672d3e5"
  ],
  "author": {
    "name": "Adam Lesinski",
    "email": "adamlesinski@google.com",
    "time": "Thu Jun 01 15:22:57 2017 -0700"
  },
  "committer": {
    "name": "Adam Lesinski",
    "email": "adamlesinski@google.com",
    "time": "Fri Jun 02 16:48:38 2017 -0700"
  },
  "message": "AAPT2: Allow undefined resources (placeholders)\n\nA resource defined like so:\n\n\u003citem type\u003d\"drawable\" name\u003d\"foo\" /\u003e\n\nshould be assigned the value @null.\n\nThe only exception is for \u003cstring\u003e resources, which are given the\nempty string value (since \u003cstring\u003e\u003c/string\u003e is ambiguous). The decision\nto use \"\" is based off the fact that old AAPT used to assign \"\" to all\nundefined resources, even non-string ones.\n\nBug: 38425050\nTest: make aapt2_tests\nChange-Id: Ib3e0f6f83d16ddd8b279c9fd44a07a37867b85e9\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "064d86411463380b89b93080534c4b18013fbbb3",
      "old_mode": 33188,
      "old_path": "tools/aapt2/Android.bp",
      "new_id": "1dc47f88ab927b8145b3e15400c1234e08c10656",
      "new_mode": 33188,
      "new_path": "tools/aapt2/Android.bp"
    },
    {
      "type": "modify",
      "old_id": "084325a44d93ba448095500279fe399aaf7694ab",
      "old_mode": 33188,
      "old_path": "tools/aapt2/ResourceParser.cpp",
      "new_id": "9a37913f0edcb11d6e2049bf65a0521b770fb62f",
      "new_mode": 33188,
      "new_path": "tools/aapt2/ResourceParser.cpp"
    },
    {
      "type": "modify",
      "old_id": "8258019958624038a6ba4dcd626b14bbc1ec422d",
      "old_mode": 33188,
      "old_path": "tools/aapt2/ResourceParser.h",
      "new_id": "5631dc2ad29c472b7a8a8de4caf86ae7a2332caa",
      "new_mode": 33188,
      "new_path": "tools/aapt2/ResourceParser.h"
    },
    {
      "type": "modify",
      "old_id": "e60ef66a21dbdcde83a228d0c155ec93088e9f1c",
      "old_mode": 33188,
      "old_path": "tools/aapt2/ResourceParser_test.cpp",
      "new_id": "5352ca8679b3e055a181fa2ea3a23758ebb1d724",
      "new_mode": 33188,
      "new_path": "tools/aapt2/ResourceParser_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "818c8cec30f9e28e4ee49ecb0ff5906364931358",
      "old_mode": 33188,
      "old_path": "tools/aapt2/ResourceUtils.cpp",
      "new_id": "deeef6ebbcb75c124e0cc5dc47c294c23a2d4966",
      "new_mode": 33188,
      "new_path": "tools/aapt2/ResourceUtils.cpp"
    },
    {
      "type": "modify",
      "old_id": "da0fc8ee314ae5fdd3dbbf448fba8e461beab487",
      "old_mode": 33188,
      "old_path": "tools/aapt2/ResourceUtils.h",
      "new_id": "36f6c2bda8f81e133b5140060fb0ccb0153a3603",
      "new_mode": 33188,
      "new_path": "tools/aapt2/ResourceUtils.h"
    },
    {
      "type": "modify",
      "old_id": "048c69252e472591068d9e1e62df84d28b459ba5",
      "old_mode": 33188,
      "old_path": "tools/aapt2/ResourceUtils_test.cpp",
      "new_id": "cdc34f1ec752f877afc57ed7b48bd15ebb44b13a",
      "new_mode": 33188,
      "new_path": "tools/aapt2/ResourceUtils_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "abfdec48df67b4c523cf685b71c8f653467e4c96",
      "old_mode": 33188,
      "old_path": "tools/aapt2/ResourceValues.cpp",
      "new_id": "e808984c75f531e0a8197444bf4330af5be5c797",
      "new_mode": 33188,
      "new_path": "tools/aapt2/ResourceValues.cpp"
    },
    {
      "type": "modify",
      "old_id": "e154d93b6f8575f915fe5535f87ae4406860bf75",
      "old_mode": 33188,
      "old_path": "tools/aapt2/ResourceValues_test.cpp",
      "new_id": "69f8e67530f699a92fff45f281d8f23200fdbbb0",
      "new_mode": 33188,
      "new_path": "tools/aapt2/ResourceValues_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "5104f8212d8be91b8121e406bf6596baf6d1049a",
      "old_mode": 33188,
      "old_path": "tools/aapt2/integration-tests/AppOne/res/values/test.xml",
      "new_id": "2c9e8b877565759d350978227ee57844cc9e38bc",
      "new_mode": 33188,
      "new_path": "tools/aapt2/integration-tests/AppOne/res/values/test.xml"
    },
    {
      "type": "modify",
      "old_id": "18498e3e3c67d2894120a5d159e9ac610da796ee",
      "old_mode": 33188,
      "old_path": "tools/aapt2/link/ReferenceLinker.cpp",
      "new_id": "a8e510cd6140be2d529d93b0bb4392b7cf5a5b27",
      "new_mode": 33188,
      "new_path": "tools/aapt2/link/ReferenceLinker.cpp"
    },
    {
      "type": "modify",
      "old_id": "1d0041b2ac5a538a87b2db94ad09c31e7c45d2e0",
      "old_mode": 33188,
      "old_path": "tools/aapt2/proto/TableProtoDeserializer.cpp",
      "new_id": "4b5619235c06c04e143ae80e0715f86ea9593556",
      "new_mode": 33188,
      "new_path": "tools/aapt2/proto/TableProtoDeserializer.cpp"
    },
    {
      "type": "modify",
      "old_id": "de10bb80bf7e6b0971fa54f830654e6e4c2693b7",
      "old_mode": 33188,
      "old_path": "tools/aapt2/proto/TableProtoSerializer.cpp",
      "new_id": "d87d64e1cb46b913566255681af21bad9155f02b",
      "new_mode": 33188,
      "new_path": "tools/aapt2/proto/TableProtoSerializer.cpp"
    },
    {
      "type": "modify",
      "old_id": "02acedbd8ac5a1a5992da355d453fb0eb0caafea",
      "old_mode": 33188,
      "old_path": "tools/aapt2/test/Builders.h",
      "new_id": "f3da780cacbdf3ec2d6e3f5794639e5f095ebe19",
      "new_mode": 33188,
      "new_path": "tools/aapt2/test/Builders.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0fabbc4070e7f6bc6be790394f3463b15ae61c1a",
      "new_mode": 33188,
      "new_path": "tools/aapt2/test/Common.cpp"
    },
    {
      "type": "modify",
      "old_id": "a937de8869a62b032f4969907574dd1d5224a9b1",
      "old_mode": 33188,
      "old_path": "tools/aapt2/test/Common.h",
      "new_id": "05851485e21648a45b0a818d14e48a85b5eb0faf",
      "new_mode": 33188,
      "new_path": "tools/aapt2/test/Common.h"
    }
  ]
}
