)]}'
{
  "log": [
    {
      "commit": "8edb00c990e563e6f91b278a212f2edf877cf763",
      "tree": "dcd6c0fb2ce82fcb5b43ed47dc74879cfe71b647",
      "parents": [
        "9dbc027b5f540bcf23c968398f8a70e92abd56cd"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 11 17:21:44 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Jun 12 09:40:37 2009 -0700"
      },
      "message": "edify extensions for OTA package installation, part 2\n\nAdds more edify functions for OTAs:\n\n  is_mounted getprop apply_patch apply_patch_check apply_patch_space\n  write_raw_image write_firmware_image package_extract_file\n\nThis allows us to install radios, hboots, boot images, and install\nincremental OTA packages.\n\nFixes a couple of dumb bugs in edify itself:\n\n  - we were doubling the size of the function table each time it was\n    *not* full, rather than each time it was full\n\n  - \"no such function\" errors weren\u0027t visible to the parser, so they\n    didn\u0027t prevent execution of the script.\n"
    },
    {
      "commit": "9931f7f3c1288171319e9ff7d053ebaad07db720",
      "tree": "42ae5b40309f6ea3410c5ad496f81368675274f7",
      "parents": [
        "9b9c2114bd7d02200ce43cb9ec513473079dfad9"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Jun 10 14:11:53 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 11 16:25:29 2009 -0700"
      },
      "message": "edify extensions for OTA package installation, part 1\n\nAdds the following edify functions:\n\n  mount unmount format show_progress delete delete_recursive\n  package_extract symlink set_perm set_perm_recursive\n\nThis set is enough to extract and install the system part of a (full)\nOTA package.\n\nAdds the updater binary that extracts an edify script from the OTA\npackage and then executes it.  Minor changes to the edify core (adds a\nsleep() builtin for debugging, adds \".\" to the set of characters that\ncan appear in an unquoted string).\n"
    },
    {
      "commit": "37bee62aefb5ac10716054edf482fd37078f1427",
      "tree": "793d29d81698fc25eda435ae577b22bc2f70362d",
      "parents": [
        "f28c916e73ee9f643c67c70d059c70381d774cb0"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Jun 08 17:35:39 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Jun 09 17:37:19 2009 -0700"
      },
      "message": "core of edify, an eventual replacement for amend\n\nEdify is a simple scripting language for OTA installation, to be used\nwhen we move to OTAs being installed via binaries shipped with the\npackage.\n"
    }
  ]
}
