)]}'
{
  "commit": "eec2bfb53b9967cd40d137cbc013100ddb888640",
  "tree": "54218bcadfc4f846b9b80621c134709c75d5b6dc",
  "parents": [
    "4bf9c82857e7dbfe99d1d2a5cec11d17b39cc438"
  ],
  "author": {
    "name": "Neil Fuller",
    "email": "nfuller@google.com",
    "time": "Tue Dec 13 16:26:02 2016 +0000"
  },
  "committer": {
    "name": "Neil Fuller",
    "email": "nfuller@google.com",
    "time": "Tue Jan 10 14:38:35 2017 +0000"
  },
  "message": "Change tzdatacheck to account for bundle format changes\n\nChange tzdatacheck to account for bundle format changes:\nThe update bundle now contains a bundle_version file to enable\nus to detect changes to the format of the files in addition to\njust checking the IANA rules version. The version will be\nincremented as we make incompatible changes to the structure\nof the bundle (e.g. the files present or their names), the\nfile formats or the file contents.\n\nThe old assumption was that a system image would typically\ncontain newer rules than had been pushed via ConfigUpdater\nand we\u0027d never get rid of the tzdata file from the bundle\ncontent.\n\nIf Android makes rule updates routinely or makes substantial\nchanges to the timezone data files between major releases\nthen this assumption becomes (even more) untenable.\n\nThe bundle_version file in the bundle is expected to contain\nthe ASCII bytes for \"001\". This could be extended\nin a future version to include minor versioning information\n(e.g. \"002.001\") and so the code here only reads the first\nthree bytes. This allows for a future change to add the minor\nversion suffix and optionally increment the major version if\nrequired.\n\nSome error conditions that were previously treated as fatal\nare now handled more elegantly. Generally if things are not\nas expected with the installed bundle in /data tzdatacheck\nwill attempt to delete it. The return code of the binary is\nused to distinguish between failure cases, which will be\nused in a future automated test.\n\nSome of the ConfigUpdater deletion code has been temporarily\nretained (with a TODO) so the v2 of the installer code can be\nused with ConfigUpdater/ConfigInstaller and keep something\nlike the existing process working until we have replaced it\nwith some thing better.\n\nUsing the v2 installer code with ConfigInstaller is one\npossible fallback if the new distribution approach is not\ncompleted in time.\n\nBug: 31008728\nTest: Manual testing\nChange-Id: Ib253f7d4c9cd72d3e392754f4b787a98ec22bc53\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c1ab2ac4737b6dd9da0212dae470b018ad9cfdbb",
      "old_mode": 33188,
      "old_path": "tzdatacheck/tzdatacheck.cpp",
      "new_id": "fb5c84bb688c8c2740cf5b19bc060f7d7dcb65c5",
      "new_mode": 33188,
      "new_path": "tzdatacheck/tzdatacheck.cpp"
    }
  ]
}
