)]}'
{
  "log": [
    {
      "commit": "3ab130fa9e213e40983472571da246e197930a9d",
      "tree": "aa511ca4862bd15e31f9295cecda4356aca10bad",
      "parents": [
        "bf055bb1be6f1448af3c02ea88b505c32506c22e"
      ],
      "author": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Fri Feb 19 16:50:36 2010 -0800"
      },
      "committer": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Fri Feb 19 16:50:36 2010 -0800"
      },
      "message": "add missing files\n"
    },
    {
      "commit": "bf055bb1be6f1448af3c02ea88b505c32506c22e",
      "tree": "21ffbf887b641de3fa6661ed2ee323977d19de81",
      "parents": [
        "a3c2f735d7681aa1c0a927f2d45e08d86656dd09"
      ],
      "author": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Fri Feb 19 16:47:53 2010 -0800"
      },
      "committer": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Fri Feb 19 16:47:53 2010 -0800"
      },
      "message": "intetrate nandroid into recovery\n"
    },
    {
      "commit": "a3c2f735d7681aa1c0a927f2d45e08d86656dd09",
      "tree": "9d3c7de38896bb980c60c91739e55e9ef3157f64",
      "parents": [
        "841b2bf352cd4c8596d8062d97200390c1dec84c"
      ],
      "author": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Fri Feb 19 14:17:22 2010 -0800"
      },
      "committer": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Fri Feb 19 14:17:22 2010 -0800"
      },
      "message": "fix up back button and menu toggling\n"
    },
    {
      "commit": "841b2bf352cd4c8596d8062d97200390c1dec84c",
      "tree": "3b0e30192f1a0a46651f234e07139e2748cd100b",
      "parents": [
        "3a976a79bfa516644228bcd5ee447cab96deafb6"
      ],
      "author": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Mon Feb 15 01:45:38 2010 -0800"
      },
      "committer": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Mon Feb 15 01:45:38 2010 -0800"
      },
      "message": "Add static flash_image for recovery\n"
    },
    {
      "commit": "3a976a79bfa516644228bcd5ee447cab96deafb6",
      "tree": "75d3d0ea8aae26685b9fafb93aaf4d12b9ee405f",
      "parents": [
        "e923487ff6ae9978959abacf421e018bcb013c10"
      ],
      "author": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Sat Feb 13 15:33:49 2010 -0800"
      },
      "committer": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Sat Feb 13 15:33:49 2010 -0800"
      },
      "message": "power button toggles menu\n"
    },
    {
      "commit": "e923487ff6ae9978959abacf421e018bcb013c10",
      "tree": "104de702c94550f2176be8f6a2af8154d92d0f53",
      "parents": [
        "1f14c9a1f1dd29dbef6a96e051cd992a7aa593fc"
      ],
      "author": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Fri Feb 12 00:43:24 2010 -0800"
      },
      "committer": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Fri Feb 12 00:43:24 2010 -0800"
      },
      "message": "working recovery image!\n"
    },
    {
      "commit": "1f14c9a1f1dd29dbef6a96e051cd992a7aa593fc",
      "tree": "75745be1673c95a598e40484955cbb99c0ceb937",
      "parents": [
        "6060e5c6df717a8070ceeb9c72c3c5dafa29cdd7"
      ],
      "author": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Thu Feb 11 23:08:23 2010 -0800"
      },
      "committer": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Thu Feb 11 23:08:23 2010 -0800"
      },
      "message": "Need to call register_package_root prior to installing the package. The subsequent unregistering made me think that it was being registered at some point, but it was removed in the transition to eclair. The unregistration was dead code. It is being used now though.\n"
    },
    {
      "commit": "6060e5c6df717a8070ceeb9c72c3c5dafa29cdd7",
      "tree": "97ea1ca48fe3ed8758a275b892925ec5816640aa",
      "parents": [
        "4c1eed25738e2529ad5f785ca7eff29fa6d4ff4d"
      ],
      "author": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Thu Feb 11 22:27:06 2010 -0800"
      },
      "committer": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Thu Feb 11 22:27:06 2010 -0800"
      },
      "message": "update.zip somewhat working now...\n"
    },
    {
      "commit": "4c1eed25738e2529ad5f785ca7eff29fa6d4ff4d",
      "tree": "70eef2520b10baf46205d6e1e3336cc0acaea4cd",
      "parents": [
        "0d4ff2fcc6162c5996cca39349662d378c7c26c3"
      ],
      "author": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Thu Feb 11 18:59:58 2010 -0800"
      },
      "committer": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Thu Feb 11 18:59:58 2010 -0800"
      },
      "message": "Initial reintegration of legacy update process that used update-script\n"
    },
    {
      "commit": "0d4ff2fcc6162c5996cca39349662d378c7c26c3",
      "tree": "e477a026b3f3366b4d3fe44044b09d5c656a5115",
      "parents": [
        "89d385c4d9a0580c9712b571eb3d3ff6b88f9b9a"
      ],
      "author": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Mon Feb 08 15:05:21 2010 -0800"
      },
      "committer": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Wed Feb 10 12:10:02 2010 -0800"
      },
      "message": "allow alt-l or menu to bring up the recovery menu\n"
    },
    {
      "commit": "89d385c4d9a0580c9712b571eb3d3ff6b88f9b9a",
      "tree": "bafed9795448b51af673ebd428140bea7eab6601",
      "parents": [
        "22d79a5c5eab9c1e86ff2af210bb072689e2d630"
      ],
      "author": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Thu Feb 04 14:17:32 2010 -0800"
      },
      "committer": {
        "name": "Koushik K. Dutta",
        "email": "koushd@gmail.com",
        "time": "Wed Feb 10 12:10:01 2010 -0800"
      },
      "message": "allow mouse/trackball click for enter on touch only devices.\n"
    },
    {
      "commit": "22d79a5c5eab9c1e86ff2af210bb072689e2d630",
      "tree": "866d289588e7c19e5218ce5aafbf9430bb274e99",
      "parents": [
        "17a47098d2a4214397f8b30e2692c9487d7ab5ff"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Jan 12 16:18:33 2010 -0800"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Jan 13 10:07:28 2010 -0800"
      },
      "message": "make offsets in firmware update header not point to bad blocks\n\n(This is being cherry-picked from master.)\n\nhboot will apparently fail to install if the first block of the image\n(the one pointed to by the offset in the block 0 header) is a bad\nblock.  (Hopefully it handles subsequent bad blocks.)\n\nThis change makes the MTD write code keep track of the bad blocks it\nhas skipped over, so that the offset in the header can be adjusted to\nbe the address of the first successfully written block.\n\nhttp://b/2358012 - passion: failure to flash hboot (bad blocks?)\n"
    },
    {
      "commit": "17a47098d2a4214397f8b30e2692c9487d7ab5ff",
      "tree": "f96c3fc70526d98cb381629774f2f290fee2b168",
      "parents": [
        "c652e41d9173e299a8e1805ae1b2bba75a34ae12"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Dec 14 18:03:27 2009 -0800"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Dec 14 18:27:03 2009 -0800"
      },
      "message": "use MEMGETBADBLOCK to look for bad blocks when reading MTD partitions\n"
    },
    {
      "commit": "c652e41d9173e299a8e1805ae1b2bba75a34ae12",
      "tree": "46a2bc479e4982263bf08635e1e43f3f1b61b623",
      "parents": [
        "54ec81fe86225d5f3ee3ab16e3266ae88cd639fa"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Dec 08 15:30:09 2009 -0800"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Dec 08 15:30:09 2009 -0800"
      },
      "message": "fix cut-and-paste error in verifier\n\nOops.\n"
    },
    {
      "commit": "54ec81fe86225d5f3ee3ab16e3266ae88cd639fa",
      "tree": "3089f7cc4eace77d713d6a756305ee2335238f99",
      "parents": [
        "988500b615de24455e1fee69e72055bb1dca9c86",
        "1c8ca2e40b3c4b1a847332f90de7fef4046cb225"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 07 20:09:16 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Oct 07 20:09:16 2009 -0400"
      },
      "message": "Merge change I1c8ca2e4 into eclair\n\n* changes:\n  replace generic recovery icons\n"
    },
    {
      "commit": "988500b615de24455e1fee69e72055bb1dca9c86",
      "tree": "805fc4e7986e3a63ebe1de96f5d66dd3fa1f6549",
      "parents": [
        "f93d8166ef4c06f6ad71293ffa8a4ce469df4fa5"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Oct 06 14:41:38 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Oct 06 14:44:54 2009 -0700"
      },
      "message": "add terminator to recovery\u0027s getopt_long options array\n\nhttp://b/2170691 - recovery argument parsing is broken\n"
    },
    {
      "commit": "1c8ca2e40b3c4b1a847332f90de7fef4046cb225",
      "tree": "f878d262ce25741beec8b95b1106a242bbf5752f",
      "parents": [
        "f93d8166ef4c06f6ad71293ffa8a4ce469df4fa5"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Oct 02 15:42:31 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Oct 02 15:42:31 2009 -0700"
      },
      "message": "replace generic recovery icons\n"
    },
    {
      "commit": "f93d8166ef4c06f6ad71293ffa8a4ce469df4fa5",
      "tree": "e28c654dd352bf3bdd98b62cc4cba03ea23bbe2d",
      "parents": [
        "fd8fb0c49242af5147708f1a93ea3acba546555b"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Sep 22 15:16:02 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Sep 22 18:16:56 2009 -0700"
      },
      "message": "confirm before wiping user data in recovery\n\nWhen using the hidden menu to wipe data in recovery, confirm before\nstarting the wipe.  (This does not affect booting with the --wipe_data\nflag, or using Alt+W on dream with the menu hidden -- those still wipe\ndata immediately.)\n"
    },
    {
      "commit": "fd8fb0c49242af5147708f1a93ea3acba546555b",
      "tree": "6335e3fc41a5f5a3c4d251800033098d94bda0c8",
      "parents": [
        "60babf8ba766662cc0932e8271b67daa69cddd5f"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Sun Sep 20 14:10:27 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Sun Sep 20 14:10:27 2009 -0700"
      },
      "message": "reduce fraction of progress bar for verification\n\nReduce the fraction of the progress bar used for package verification\nfrom 50% to 25%:\n  - verification is faster than before due to sha1 improvements\n  - in eclair we\u0027re now verifying the compressed data rather than\n    decompressing it\n  - incremental packages (which is what most installs use) write more\n    data than is contained in the package.\n"
    },
    {
      "commit": "60babf8ba766662cc0932e8271b67daa69cddd5f",
      "tree": "d7d3e4f78d922b4c4475c1a3394b08eef4f9edd0",
      "parents": [
        "196c25c777daedbe2fe5a45171fb42e43ceed9af"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Sep 18 15:11:24 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Sep 18 15:11:24 2009 -0700"
      },
      "message": "delete files before symlinking; log error messages\n\nThe symlink() function should remove existing files before creating\nsymlinks, so scripts are idempotent.  Log messages when various system\ncalls fail (but don\u0027t make the whole script fail).\n"
    },
    {
      "commit": "196c25c777daedbe2fe5a45171fb42e43ceed9af",
      "tree": "3268e330b99b674b3cb4d8a8d03cb41035281953",
      "parents": [
        "a3f89eabb7ddcf44add8ce3b321ceab6d35289cb"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Sep 15 08:50:04 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Sep 15 08:50:04 2009 -0700"
      },
      "message": "don\u0027t complain if recovery icon is short\n\nIf the a recovery icon file is so short that we can\u0027t even read the\n8-byte header, put a message in the log but not on the device screen.\nWe intentionally have zero-length files for some icons on some devices,\nif they\u0027re never shown (eg, the firmware installation icons are only\nused on HTC devices).\n"
    },
    {
      "commit": "a3f89eabb7ddcf44add8ce3b321ceab6d35289cb",
      "tree": "6b82ff1904ef58ce74d4cee0359097446a66dc84",
      "parents": [
        "34c98df78a80881698f63ce0815f3e16823d85e0"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Sep 10 14:10:48 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Sep 10 14:20:53 2009 -0700"
      },
      "message": "add a run_program() function to edify\n\nHandy for producing debugging OTA packages (eg, running sqlite3 or\nwhatever in recovery).\n"
    },
    {
      "commit": "34c98df78a80881698f63ce0815f3e16823d85e0",
      "tree": "4b49e234a927329adfe8e59de8446a26303119a9",
      "parents": [
        "54e2e86c5740a2c7a02e95e94c4aff362a5502cf"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Aug 18 12:05:45 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Aug 18 12:05:45 2009 -0700"
      },
      "message": "do not merge: cherry-pick of c2d666bd4f6eb5f7a9f17b10435c161cb105b7c5 from master\n"
    },
    {
      "commit": "54e2e86c5740a2c7a02e95e94c4aff362a5502cf",
      "tree": "42fdf22f18dc4097c2f86cbd691fe6b1c8bd3820",
      "parents": [
        "0cf0e33b5fdb6eb871b64f5325ccd54339f62f01"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Aug 17 13:21:04 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Aug 17 13:21:04 2009 -0700"
      },
      "message": "do not merge: cherry-picked 60151a295ccf726238dc47456d80b427db6d6a38 from master branch\n"
    },
    {
      "commit": "0cf0e33b5fdb6eb871b64f5325ccd54339f62f01",
      "tree": "86caef39afb8bcac5a6bfdc32c10a2b998509b52",
      "parents": [
        "b9955b837321e36f65eb9ec0d2ec7c2681774143",
        "34109de24e124dff020b26552d46b20299d779fd"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Aug 04 09:00:15 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Aug 04 09:00:15 2009 -0700"
      },
      "message": "merge from open-source master\n"
    },
    {
      "commit": "b9955b837321e36f65eb9ec0d2ec7c2681774143",
      "tree": "86caef39afb8bcac5a6bfdc32c10a2b998509b52",
      "parents": [
        "eb1ac27bf07731a2ffde15a26791abbabfcb2a00",
        "20697b965cd923211daeea2037f60218358b9659"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Aug 04 08:44:43 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 04 08:44:43 2009 -0700"
      },
      "message": "am 20697b96: only build flash_image for eng\n\nMerge commit \u002720697b965cd923211daeea2037f60218358b9659\u0027\n\n* commit \u002720697b965cd923211daeea2037f60218358b9659\u0027:\n  only build flash_image for eng\n"
    },
    {
      "commit": "34109de24e124dff020b26552d46b20299d779fd",
      "tree": "a56912e18b608b123f1c4454293d2b2aa36fa96a",
      "parents": [
        "7bd5c660752ddd1b4ff6127b316fd6d8fb1005c7",
        "64893ccc09b25ac31bc6a17f5c7f43c7fa789576"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Jul 29 14:56:48 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Jul 29 14:56:48 2009 -0700"
      },
      "message": "merge from donut\n"
    },
    {
      "commit": "eb1ac27bf07731a2ffde15a26791abbabfcb2a00",
      "tree": "5418f1983c509a37f15e969d6ec1cbced8eae278",
      "parents": [
        "23412e6f143c099e6c2470ad6bf98a2783eb0452",
        "7bd5c660752ddd1b4ff6127b316fd6d8fb1005c7"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Jul 26 11:43:53 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sun Jul 26 11:43:53 2009 -0700"
      },
      "message": "reconcile korg/master into goog/master\n"
    },
    {
      "commit": "7bd5c660752ddd1b4ff6127b316fd6d8fb1005c7",
      "tree": "88c0fc6a69cade6f9d4437666c6420e0f757e278",
      "parents": [
        "b2b467c757ed5db6b91c6f5b53a3476fb9c92782",
        "bec02d57fb85cc7dd0196a54b0e9530e306623ac"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Jul 25 17:48:00 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Sat Jul 25 17:48:00 2009 -0700"
      },
      "message": "Merge korg/donut into korg/master\n"
    },
    {
      "commit": "20697b965cd923211daeea2037f60218358b9659",
      "tree": "49cf0f58351756c4344f38e4888616a389ea1a1e",
      "parents": [
        "64893ccc09b25ac31bc6a17f5c7f43c7fa789576"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jul 23 15:17:00 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jul 23 15:17:00 2009 -0700"
      },
      "message": "only build flash_image for eng\n\nWith the recovery image being installed by applypatch, the flash_image\ntool isn\u0027t needed any more.  Continue to build it for eng just in case\nit\u0027s handy for debugging.\n"
    },
    {
      "commit": "23412e6f143c099e6c2470ad6bf98a2783eb0452",
      "tree": "5418f1983c509a37f15e969d6ec1cbced8eae278",
      "parents": [
        "608fa02e1ac0ea11a0d3ca754f38bd76b77faa82"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jul 23 10:16:07 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jul 23 10:36:43 2009 -0700"
      },
      "message": "fix compile warnings in recovery, change images\n\ngcc 4.4 complains about some of the recovery ui functions not being\ndeclared.  To include the header, we have to fix the \u0027volatile\u0027\ndeclaration (otherwise there\u0027s a compiler error).\n\nMove the dream-specific images to vendor/htc/dream, make the default\nimages a generic phone.\n"
    },
    {
      "commit": "608fa02e1ac0ea11a0d3ca754f38bd76b77faa82",
      "tree": "5e7eb02fce9e783a2a149b8580e3da69d3cb6a2d",
      "parents": [
        "c457ff643627fb3edf0321a37fcffd6b520f931e",
        "64893ccc09b25ac31bc6a17f5c7f43c7fa789576"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Jul 15 18:10:28 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Jul 15 18:10:28 2009 -0700"
      },
      "message": "resolved conflicts for merge of 64893ccc to master\n"
    },
    {
      "commit": "64893ccc09b25ac31bc6a17f5c7f43c7fa789576",
      "tree": "a56912e18b608b123f1c4454293d2b2aa36fa96a",
      "parents": [
        "bec02d57fb85cc7dd0196a54b0e9530e306623ac"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Jul 14 16:31:56 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Jul 14 16:58:42 2009 -0700"
      },
      "message": "remove amend\n\nYank all the code to install OTA packages out of the recovery binary\nitself.  Now packages are installed by a binary included in the\npackage (run as a child of recovery), so we can make improvements in\nthe installation process without waiting for a new release to use\nthem.\n"
    },
    {
      "commit": "c457ff643627fb3edf0321a37fcffd6b520f931e",
      "tree": "b8f7c07d8384593fc55f7a96af856e9a9b990591",
      "parents": [
        "fc382dfc751725253f956ddaf5b7b90be90b41d7",
        "bec02d57fb85cc7dd0196a54b0e9530e306623ac"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jul 02 15:24:19 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 02 15:24:19 2009 -0700"
      },
      "message": "am bec02d57: skip over all-zero blocks when reading MTD partition\n\nMerge commit \u0027bec02d57fb85cc7dd0196a54b0e9530e306623ac\u0027\n\n* commit \u0027bec02d57fb85cc7dd0196a54b0e9530e306623ac\u0027:\n  skip over all-zero blocks when reading MTD partition\n"
    },
    {
      "commit": "bec02d57fb85cc7dd0196a54b0e9530e306623ac",
      "tree": "88c0fc6a69cade6f9d4437666c6420e0f757e278",
      "parents": [
        "d8f7c9b85e25fab93fef2221a84b60edc2e7b837"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Jul 01 12:09:29 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Jul 01 12:09:29 2009 -0700"
      },
      "message": "skip over all-zero blocks when reading MTD partition\n\nWe fail to detect certain bad blocks (marked in the factory as bad, I\nthink?) when reading mtd partitions.  These come back as a block of\nall zeros.  Since it\u0027s fairly unlikely a legitimate boot or recovery\nblock will contain 128k of zeros, change mtdutils to skip over such\nblocks.\n\nArve says https://review.source.android.com/10535 may be a long-term\nfix for this, but he isn\u0027t yet sure.\n"
    },
    {
      "commit": "fc382dfc751725253f956ddaf5b7b90be90b41d7",
      "tree": "fe7b772f6bea69f487e66d588d80d3219a92aaf0",
      "parents": [
        "898ef399d3ee998a871bebd04264b29e23c66738",
        "d8f7c9b85e25fab93fef2221a84b60edc2e7b837"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 29 16:39:15 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 29 16:39:15 2009 -0700"
      },
      "message": "am d8f7c9b8: Merge change 5545 into donut\n\nMerge commit \u0027d8f7c9b85e25fab93fef2221a84b60edc2e7b837\u0027\n\n* commit \u0027d8f7c9b85e25fab93fef2221a84b60edc2e7b837\u0027:\n  remove updater from the user system image\n"
    },
    {
      "commit": "d8f7c9b85e25fab93fef2221a84b60edc2e7b837",
      "tree": "69ac87bc0708d8da8a07c7184f31424ad7d98994",
      "parents": [
        "0bbfe3d901885c1f0ab006e8d4cc1029c44a7376",
        "ad3db099d5ee17b1b46fee3131b9561b73b36703"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 26 14:42:37 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 26 14:42:37 2009 -0700"
      },
      "message": "Merge change 5545 into donut\n\n* changes:\n  remove updater from the user system image\n"
    },
    {
      "commit": "ad3db099d5ee17b1b46fee3131b9561b73b36703",
      "tree": "2af419320a7b066da0a618513c0572a3b5fa753f",
      "parents": [
        "fbf3c10e45c20f8fe6bd1ac49ffe220035b9c454"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Jun 26 13:38:55 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Jun 26 13:38:55 2009 -0700"
      },
      "message": "remove updater from the user system image\n\nupdater (which is only needed in OTA packages) is getting included in\n/system/bin, where it just takes up (quite a bit of) space.  Use the\nhack of including it only in eng builds so it\u0027s not there for user\nbuilds.\n"
    },
    {
      "commit": "898ef399d3ee998a871bebd04264b29e23c66738",
      "tree": "32746aaa2d76a814e8ab627b18bab7ca9af7a43c",
      "parents": [
        "4275c3cfc828ac2df143d353a4e27e8dda20b4a9",
        "0bbfe3d901885c1f0ab006e8d4cc1029c44a7376"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 25 14:34:03 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 25 14:34:03 2009 -0700"
      },
      "message": "am 0bbfe3d9: fix off-by-one error in set_perm()\n\nMerge commit \u00270bbfe3d901885c1f0ab006e8d4cc1029c44a7376\u0027\n\n* commit \u00270bbfe3d901885c1f0ab006e8d4cc1029c44a7376\u0027:\n  fix off-by-one error in set_perm()\n"
    },
    {
      "commit": "0bbfe3d901885c1f0ab006e8d4cc1029c44a7376",
      "tree": "7a6abda5856a0fc4e62d94a1ad89c145a3d41c45",
      "parents": [
        "fbf3c10e45c20f8fe6bd1ac49ffe220035b9c454"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 25 13:37:31 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 25 13:37:31 2009 -0700"
      },
      "message": "fix off-by-one error in set_perm()\n\nWe were inadvertently skipping over the first filename in the list of\narguments.\n"
    },
    {
      "commit": "4275c3cfc828ac2df143d353a4e27e8dda20b4a9",
      "tree": "f36a4716573ef9d73f445a73c06bfa7b74054606",
      "parents": [
        "2b0fdc657115a4fe02af279fdbdab99c68df0a1a",
        "fbf3c10e45c20f8fe6bd1ac49ffe220035b9c454"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Jun 24 17:39:16 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 24 17:39:16 2009 -0700"
      },
      "message": "am fbf3c10e: improve updater progress bar\n\nMerge commit \u0027fbf3c10e45c20f8fe6bd1ac49ffe220035b9c454\u0027\n\n* commit \u0027fbf3c10e45c20f8fe6bd1ac49ffe220035b9c454\u0027:\n  improve updater progress bar\n"
    },
    {
      "commit": "fbf3c10e45c20f8fe6bd1ac49ffe220035b9c454",
      "tree": "458bbaf030872557aeea42b057383f246c5f6f75",
      "parents": [
        "47cace98369f60df2351a65801c8065bb7f9dbf0"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Jun 24 09:36:20 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Jun 24 09:36:20 2009 -0700"
      },
      "message": "improve updater progress bar\n\nLet recovery accept set_progress commands to control progress over the\n\u0027current segment\u0027 of the bar.  Add a set_progress() builtin to the\nupdater binary.\n"
    },
    {
      "commit": "2b0fdc657115a4fe02af279fdbdab99c68df0a1a",
      "tree": "18b992fb671d18310abc5f21364ac50cdbade177",
      "parents": [
        "b128f54d0daa749d301b99a6637f42aa35822a76"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Jun 19 11:22:06 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Jun 22 14:00:44 2009 -0700"
      },
      "message": "add device extension mechanism to updater\n\nAllow devices (in BoardConfig.mk) to define additional static\nlibraries to be linked in to updater, to make device-specific\nfunctions available in edify scripts.  Modify the updater makefile to\narrange for device libraries to register their edify functions.\n"
    },
    {
      "commit": "b128f54d0daa749d301b99a6637f42aa35822a76",
      "tree": "889519250f40824c6df6ea197a8edee75cf95e10",
      "parents": [
        "f8aaf0a77f72cc5614d9b9135c0d00f8a8160f20"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 18 15:07:14 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 18 15:07:14 2009 -0700"
      },
      "message": "add function for device-specific wipe data features\n\nSome devices want to do special things when recovery wipes data (eg,\nwipe data in their baseband processor as well).  Add a hook in the\ndevice-specific recovery library that gets called when data is wiped.\n\nAlso add an amend root for the \"mbm\" partition.\n"
    },
    {
      "commit": "f8aaf0a77f72cc5614d9b9135c0d00f8a8160f20",
      "tree": "e27402e11be01960b069a265e9e0a1078319b1ac",
      "parents": [
        "d683785ec9d36a9f4c7de1983f69a1f049132365",
        "47cace98369f60df2351a65801c8065bb7f9dbf0"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 18 12:57:25 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 18 12:57:25 2009 -0700"
      },
      "message": "am 47cace98: add file_getprop() to updater\n\nMerge commit \u002747cace98369f60df2351a65801c8065bb7f9dbf0\u0027\n\n* commit \u002747cace98369f60df2351a65801c8065bb7f9dbf0\u0027:\n  add file_getprop() to updater\n"
    },
    {
      "commit": "47cace98369f60df2351a65801c8065bb7f9dbf0",
      "tree": "e030f48230e2e6e47204224018fc4c62db3d27ce",
      "parents": [
        "fb2e3af3f915c0e3f2b4b027ef26777267ad46dc"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 18 10:11:50 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 18 10:11:50 2009 -0700"
      },
      "message": "add file_getprop() to updater\n\nAdd a function to read a property from a \".prop\"-formatted file\n(key\u003dvalue pairs, one per line, ignore # comment lines and blank\nlines).  Move ErrorAbort to the core of edify; it\u0027s not specific to\nupdater now that errors aren\u0027t stored in the app cookie.\n"
    },
    {
      "commit": "d683785ec9d36a9f4c7de1983f69a1f049132365",
      "tree": "23ad6c933463bd0506ce492b7fba92dc7006ae48",
      "parents": [
        "e77e091522122bed0b4f75a3abcb120e398c9abe",
        "fb2e3af3f915c0e3f2b4b027ef26777267ad46dc"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Jun 17 22:07:13 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Jun 17 22:07:13 2009 -0700"
      },
      "message": "resolved conflicts for merge of fb2e3af3 to master\n"
    },
    {
      "commit": "fb2e3af3f915c0e3f2b4b027ef26777267ad46dc",
      "tree": "45e7354eacc638f4176a095844258d1f313aba7b",
      "parents": [
        "e3da02e7bcfd85c543419e7590a3c86f64d8cc8a"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Jun 17 17:29:40 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Jun 17 18:12:16 2009 -0700"
      },
      "message": "let the \"firmware\" command take the file straight from the package\n\nTo do a firmware-install-on-reboot, the update binary tells recovery\nwhat file to install before rebooting.  Let this file be specified as\n\"PACKAGE:\u003cfoo\u003e\" to indicate taking the file out of the OTA package,\navoiding an extra copy to /tmp.  Bump the API version number to\nreflect this change.\n"
    },
    {
      "commit": "e77e091522122bed0b4f75a3abcb120e398c9abe",
      "tree": "4b3d44b4b9fc35126905eb474f4972638ec5c155",
      "parents": [
        "84cbfb6cb4a82824a662137282c689f40057b28b",
        "e3da02e7bcfd85c543419e7590a3c86f64d8cc8a"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Jun 15 14:28:17 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 15 14:28:17 2009 -0700"
      },
      "message": "am e3da02e7: add less_than_int, greater_than_int to edify\n\nMerge commit \u0027e3da02e7bcfd85c543419e7590a3c86f64d8cc8a\u0027\n\n* commit \u0027e3da02e7bcfd85c543419e7590a3c86f64d8cc8a\u0027:\n  add less_than_int, greater_than_int to edify\n"
    },
    {
      "commit": "84cbfb6cb4a82824a662137282c689f40057b28b",
      "tree": "30b5d33a047b5ae2eb86f53fa16de49d47486b1f",
      "parents": [
        "cf2b2a2e8fc0361b9db5826c2e5c92d9cb5920d3",
        "d9c9d10d9da76f067d3955bea71f7bb39e859fa5"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Sun Jun 14 21:12:26 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Sun Jun 14 21:12:26 2009 -0700"
      },
      "message": "am d9c9d10d: fixes to edify and updater script\n\nMerge commit \u0027d9c9d10d9da76f067d3955bea71f7bb39e859fa5\u0027\n\n* commit \u0027d9c9d10d9da76f067d3955bea71f7bb39e859fa5\u0027:\n  fixes to edify and updater script\n"
    },
    {
      "commit": "cf2b2a2e8fc0361b9db5826c2e5c92d9cb5920d3",
      "tree": "5147d4b4add3e2dc17f5404254e8ef3be80fd23c",
      "parents": [
        "32eb0a8c8707789a2460fccfd052bfec6dfc2456",
        "8edb00c990e563e6f91b278a212f2edf877cf763"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Sun Jun 14 20:49:32 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Sun Jun 14 20:49:32 2009 -0700"
      },
      "message": "am 8edb00c9: edify extensions for OTA package installation, part 2\n\nMerge commit \u00278edb00c990e563e6f91b278a212f2edf877cf763\u0027\n\n* commit \u00278edb00c990e563e6f91b278a212f2edf877cf763\u0027:\n  edify extensions for OTA package installation, part 2\n"
    },
    {
      "commit": "e3da02e7bcfd85c543419e7590a3c86f64d8cc8a",
      "tree": "54535b2854f7312a23f9df838abfc0312befd1d2",
      "parents": [
        "d9c9d10d9da76f067d3955bea71f7bb39e859fa5"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Jun 12 16:13:52 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Jun 12 16:13:52 2009 -0700"
      },
      "message": "add less_than_int, greater_than_int to edify\n\nAdd functions less_than_int() and greater_than_int() that interpret\ntheir args as ints and do the comparison.  (\"\u003c\" and \"\u003e\" operators, if\nimplemented, should do string comparison.)  This lets us do the build\ntime check currently done by the check_prereq binary.\n"
    },
    {
      "commit": "d9c9d10d9da76f067d3955bea71f7bb39e859fa5",
      "tree": "1e49a3a616c3147f871e79b1b15e2b2a63379cc1",
      "parents": [
        "8edb00c990e563e6f91b278a212f2edf877cf763"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Jun 12 12:24:39 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Jun 12 14:05:03 2009 -0700"
      },
      "message": "fixes to edify and updater script\n\nA few more changes to edify:\n\n  - fix write_raw_image(); my last change neglected to close the write\n    context, so the written image was corrupt.\n\n  - each expression tracks the span of the source code from which it\n    was compiled, so that assert()\u0027s error message can include the\n    source of the expression that failed.\n\n  - the \u0027cookie\u0027 argument to each Function is replaced with a State\n    object, which contains the cookie, the source script (for use with\n    the above spans), and the current error message (replacing the\n    global variables that were used for this purpose).\n\n  - in the recovery image, a new command \"ui_print\" can be sent back\n    through the command pipe to cause text to appear on the screen.\n    Add a new ui_print() function to print things from scripts.\n    Rename existing \"print\" function to \"stdout\".\n"
    },
    {
      "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": "32eb0a8c8707789a2460fccfd052bfec6dfc2456",
      "tree": "c6d6705c9cf240991a29b4773180691afadaf623",
      "parents": [
        "6c301e244d0d14e3b2983350d7c383abf52b89f7",
        "9dbc027b5f540bcf23c968398f8a70e92abd56cd"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Jun 12 08:25:49 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jun 12 08:25:49 2009 -0700"
      },
      "message": "am 9dbc027b: fix sim build in donut, too\n\nMerge commit \u00279dbc027b5f540bcf23c968398f8a70e92abd56cd\u0027\n\n* commit \u00279dbc027b5f540bcf23c968398f8a70e92abd56cd\u0027:\n  fix sim build in donut, too\n"
    },
    {
      "commit": "6c301e244d0d14e3b2983350d7c383abf52b89f7",
      "tree": "c6d6705c9cf240991a29b4773180691afadaf623",
      "parents": [
        "c3885fabda7f8a4bd39f42f76012e00514b0a3ff",
        "9931f7f3c1288171319e9ff7d053ebaad07db720"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Jun 12 08:25:38 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jun 12 08:25:38 2009 -0700"
      },
      "message": "am 9931f7f3: edify extensions for OTA package installation, part 1\n\nMerge commit \u00279931f7f3c1288171319e9ff7d053ebaad07db720\u0027\n\n* commit \u00279931f7f3c1288171319e9ff7d053ebaad07db720\u0027:\n  edify extensions for OTA package installation, part 1\n"
    },
    {
      "commit": "9dbc027b5f540bcf23c968398f8a70e92abd56cd",
      "tree": "daa1d97ee8a585480267f963048d25289c752176",
      "parents": [
        "9931f7f3c1288171319e9ff7d053ebaad07db720"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 11 17:32:55 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 11 17:32:55 2009 -0700"
      },
      "message": "fix sim build in donut, too\n"
    },
    {
      "commit": "c3885fabda7f8a4bd39f42f76012e00514b0a3ff",
      "tree": "c458a1216c98899914b210c1c21e8195c5944d2c",
      "parents": [
        "cbb91293450f893be80edd30a3dbe21566181af5"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 11 17:05:58 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 11 17:05:58 2009 -0700"
      },
      "message": "fix simulator build by excluding more of recovery\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": "cbb91293450f893be80edd30a3dbe21566181af5",
      "tree": "d19a5bb71f9a3a12c6f24f3cb06c2721cae29e07",
      "parents": [
        "ddd6a2865db5c73a4bb9d486f71a8c2f1f96ec69"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 11 14:54:41 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 11 14:57:53 2009 -0700"
      },
      "message": "fix error from change 3606\n\nWhen I changed the definition of device_perform_action() in response\nto a reviewer comment, I forgot to change this implementation.\n"
    },
    {
      "commit": "ddd6a2865db5c73a4bb9d486f71a8c2f1f96ec69",
      "tree": "a991238ca9fd1299d295d6229df882585ca0c659",
      "parents": [
        "d9d9d1785ac1cce150010390a17188bea42a7a58"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Jun 09 12:22:33 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 11 14:50:33 2009 -0700"
      },
      "message": "split out device-specific recovery UI code into vendor directories\n\nTake some device-specific details of the recovery UI (eg, what keys to\npress to bring up the interface and perform actions, exact text of the\nmenu, etc.) and split them out into separate C functions.  Arrange to\ntake implementations of those functions from the appropriate vendor\ndirectory at build time.  Provide a default implementation in case no\nvendor-specific one is available.\n"
    },
    {
      "commit": "d9d9d1785ac1cce150010390a17188bea42a7a58",
      "tree": "42fb1cdb0cd2327154a848afd35c0db5c8491eea",
      "parents": [
        "573fd7b68b789e5a4d0b3da3b499e5555e0faee0",
        "9b9c2114bd7d02200ce43cb9ec513473079dfad9"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 10 08:12:32 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 10 08:12:32 2009 -0700"
      },
      "message": "am 9b9c2114: Merge change 3514 into donut\n\nMerge commit \u00279b9c2114bd7d02200ce43cb9ec513473079dfad9\u0027\n\n* commit \u00279b9c2114bd7d02200ce43cb9ec513473079dfad9\u0027:\n  core of edify, an eventual replacement for amend\n"
    },
    {
      "commit": "9b9c2114bd7d02200ce43cb9ec513473079dfad9",
      "tree": "862fc4cae41e95727a2df0db36c65faaba3de900",
      "parents": [
        "b2ee9201be583b17ddbf0eaa69a37545f992b565",
        "37bee62aefb5ac10716054edf482fd37078f1427"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 10 08:10:29 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 10 08:10:29 2009 -0700"
      },
      "message": "Merge change 3514 into donut\n\n* changes:\n  core of edify, an eventual replacement for amend\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"
    },
    {
      "commit": "573fd7b68b789e5a4d0b3da3b499e5555e0faee0",
      "tree": "54e44b0fa41760785bba3fcadd43ed8bc15758d2",
      "parents": [
        "825915dc6c9a731895dfe8cf25becb81fc9f988f"
      ],
      "author": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Fri Jun 05 16:56:07 2009 -0700"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Fri Jun 05 16:58:36 2009 -0700"
      },
      "message": "Force the fb into 16 bpp mode in case the hw has some other default.\n\nSigned-off-by: Rebecca Schultz Zavin \u003crebecca@android.com\u003e\n"
    },
    {
      "commit": "825915dc6c9a731895dfe8cf25becb81fc9f988f",
      "tree": "5444f4287f19e9775b8a53fb0074b83d69248ebe",
      "parents": [
        "8caf81fa24a4e74ef4cba0449cb218e1d23a421d",
        "b2ee9201be583b17ddbf0eaa69a37545f992b565"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri Jun 05 00:29:47 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jun 05 00:29:47 2009 -0700"
      },
      "message": "am b2ee9201: allow OTA package to provide binary instead of script\n\nMerge commit \u0027b2ee9201be583b17ddbf0eaa69a37545f992b565\u0027\n\n* commit \u0027b2ee9201be583b17ddbf0eaa69a37545f992b565\u0027:\n  allow OTA package to provide binary instead of script\n"
    },
    {
      "commit": "b2ee9201be583b17ddbf0eaa69a37545f992b565",
      "tree": "5444f4287f19e9775b8a53fb0074b83d69248ebe",
      "parents": [
        "f28c916e73ee9f643c67c70d059c70381d774cb0"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 04 10:24:53 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jun 04 16:45:32 2009 -0700"
      },
      "message": "allow OTA package to provide binary instead of script\n\nAllow installation of OTA packages which do not contain an\nupdate-script, but instead contain an update-binary.\n"
    },
    {
      "commit": "8caf81fa24a4e74ef4cba0449cb218e1d23a421d",
      "tree": "775fcffe9df8b9242d20fe4f46491b21e33f8a64",
      "parents": [
        "9d5be8488f7fc757604e654f86e2c41f54790132",
        "f28c916e73ee9f643c67c70d059c70381d774cb0"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Jun 03 08:39:37 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 03 08:39:37 2009 -0700"
      },
      "message": "am f28c916e: remove unused permissions scheme from amend\n\nMerge commit \u0027f28c916e73ee9f643c67c70d059c70381d774cb0\u0027\n\n* commit \u0027f28c916e73ee9f643c67c70d059c70381d774cb0\u0027:\n  remove unused permissions scheme from amend\n"
    },
    {
      "commit": "f28c916e73ee9f643c67c70d059c70381d774cb0",
      "tree": "775fcffe9df8b9242d20fe4f46491b21e33f8a64",
      "parents": [
        "07e1dca7068284c4f3013550335029eb72b39b82"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Jun 02 15:30:11 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue Jun 02 15:41:00 2009 -0700"
      },
      "message": "remove unused permissions scheme from amend\n\nAmend (aka the recovery command language) had a half-implemented\nscheme of limiting which commands OTA packages were allowed to\nexecute.  It\u0027s not clear what this was ever supposed to be good for.\nRemove it.\n"
    },
    {
      "commit": "9d5be8488f7fc757604e654f86e2c41f54790132",
      "tree": "52685fc37135c50e0abf2518c8028f1f2d081919",
      "parents": [
        "985d95f9f45baeb5f013fde9575acc8a81746bcb",
        "07e1dca7068284c4f3013550335029eb72b39b82"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Jun 01 14:35:16 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 01 14:35:16 2009 -0700"
      },
      "message": "am 07e1dca7: don\\\u0027t say \"install complete\" when it really isn\\\u0027t\n\nMerge commit \u002707e1dca7068284c4f3013550335029eb72b39b82\u0027\n\n* commit \u002707e1dca7068284c4f3013550335029eb72b39b82\u0027:\n  don\u0027t say \"install complete\" when it really isn\u0027t\n"
    },
    {
      "commit": "07e1dca7068284c4f3013550335029eb72b39b82",
      "tree": "52685fc37135c50e0abf2518c8028f1f2d081919",
      "parents": [
        "1c4ceae38f3fd7eb1e451d430acb5d99f257b0f9"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu May 28 19:02:45 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu May 28 19:02:45 2009 -0700"
      },
      "message": "don\u0027t say \"install complete\" when it really isn\u0027t\n\nChange the recovery UI so that when there is a hboot or radio update\npending (which the user most do a home+back reboot to actually\ninstall), the UI tells them so, instead of saying \"Install from sdcard\ncomplete.\"\n"
    },
    {
      "commit": "985d95f9f45baeb5f013fde9575acc8a81746bcb",
      "tree": "5dbf0392571a64b4afbe0ba73655c889f650eb75",
      "parents": [
        "1c10ff34b51637155b234703100b82ed9e1ba947",
        "1c4ceae38f3fd7eb1e451d430acb5d99f257b0f9"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri May 08 12:22:51 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri May 08 12:22:51 2009 -0700"
      },
      "message": "am 1c4ceae: undo temporary alignment hack\n\nMerge commit \u00271c4ceae38f3fd7eb1e451d430acb5d99f257b0f9\u0027\n\n* commit \u00271c4ceae38f3fd7eb1e451d430acb5d99f257b0f9\u0027:\n  undo temporary alignment hack\n"
    },
    {
      "commit": "1c4ceae38f3fd7eb1e451d430acb5d99f257b0f9",
      "tree": "5dbf0392571a64b4afbe0ba73655c889f650eb75",
      "parents": [
        "683c4628039a8cb6dad1a086fae23a7d71438414"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri May 08 09:43:28 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Fri May 08 09:43:28 2009 -0700"
      },
      "message": "undo temporary alignment hack\n\nRemove the memory alignment that mysteriously made OTA installs work,\nin anticipation of a kernel that fixes the actual problem.  Handle\nEINTR properly.\n"
    },
    {
      "commit": "1c10ff34b51637155b234703100b82ed9e1ba947",
      "tree": "aacd5abd9b128d786f651b2dfb2a5eb5400c5e43",
      "parents": [
        "0f03d1408d9f7662df40e50a6e1c3f5a69d9f2fb",
        "683c4628039a8cb6dad1a086fae23a7d71438414"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed May 06 11:31:43 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed May 06 11:31:43 2009 -0700"
      },
      "message": "am 683c462: align data passed to write() on 32k boundaries\n\nMerge commit \u0027683c4628039a8cb6dad1a086fae23a7d71438414\u0027\n\n* commit \u0027683c4628039a8cb6dad1a086fae23a7d71438414\u0027:\n  align data passed to write() on 32k boundaries\n"
    },
    {
      "commit": "683c4628039a8cb6dad1a086fae23a7d71438414",
      "tree": "aacd5abd9b128d786f651b2dfb2a5eb5400c5e43",
      "parents": [
        "596271fa71d79e3eec03c7cf6ac76cb026dd8578"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Tue May 05 17:50:21 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed May 06 08:40:28 2009 -0700"
      },
      "message": "align data passed to write() on 32k boundaries\n\nIn donut, OTA installation often encounters the write() system call\ndoing short writes -- which is legal but unexpected -- or failing with\nENOSPC when plenty of space is available.  Passing aligned memory\nbuffers to write() appears to prevent (or at least reduce the\nfrequency) of these problems.  b/1833052 has been filed to look at the\nunderlying problem, but this change aligns buffers we use with write()\nso we can OTA for now (or see if this problem still occurs).\n"
    },
    {
      "commit": "0f03d1408d9f7662df40e50a6e1c3f5a69d9f2fb",
      "tree": "3a78f4d9d0b3694d4a75b7dd3d086b0249de8b5e",
      "parents": [
        "7fce23fbb55ac4f8ed42cf0fc25f157fdb1df97c",
        "596271fa71d79e3eec03c7cf6ac76cb026dd8578"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Apr 29 21:20:20 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Apr 29 21:20:20 2009 -0700"
      },
      "message": "am 596271f: handle short writes when unzipping files\n\nMerge commit \u0027596271fa71d79e3eec03c7cf6ac76cb026dd8578\u0027\n\n* commit \u0027596271fa71d79e3eec03c7cf6ac76cb026dd8578\u0027:\n  handle short writes when unzipping files\n"
    },
    {
      "commit": "596271fa71d79e3eec03c7cf6ac76cb026dd8578",
      "tree": "3a78f4d9d0b3694d4a75b7dd3d086b0249de8b5e",
      "parents": [
        "f554ceb0500f75c425b37c74a0d65d138c0fbdd0"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Apr 29 16:52:04 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Apr 29 17:35:34 2009 -0700"
      },
      "message": "handle short writes when unzipping files\n\nminzip fails if write() doesn\u0027t write all the data in one call.\nApparently this was good enough before, but it causes OTAs to fail all\nthe time now (maybe due to the recently-submitted kernel)?  Change\ncode to attempt continuing after short writes.\n"
    },
    {
      "commit": "7fce23fbb55ac4f8ed42cf0fc25f157fdb1df97c",
      "tree": "cd124eff0fc6d5141d1d206fb508aa42a82ac1b9",
      "parents": [
        "29fcea15647746cd98b844ca2cf8b355d03f940c",
        "f554ceb0500f75c425b37c74a0d65d138c0fbdd0"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Apr 22 18:33:11 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Apr 22 18:33:11 2009 -0700"
      },
      "message": "Merge donut into master\n"
    },
    {
      "commit": "f554ceb0500f75c425b37c74a0d65d138c0fbdd0",
      "tree": "cd124eff0fc6d5141d1d206fb508aa42a82ac1b9",
      "parents": [
        "d1b19b9c98ac97db5c933d72dac5dca054a28353",
        "d105f8f84f25db7861775e07a808855334207d95"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Apr 22 17:56:50 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Apr 22 17:56:50 2009 -0700"
      },
      "message": "merge cupcake into donut\n"
    },
    {
      "commit": "29fcea15647746cd98b844ca2cf8b355d03f940c",
      "tree": "cd124eff0fc6d5141d1d206fb508aa42a82ac1b9",
      "parents": [
        "275acbe70a8024951db39d6b415cbe63ce09f965",
        "d1b19b9c98ac97db5c933d72dac5dca054a28353"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Apr 22 17:12:09 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Apr 22 17:12:09 2009 -0700"
      },
      "message": "Merge donut into master\n"
    },
    {
      "commit": "275acbe70a8024951db39d6b415cbe63ce09f965",
      "tree": "cd124eff0fc6d5141d1d206fb508aa42a82ac1b9",
      "parents": [
        "d5ebb7b06d4ba5674735463b3fe26d8fa9dcd896",
        "796901d3b0b70f09c51b877ae76e98bf0cf2b82a"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "",
        "time": "Thu Apr 02 10:13:29 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Apr 02 10:13:29 2009 -0700"
      },
      "message": "Merge branch \u0027readonly-p4-master\u0027\n"
    },
    {
      "commit": "796901d3b0b70f09c51b877ae76e98bf0cf2b82a",
      "tree": "cd124eff0fc6d5141d1d206fb508aa42a82ac1b9",
      "parents": [
        "0555388b8c1a118f4756d04d73384e55d2ed6602"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "",
        "time": "Thu Apr 02 10:12:24 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Apr 02 10:12:24 2009 -0700"
      },
      "message": "AI 144132: am: CL 144130 Don\u0027t build OTA package keys into the recovery binary; read\n  them from an external file in the recovery image.  Use the\n  test-keys for all builds.\n  Original author: dougz\n  Merged from: //branches/donutburger/...\n\nAutomated import of CL 144132\n"
    },
    {
      "commit": "d5ebb7b06d4ba5674735463b3fe26d8fa9dcd896",
      "tree": "36661a63319014a2b364535b25f17859212b3b7a",
      "parents": [
        "5d30026ddb1da1de7ec1b9996673f1a444d9241f",
        "0555388b8c1a118f4756d04d73384e55d2ed6602"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "",
        "time": "Thu Apr 02 09:52:18 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Apr 02 09:52:18 2009 -0700"
      },
      "message": "Merge branch \u0027readonly-p4-master\u0027\n"
    },
    {
      "commit": "0555388b8c1a118f4756d04d73384e55d2ed6602",
      "tree": "36661a63319014a2b364535b25f17859212b3b7a",
      "parents": [
        "fc3ada0c116056d5d7e62477a45ac68632b69ca4"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "",
        "time": "Thu Apr 02 09:51:09 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Apr 02 09:51:09 2009 -0700"
      },
      "message": "AI 144105: am: CL 144082 Remove the unused \"unpacking\" recovery icon.\n  Original author: dougz\n  Merged from: //branches/donutburger/...\n\nAutomated import of CL 144105\n"
    },
    {
      "commit": "5d30026ddb1da1de7ec1b9996673f1a444d9241f",
      "tree": "5b63ade43f6796b000f6e64c9e6cf6c41a01c993",
      "parents": [
        "36a9c1e53094c54dc19be8b23b648664a1ad89fe",
        "fc3ada0c116056d5d7e62477a45ac68632b69ca4"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "",
        "time": "Thu Apr 02 09:41:51 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Apr 02 09:41:51 2009 -0700"
      },
      "message": "Merge branch \u0027readonly-p4-master\u0027\n"
    },
    {
      "commit": "fc3ada0c116056d5d7e62477a45ac68632b69ca4",
      "tree": "5b63ade43f6796b000f6e64c9e6cf6c41a01c993",
      "parents": [
        "19faefad052ee26285e52e3adb8994a4d4e71c38"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "",
        "time": "Thu Apr 02 09:40:40 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Apr 02 09:40:40 2009 -0700"
      },
      "message": "AI 144101: am: CL 144070 Add an option to wipe cache (only) to the recovery menu.\n  Original author: dougz\n  Merged from: //branches/donutburger/...\n\nAutomated import of CL 144101\n"
    },
    {
      "commit": "d1b19b9c98ac97db5c933d72dac5dca054a28353",
      "tree": "cd124eff0fc6d5141d1d206fb508aa42a82ac1b9",
      "parents": [
        "49283858fb6565a5da0c5987e614f60254e61804"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "",
        "time": "Wed Apr 01 15:48:46 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Apr 01 15:48:46 2009 -0700"
      },
      "message": "AI 144130: Don\u0027t build OTA package keys into the recovery binary; read\n  them from an external file in the recovery image.  Use the\n  test-keys for all builds.\n\nAutomated import of CL 144130\n"
    },
    {
      "commit": "49283858fb6565a5da0c5987e614f60254e61804",
      "tree": "36661a63319014a2b364535b25f17859212b3b7a",
      "parents": [
        "1066d2c31990e3c2eacedbe0a70013da774fcf3e"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "",
        "time": "Wed Apr 01 14:39:15 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Apr 01 14:39:15 2009 -0700"
      },
      "message": "AI 144082: Remove the unused \"unpacking\" recovery icon.\n\nAutomated import of CL 144082\n"
    },
    {
      "commit": "1066d2c31990e3c2eacedbe0a70013da774fcf3e",
      "tree": "5b63ade43f6796b000f6e64c9e6cf6c41a01c993",
      "parents": [
        "58bde316e22e392885de71d2391f2bc7f438ff1f"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "",
        "time": "Wed Apr 01 13:57:40 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Apr 01 13:57:40 2009 -0700"
      },
      "message": "AI 144070: Add an option to wipe cache (only) to the recovery menu.\n\nAutomated import of CL 144070\n"
    },
    {
      "commit": "36a9c1e53094c54dc19be8b23b648664a1ad89fe",
      "tree": "d4d6fd74729dc423328ece239b60c0ae7bf9abaa",
      "parents": [
        "19faefad052ee26285e52e3adb8994a4d4e71c38",
        "b2b467c757ed5db6b91c6f5b53a3476fb9c92782"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Sun Mar 29 08:55:03 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Sun Mar 29 08:55:03 2009 -0700"
      },
      "message": "Merge branch \u0027open_source_no_contributions\u0027 into google_internal\n"
    },
    {
      "commit": "19faefad052ee26285e52e3adb8994a4d4e71c38",
      "tree": "d4d6fd74729dc423328ece239b60c0ae7bf9abaa",
      "parents": [
        "e6faba0580017352bcba4efefac032095d337042"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "",
        "time": "Fri Mar 27 17:06:24 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Mar 27 17:06:24 2009 -0700"
      },
      "message": "AI 143289: am: CL 143128 Use PNG instead of BMP for recovery image icons.  This saves\n  about 60k from the recovery and system images.\n  Original author: dougz\n  Merged from: //branches/donutburger/...\n\nAutomated import of CL 143289\n"
    },
    {
      "commit": "b2b467c757ed5db6b91c6f5b53a3476fb9c92782",
      "tree": "a857e6ff407fb5e2a2d75c597ab7f1d50d5c567f",
      "parents": [
        "c5c389f8f2b43a640667aa53ee3e369033c55569",
        "d105f8f84f25db7861775e07a808855334207d95"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Mar 27 15:30:35 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Mar 27 15:30:35 2009 -0700"
      },
      "message": "Merge commit \u0027korg/cupcake\u0027\n"
    },
    {
      "commit": "58bde316e22e392885de71d2391f2bc7f438ff1f",
      "tree": "d4d6fd74729dc423328ece239b60c0ae7bf9abaa",
      "parents": [
        "bc012de46e99fc936e6c06d19416b8414835c7b6"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "",
        "time": "Fri Mar 27 13:25:30 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Mar 27 13:25:30 2009 -0700"
      },
      "message": "AI 143128: Use PNG instead of BMP for recovery image icons.  This saves\n  about 60k from the recovery and system images.\n\nAutomated import of CL 143128\n"
    },
    {
      "commit": "e6faba0580017352bcba4efefac032095d337042",
      "tree": "a857e6ff407fb5e2a2d75c597ab7f1d50d5c567f",
      "parents": [
        "97c618f37883e36b798a15b36cae917e7bc1e0c0"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "",
        "time": "Tue Mar 24 22:17:05 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 24 22:17:05 2009 -0700"
      },
      "message": "Automated import from //branches/master/...@142142,142142\n"
    },
    {
      "commit": "bc012de46e99fc936e6c06d19416b8414835c7b6",
      "tree": "a857e6ff407fb5e2a2d75c597ab7f1d50d5c567f",
      "parents": [
        "cf5b17055b1276c187537cf5a054cf6ebe753113"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "",
        "time": "Tue Mar 24 21:30:32 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 24 21:30:32 2009 -0700"
      },
      "message": "Automated import from //branches/donutburger/...@142141,142141\n"
    },
    {
      "commit": "d105f8f84f25db7861775e07a808855334207d95",
      "tree": "a857e6ff407fb5e2a2d75c597ab7f1d50d5c567f",
      "parents": [
        "73e8e9ba08f288b7cc9ea62be9782dc1398a2d41"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "",
        "time": "Tue Mar 24 19:03:53 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 24 19:03:53 2009 -0700"
      },
      "message": "Automated import from //branches/cupcake/...@142138,142138\n"
    },
    {
      "commit": "cf5b17055b1276c187537cf5a054cf6ebe753113",
      "tree": "2d8a5b9d800dac4bfb1edc2552889cd16df1be08",
      "parents": [
        "c24a8e688a6312764254beac2b2520bb0c5e998d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "",
        "time": "Tue Mar 24 18:36:43 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 24 18:36:43 2009 -0700"
      },
      "message": "Automated import from //branches/donutburger/...@140818,140818\n"
    },
    {
      "commit": "97c618f37883e36b798a15b36cae917e7bc1e0c0",
      "tree": "2d8a5b9d800dac4bfb1edc2552889cd16df1be08",
      "parents": [
        "c24a8e688a6312764254beac2b2520bb0c5e998d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "",
        "time": "Tue Mar 24 18:36:42 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 24 18:36:42 2009 -0700"
      },
      "message": "Automated import from //branches/master/...@140824,140824\n"
    },
    {
      "commit": "73e8e9ba08f288b7cc9ea62be9782dc1398a2d41",
      "tree": "2d8a5b9d800dac4bfb1edc2552889cd16df1be08",
      "parents": [
        "c24a8e688a6312764254beac2b2520bb0c5e998d"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Mar 19 23:08:36 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Mar 19 23:08:36 2009 -0700"
      },
      "message": "auto import from //branches/cupcake_rel/...@141571\n"
    },
    {
      "commit": "c5c389f8f2b43a640667aa53ee3e369033c55569",
      "tree": "7df23711566b358047301d8413ee399105546e8b",
      "parents": [
        "fac53c16773283f0dc4da544553174d9fe516b16",
        "c24a8e688a6312764254beac2b2520bb0c5e998d"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Mar 18 16:57:16 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Mar 18 16:57:16 2009 -0700"
      },
      "message": "Merge commit \u0027remotes/korg/cupcake\u0027 into cupcake_to_master\n"
    }
  ],
  "next": "c24a8e688a6312764254beac2b2520bb0c5e998d"
}
