)]}'
{
  "log": [
    {
      "commit": "80a4af2bbc6af42ae605e454bf89558e564f5244",
      "tree": "3cd054c0e9576c9fda33fc36670ef10458f71ee8",
      "parents": [
        "def8b0f011b5b2b02235063d5021ddfd58aa0baf"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 27 19:18:31 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 28 16:30:55 2012 -0700"
      },
      "message": "Start implementing concept of \"running\" users.\n\nThe activity manager now keeps track of which users are running.\n\nInitially, only user 0 is running.\n\nWhen you switch to another user, that user is started so it is\nrunning.  It is only at this point that BOOT_COMPLETED is sent\nfor that user and it is allowed to execute anything.\n\nYou can stop any user except user 0, which brings it back to the\nsame state as when you first boot the device.  This is also used\nto be able to more cleaning delete a user, by first stopping it\nbefore removing its data.\n\nThere is a new broadcast ACTION_USER_STOPPED sent when a user is\nstopped; system services need to handle this like they currently\nhandle ACTION_PACKAGE_RESTARTED when individual packages are\nrestarted.\n\nChange-Id: I89adbd7cbaf4a0bb72ea201385f93477f40a4119\n"
    },
    {
      "commit": "7e0e19d4201374d72b7082492bd269dbdb17d972",
      "tree": "32b9080c4bf6da4ed4fb51fc46dbbefdaf1b5b92",
      "parents": [
        "71d7c3c628fbce04b8bdb60f127588ada00bae13"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 27 10:57:30 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 27 10:57:30 2012 -0700"
      },
      "message": "Restore man page entries.\n\nChange-Id: I002808037ec117c039aeb71f425c1f43d4cac6d8\n"
    },
    {
      "commit": "7767eac3232ba2fb9828766813cdb481d6a97584",
      "tree": "41cc717fb9f11190e9da3dc12d61faf23a22861d",
      "parents": [
        "1552586283f329253edc4786a6cf40c5bb69ea36"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Aug 23 18:25:40 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 24 13:53:13 2012 -0700"
      },
      "message": "Keep track of whether an app is installed for each user.\n\nThis add a new per-user state for an app, indicating whether\nit is installed for that user.\n\nAll system apps are always installed for all users (we still\nuse disable to \"uninstall\" them).\n\nNow when you call into the package manager to install an app,\nit will only install the app for that user unless you supply\na flag saying to install for all users.  Only being installed\nfor the user is just the normal install state, but all other\nusers have marked in their state for that app that it is not\ninstalled.\n\nWhen you call the package manager APIs for information about\napps, uninstalled apps are treated as really being not visible\n(somewhat more-so than disabled apps), unless you use the\nGET_UNINSTALLED_PACKAGES flag.\n\nIf another user calls to install an app that is already installed,\njust not for them, then the normal install process takes place\nbut in addition that user\u0027s installed state is toggled on.\n\nThe package manager will not send PACKAGE_ADDED, PACKAGE_REMOVED,\nPACKAGE_REPLACED etc broadcasts to users who don\u0027t have a package\ninstalled or not being involved in a change in the install state.\nThere are a few things that are not quite right with this -- for\nexample if you go through a full install (with a new apk) of an\napp for one user who doesn\u0027t have it already installed, you will\nstill get the PACKAGED_REPLACED messages even though this is\ntechnically the first install for your user.  I\u0027m not sure how\nmuch of an issue this is.\n\nWhen you call the existing API to uninstall an app, this toggles\nthe installed state of the app for that user to be off.  Only if\nthat is the last user user that has the app uinstalled will it\nactually be removed from the device.  Again there is a new flag\nyou can pass in to force the app to be uninstalled for all users.\n\nAlso fixed issues with cleaning external storage of apps, which\nwas not dealing with multiple users.  We now keep track of cleaning\neach user for each package.\n\nChange-Id: I00e66452b149defc08c5e0183fa673f532465ed5\n"
    },
    {
      "commit": "dde331cebd87982faded6818ad5f9927ff994c96",
      "tree": "c2f9c4c62113fc93948d3988fc09cc3727c4b9ca",
      "parents": [
        "5345c310af8363948cee6a91d11add3ec51e8a9c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 03 14:01:57 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 03 17:27:29 2012 -0700"
      },
      "message": "We can now (kind-of) change screen density on the fly.\n\nPreloaded drawables now have a density associated with them, so we\ncan load the correct drawable if we are using a different density.\n\nWindow manager now formally keeps track of the density for each\nscreen, allowing it to be overridden like you can already do with\nsize, and relies on this density to drive itself internally and\nthe configurations it reports.\n\nThere are a new set of Bitmap constructors where you provide a\nDisplayMetrics so they can be constructed with the correct density.\n(This will be for when you can have different windows in the same\napp running at different densities.)\n\nActivityThread now watches for density changes, and pushes them\nto the DENSITY_DEVICE and Bitmap global density values for that\nprocess.\n\nA new am command allows you to change the density.\n"
    },
    {
      "commit": "59c009776dae5ccbdfb93d7151ff2065ca049dc3",
      "tree": "45ffbc8d93e8f245ed1c78ffa64b8bcc5ae59355",
      "parents": [
        "fa14d824d235c33b137a429c3eb6818f273407ab"
      ],
      "author": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Mon Jul 30 12:10:24 2012 -0700"
      },
      "committer": {
        "name": "Craig Mautner",
        "email": "cmautner@google.com",
        "time": "Thu Aug 02 08:47:44 2012 -0700"
      },
      "message": "Introduce multiple displays with DisplayContent.\n\nFix a couple of bugs that turned up.\nRemove touch/focus from display. Add iterators for access.\nRespond to comments. Remove TODOs, and some deviceId parameters.\n\nChange-Id: Idcdb4f1979aa7b14634d450fd0333d6eff26994d\n"
    },
    {
      "commit": "fd3d009dde21d7670d42d26f197f67c4c8e59184",
      "tree": "7e91bd87dcab0b4e6e470400924ce9e657642259",
      "parents": [
        "5ab6e12b450d13c8eb501001c7a8669826b86ea4"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed May 30 17:57:06 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed May 30 17:57:06 2012 -0700"
      },
      "message": "Remove some unnecessary man page entries\n\nChange-Id: I1ceda3f5efac83b80ab4b6e7cae4086aeed5062a\n"
    },
    {
      "commit": "13b907353f18215b52b5ceda24bbf520d91d72a1",
      "tree": "5b32cdf7b5729f68c0b61dadbeab7ffd263b25b0",
      "parents": [
        "d7e4ae48c576d5aaef75754b29a8b87c1f0d6427"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 21 12:13:31 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 21 13:29:06 2012 -0700"
      },
      "message": "Remove unused, obsolete debug code\n\nAll these features have either been abandonned and left un-maintained\nfor years or can be replaced by systrace.\n\nChange-Id: I42e4579a8078744047e5fe08a7a15254970b09bc\n"
    },
    {
      "commit": "7df7d2022d9bebc21a13dcb7ddacaa61f9c2e38e",
      "tree": "ba66ba6c9223f2c53786cc8bcf086af0ba885e56",
      "parents": [
        "661f362a2c531c46fdce5359b176a30ba7d16e1f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 19 18:00:04 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Apr 19 18:00:04 2012 -0700"
      },
      "message": "Fix issue #4499996: LiveWallpaperPreview activity intent filter\n\nChange-Id: I5fc71503d2c59c907da954dbda3587394e6405bf\n"
    },
    {
      "commit": "483f3b06ea84440a082e21b68ec2c2e54046f5a6",
      "tree": "cc0dff8ea3d133a4dc910bc1e90c85380cea2064",
      "parents": [
        "8fca15f1f2273fa429e58f783d0970251d0942e5"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Tue Mar 13 16:08:00 2012 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Thu Mar 22 10:08:24 2012 -0700"
      },
      "message": "Package restrictions per user\n\nPackages can be enabled/disabled per user.\nThis requires maintaining stopped/launched states and\nenabled / disabled components and packages per user.\n\nRefactored pm.Settings and PackageSettingsBase to keep\ntrack of states per user.\n\nMigrated the stopped-packages.xml to users/\u003cu\u003e/package-restrictions.xml\n\nChanged intent resolution to handle individual user restrictions.\nBunch of IPackageManager calls now have a userId argument.\nMake AppWidgetService handle removals of packages.\n\nAdded some tests for pm.Settings and PackageManager.\n\nChange-Id: Ia83b529e1df88dbcb3bd55ebfc952a6e9b20e861\n"
    },
    {
      "commit": "a4972e951bf2bdb7afdafee95b3ab0c15b8bacae",
      "tree": "9800a9dcd62d945a8ad71549ebcef70393ef5442",
      "parents": [
        "89ea4ca9c26f3c7e365525a0b83500e85517a457"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 14 10:38:05 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Mar 14 12:57:14 2012 -0700"
      },
      "message": "Add new \"options\" argument to all startActivity APIs.\n\nThis will be used to allow new features to be requested...  such as,\nsay, a special kind of animation.  Right now there are no options\ndefined.\n\nChange-Id: I4eb6f27275cdd4bf186f6da316ab93a2372ad4b7\n"
    },
    {
      "commit": "92a8b22e7410e74e1cba1b856333116652af8a5c",
      "tree": "fd340b33bdcf7d2b5f84d9f9454a5805efff54b6",
      "parents": [
        "64d10a1da0a702ffeb086ad9c4a632f2712f1dad"
      ],
      "author": {
        "name": "Siva Velusamy",
        "email": "vsiva@google.com",
        "time": "Fri Mar 09 16:24:04 2012 -0800"
      },
      "committer": {
        "name": "Siva Velusamy",
        "email": "vsiva@google.com",
        "time": "Mon Mar 12 12:18:53 2012 -0700"
      },
      "message": "ActivityManager: add option to allow OpenGL trace.\n\nThis patch adds an option to enable tracing of OpenGL functions.\nOpenGL tracing can be enabled by passing \"--opengl-trace\" option\nto am start.  This option requires either a device in debug mode,\nor that the application itself has debug permission set.\n\nChange-Id: I77788bfe97c9108943b1f947ce81afe8293d78a0\n"
    },
    {
      "commit": "3a2ce935b94383141d1c8a7878fa9308ce718fe5",
      "tree": "37bab0cf934a4a01c1f51e57925b6d885e6784d3",
      "parents": [
        "3df2549cb7be6d85cb4579d8fa48f5344c025f62"
      ],
      "author": {
        "name": "Mike J. Chen",
        "email": "mjchen@google.com",
        "time": "Mon Aug 15 13:22:39 2011 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Fri Feb 10 12:03:53 2012 -0800"
      },
      "message": "Add the ability to pass float extras to AM.\n\ncommit 43a2825a283e29c0f70100146394957af0598b0e\nAuthor: John Grossman \u003cjohngro@google.com\u003e\nDate:   Wed Apr 27 09:03:53 2011 -0700\n\n    Add the ability to pass float extras to AM.\n\n    Change-Id: I970ad3f76a65bd781099204019095c73ed8c09db\n\nSigned-off-by: Mike J. Chen \u003cmjchen@google.com\u003e\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nConflicts:\n\n\tcmds/am/src/com/android/commands/am/Am.java\n"
    },
    {
      "commit": "742a67127366c376fdf188ff99ba30b27d3bf90c",
      "tree": "4a801b0b2e9ee10fb322e3b450e2af9eb6e3002f",
      "parents": [
        "8ca8a69d5801ad4b809e7b9dbf53bd728820924b"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Wed May 04 14:49:28 2011 -0700"
      },
      "committer": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Fri Feb 03 12:01:47 2012 -0800"
      },
      "message": "Multi-user - 1st major checkin\n\nSwitching activity stacks\nCache ContentProvider per user\nLong-press power to switch users (on phone)\n\nAdded ServiceMap for separating services by user\nLaunch PendingIntents on the correct user\u0027s uid\nFix task switching from Recents list\nAppWidgetService is mostly working.\n\nCommands added to pm and am to allow creating and switching profiles.\n\nChange-Id: I15810e8cfbe50a04bd3323a7ef5a8ff4230870ed\n"
    },
    {
      "commit": "f5b8671c340f189c50b41c53622f979b6d5e0a57",
      "tree": "fe81dca6cd70d011c62a036b3fc0f940cc71bf23",
      "parents": [
        "003c15d72ccd3856d5abfe6d66a2a40d0eca85bc"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 05 17:42:41 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 05 17:42:41 2011 -0800"
      },
      "message": "Fix issue #5714517: App shortcuts can result in bad task intents\n\nNew API to let you build an Intent whose base configuration is correct,\nbut has an additional \"selector\" to pick out the specific app that you\nwould like launched.\n\nChange-Id: Ide9db6dc60e2844b7696cfe09b28337fe7dd63db\n"
    },
    {
      "commit": "d8c98fee02b5498270344727d1289004d98c0e73",
      "tree": "87512279361711cb33abd2d465be2661076a2a75",
      "parents": [
        "b90a70d1542edd5a95e73b75192e6eb5a66401cc"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 15 11:29:38 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 15 14:15:58 2011 -0800"
      },
      "message": "Improve low memory dropbox reporting.\n\nThe msg is now constructed to try to bin these reports in\ninteresting ways.  We\u0027ll see.  Also change the tag name from\nwatchdog to lowmem, since sharkey is kindly taking care of\nthe back-end to handle this.\n\nImprove how we put processes into low memory states to better\npoke things like home and the previous app.\n\nAlso clean up some debug output, and add a few new am comment\noptions for controlling the current debug app.\n\nChange-Id: I562a931a95244a2727bb7a6e1fd80dec259cdae2\n"
    },
    {
      "commit": "e4d4fbc8c0257a79d9c6091cea2c264415bd2733",
      "tree": "1f25ddfe43638541f1ddddb13018daede1995935",
      "parents": [
        "665e105f145fcb27a54d53c6c9382bebf50a56d7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 08 11:53:28 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 08 15:44:34 2011 -0800"
      },
      "message": "Add drop box reports of low memory.\n\nWe are tagging these as \"watchdog\" to make them visible in the\nreporting tools.\n\nAlso new am command to kill all background processes, mostly to make\nit easier to test this stuff.\n\nChange-Id: Ib9dc4747cd8bd44156fdf11d6a087cd4272203eb\n"
    },
    {
      "commit": "2c84cfc001fb92a71811bf7384b7f865ff31ff9d",
      "tree": "1d43eda4854e37a553b85ce759ea4fffd41c9edb",
      "parents": [
        "dd79b4c85a9dd2c2ad702ea2137fe2a076567fa1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Oct 31 15:39:59 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Oct 31 16:52:34 2011 -0700"
      },
      "message": "Various performance and other work.\n\n- IME service now switches between visible and perceptible depending on\n  whether it is being showm, allowing us to more aggressively free its\n  memory when not shown.\n\n- The activity display time is no longer delayed by the activity\n  transition animation.\n\n- New -R (repeat) option for launching activities with the am command.\n\n- Improved some documentation on Loader to be clear about some methods\n  that apps should not normally call.\n\n- FrameworkPerf test now allows you to select individual tests to run.\n\nChange-Id: Id1f73de66dc93d63212183958a72119ad174318b\n"
    },
    {
      "commit": "0bb1e9139e30aa954f46b0b6fdec2595fac33b80",
      "tree": "c403956eee09fa684d2e92d893ed576fddfdcbee",
      "parents": [
        "0a2f9664737f112e7a15d8b28e053469845a5a80"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 16 12:54:24 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 16 13:24:53 2011 -0700"
      },
      "message": "Small improvements to am command.\n\nThe start command can now take a package name or component name\nfor easier starting.  New -S option allows you to force stop an\napp before starting it.\n\nChange-Id: I5c55b34dd794783f0f5f51851dc811b8c1b39b76\n"
    },
    {
      "commit": "62f20ecf492d2b29881bba307c79ff55e68760e6",
      "tree": "58ea602138a28fb3555368900acbad6219ae2de2",
      "parents": [
        "0f2da17a9523fc40bceb5209cabd044df648e98e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 15 17:40:28 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Aug 15 17:55:57 2011 -0700"
      },
      "message": "Add new am option to profile the launching of an activity.\n\nChange-Id: Ie71a8043eafe41f53a0b3dbb5170276d87acbc9b\n"
    },
    {
      "commit": "7eabe55db6b113f83c2cefcd06812648927de877",
      "tree": "a105d90d8addbce9bb457b4bef974ce2f699fc81",
      "parents": [
        "ac4159549c10dbe428d42980278c0e43ecc8d93f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 21 14:56:34 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 21 14:56:34 2011 -0700"
      },
      "message": "Add looper profiling to adb shell am\n\nTo profile the looper, run the following command:\n\nadb shell am profile looper start \u003cprocess\u003e \u003cfile\u003e\nadb shell am profile looper stop \u003cprocess\u003e\n\nChange-Id: I781f156e473d7bdbb6d13aaffeeaae88bc01a69f\n"
    },
    {
      "commit": "8ffb0c0210857210a51d7a9a0f1afb73afbf8677",
      "tree": "3ce281a62dcb94c3932b6830c7b3e42091c4d532",
      "parents": [
        "4a6d113ba0f33ce5dc14e59463e928ba309e1c2e"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Jul 07 22:45:11 2011 -0700"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Jul 07 22:50:54 2011 -0700"
      },
      "message": "allow Uri as intent extra in am command\n\nWhen composing an intent using am command line, certain extra fields\nneed to be added as a Uri (a Parceable in fact).\n\nThis patch adds a \"--eu\" parameter so that the provided value is\nparsed as a Uri then added into intent\u0027s extra bundle.\n\nChange-Id: I7110829554962d314aa58fd25083dd5041680a73\n"
    },
    {
      "commit": "46d110329e659cc9cb9514e220ce273701eb151d",
      "tree": "17e69181373b20f3ca37857e63a3bbd378e87e7f",
      "parents": [
        "58b868417755805ebdfe4feb65664ad98c00bf35"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 24 13:22:45 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 24 13:22:45 2011 -0700"
      },
      "message": "Small cleanup of am/pm commands.\n\nChange-Id: I5af730bc177635821a82d4dd3ec9130a5dcd525a\n"
    },
    {
      "commit": "351f32270a489577e040bbeccc423b0bac1637dc",
      "tree": "65ada0e6cbf429e7cb094d536d5c84746c56bc87",
      "parents": [
        "8eed7aded77b826738c82cfe3b6a1440ac0786d9"
      ],
      "author": {
        "name": "Xianzhu Wang",
        "email": "wangxianzhu@google.com",
        "time": "Fri May 13 15:46:20 2011 +0800"
      },
      "committer": {
        "name": "Xianzhu Wang",
        "email": "wangxianzhu@google.com",
        "time": "Fri May 27 10:26:04 2011 +0800"
      },
      "message": "Add force-stop subcommand for \u0027am\u0027.\n\nIt\u0027s useful for some testing and debugging, to ensure all processes\nare stopped before testing. \u0027kill\u0027 doesn\u0027t always work because sometimes the\nsystem will restart the process immediately (e.g. if an app is running in\nbackground).\n\nChange-Id: I2c0caa38f74ee65ad6c35172fbf505227be7e7c3\n"
    },
    {
      "commit": "7916ac65dc492e4e1431879875c77d7121fbf82e",
      "tree": "a673e4cc163ea0e1d27d5a38fd2d37003812e37d",
      "parents": [
        "8f3dbe1c377e64584c3ec10edf664fb278648109"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 16 20:45:48 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 16 20:55:41 2011 -0700"
      },
      "message": "Add new command line option to change global screen size.\n\nFor example:\n\nadb shell am display-size 1024x600\n\nChange-Id: I5df462acd3323bdaaaefa3126faea7dd8595b726\n"
    },
    {
      "commit": "0f1de9adde0b52d2a385a76232bd7ac30c3eeea2",
      "tree": "6d30064324ea987411955a88cb0272ddb27d39b2",
      "parents": [
        "f3cdea937b8b659f959d5e77f4a17f749f85c6ae"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 11 17:34:49 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu May 12 13:28:45 2011 -0700"
      },
      "message": "New compat mode front end: UI and persistence.\n\nAdds a really crappy UI for toggling compat mode.\n\nPersists compat mode selection across boots.\n\nTurns on compat mode by default for newly installed apps.\n\nChange-Id: Idc83494397bd17c41450bc9e9a05e4386c509399\n"
    },
    {
      "commit": "e2515eebf42c763c0a2d9f873a153711778cfc17",
      "tree": "ee159940f05c439d0524771bfbfe6b551c82c2d4",
      "parents": [
        "158e3582c03ab9e0221718da20fc8854bb9216d0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 27 18:52:56 2011 -0400"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 17:03:24 2011 -0700"
      },
      "message": "Better compat mode part one: start scaling windows.\n\nFirst step of improving app screen size compatibility mode.  When\nrunning in compat mode, an application\u0027s windows are scaled up on\nthe screen rather than being small with 1:1 pixels.\n\nCurrently we scale the application to fill the entire screen, so\ndon\u0027t use an even pixel scaling.  Though this may have some\nnegative impact on the appearance (it looks okay to me), it has a\nbig benefit of allowing us to now treat these apps as normal\nfull-screens apps and do the normal transition animations as you\nmove in and out and around in them.\n\nThis introduces fun stuff in the input system to take care of\nmodifying pointer coordinates to account for the app window\nsurface scaling.  The input dispatcher is told about the scale\nthat is being applied to each window and, when there is one,\nadjusts pointer events appropriately as they are being sent\nto the transport.\n\nAlso modified is CompatibilityInfo, which has been greatly\nsimplified to not be so insane and incomprehendible.  It is\nnow simple -- when constructed it determines if the given app\nis compatible with the current screen size and density, and\nthat is that.\n\nThere are new APIs on ActivityManagerService to put applications\nthat we would traditionally consider compatible with larger screens\nin compatibility mode.  This is the start of a facility to have\na UI affordance for a user to switch apps in and out of\ncompatibility.\n\nTo test switching of modes, there is a new variation of the \"am\"\ncommand to do this: am screen-compat [on|off] [package]\n\nThis mode switching has the fundamentals of restarting activities\nwhen it is changed, though the state still needs to be persisted\nand the overall mode switch cleaned up.\n\nFor the few small apps I have tested, things mostly seem to be\nworking well.  I know of one problem with the text selection\nhandles being drawn at the wrong position because at some point\nthe window offset is being scaled incorrectly.  There are\nprobably other similar issues around the interaction between\ntwo windows because the different window coordinate spaces are\ndone in a hacky way instead of being formally integrated into\nthe window manager layout process.\n\nChange-Id: Ie038e3746b448135117bd860859d74e360938557\n"
    },
    {
      "commit": "62f2ada64f7213243eafd7a4a4c3ccd5040ad85a",
      "tree": "89da1077376b3f28e2cc680ef4d0ca54a2431e24",
      "parents": [
        "99291b95b2ee1e1b2371806e6f6c96767a350c88"
      ],
      "author": {
        "name": "David Deephanphongs",
        "email": "dpanpong@google.com",
        "time": "Tue Oct 19 14:54:05 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Oct 19 16:56:02 2010 -0700"
      },
      "message": "Add missing NOTICE entries.\n\nAdd missing NOTICE block for TagSoup in general NOTICE file.\nAdd comment in Android.mk to help reviewers locate the NOTICE for apache-http.\nModify build rule for \u0027am\u0027 command to pull in the NOTICE file.\n\nChange-Id: I43c6c1468395b70d0942b3620f12e4b6f3d9a66b\n"
    },
    {
      "commit": "405e012681aa563b1d7b66c671c90ed2deb26e41",
      "tree": "6687aa617fea8213148702c68e4da9083122eb0c",
      "parents": [
        "3011b6617232d1ef7c1687d1db9e780fce978d30",
        "deaa8ff1b10d38add4f7c276e7be2ffc19359a14"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 24 15:58:25 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 24 15:58:25 2010 -0700"
      },
      "message": "am deaa8ff1: am a7ef18fc: Merge \"Some debugging support.\" into gingerbread\n\nMerge commit \u0027deaa8ff1b10d38add4f7c276e7be2ffc19359a14\u0027\n\n* commit \u0027deaa8ff1b10d38add4f7c276e7be2ffc19359a14\u0027:\n  Some debugging support.\n"
    },
    {
      "commit": "f123e49bf0708719b51a7064ae134c097abe4a54",
      "tree": "73c218afbbede522ca5c7d70b1399cf55609ca5d",
      "parents": [
        "6d8fae722cfb2833dd542b2a5e613582a9096fc6"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 24 11:16:23 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Sep 24 13:11:55 2010 -0700"
      },
      "message": "Some debugging support.\n\n- New feature to \"am monitor\" to have it automatically launch\n  gdbserv for you when a crash/ANR happens, and tell you how to\n  run the client.\n\n- Update dumpstate to match new location of binder debug logs\n\n- Various commented out logs that are being used to track down\n  issues.\n\nChange-Id: Ia5dd0cd2df983a1fc6be697642a4590aa02a26a5\n"
    },
    {
      "commit": "846df9f5171c4ef32f038cca651b6b9c0b6c3083",
      "tree": "e14bba46d6af691a2832907f6b3f64caac3c736c",
      "parents": [
        "fea28c9367c9d1a48ae56c554dd51a428f2d1b03",
        "8952a4488e81205e3013b6b456dec503e05eebd0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 23 19:08:08 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 23 20:33:19 2010 -0700"
      },
      "message": "resolved conflicts for merge of 8952a448 to master\n\nChange-Id: I9c752a5d10ae8d8e5ead1243b6abd4795204fc0b\n"
    },
    {
      "commit": "287952c35e148811c106bc0f5036eabf20f71562",
      "tree": "baf7ae1e8a086c6e14138536caa925b2a793ce69",
      "parents": [
        "f9ec03c0f5fc2c6eba5bbead24c4eb314c0205be"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Sep 22 22:34:31 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 23 15:59:28 2010 -0700"
      },
      "message": "Fix issue #3022508: Crash during media scan\n\nDon\u0027t kill processes for excessive wake lock use, even if they\nare in the background, as long as they have running services.\n\nAlso fix some problems with this, such as not noting the kill\nin battery stats.\n\nAnd add killing of processes for cpu usage as well, along with\nsome optimizations to computing CPU usage.\n\nAnd fix BatteryWaster to be better behaving for testing these\ncases.\n\nAdd new \"monitor\" command to am to watch as the activity manager\ndoes stuff (so we can catch things at the point of ANR).\n\nFinally some miscellaneous debug output for the stuff here, as\nwell as in progress debugging of an ANR.\n\nChange-Id: Ib32f55ca50fb7486b4be4eb5e695f8f60c882cd1\n"
    },
    {
      "commit": "2d1b7a22390a355aa079473810e2b9914af88274",
      "tree": "e17464adec29281be1f881a8f0fa1b800ec8b9a3",
      "parents": [
        "018b0d2918e59b28852d07b90c2d3153533267aa"
      ],
      "author": {
        "name": "Jack Veenstra",
        "email": "veenstra@google.com",
        "time": "Wed Sep 08 11:25:17 2010 -0700"
      },
      "committer": {
        "name": "Jack Veenstra",
        "email": "veenstra@google.com",
        "time": "Wed Sep 08 11:42:33 2010 -0700"
      },
      "message": "Add support for giving arrays of ints and longs to the \"am\" command.\n\nChange-Id: Ibc4ae63fb5f8025a847bec7d37a1fce5abd81b39\n"
    },
    {
      "commit": "f9b5eed81d690ab8f336cb3345b46a36e278f180",
      "tree": "1c970e0a2a7e8caad50986cca97c5455056dae3b",
      "parents": [
        "7dff1a72146ba549d51649ad786a0e1cc8b6897c"
      ],
      "author": {
        "name": "Joe Malin",
        "email": "jmalin@google.com",
        "time": "Mon Aug 30 14:10:05 2010 -0700"
      },
      "committer": {
        "name": "Joe Malin",
        "email": "jmalin@google.com",
        "time": "Mon Aug 30 14:10:05 2010 -0700"
      },
      "message": "Doc Change:ActivityManager usage doc:running test package\n\nChange-Id: I9a0c28e59f87e30c81d18162bee082b851d07a94\n"
    },
    {
      "commit": "6a69b4fbaee9a8251401453cd2d3509d52f5b91c",
      "tree": "08c61f59e1a8bf15148c30235bfef24dff008744",
      "parents": [
        "7a9f6faa3c1a058d27548a329df464f2eaf1f7d1"
      ],
      "author": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Tue Aug 24 18:39:55 2010 -0700"
      },
      "committer": {
        "name": "Makoto Onuki",
        "email": "omakoto@google.com",
        "time": "Tue Aug 24 18:39:55 2010 -0700"
      },
      "message": "Add --el option to am for long extras.\n\nChange-Id: I13b92284fa4e0765620552b7d9b08d7441254389\n"
    },
    {
      "commit": "7b750542d68773c0df12ec747af292d458b59f45",
      "tree": "967a36f83ac61d016a27894dbb5931a1f32b3e1a",
      "parents": [
        "2338f48ddb3d1746c2d46df85fdc4dcd6cfa240b"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@google.com",
        "time": "Fri Aug 13 16:28:30 2010 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@google.com",
        "time": "Fri Aug 20 09:24:02 2010 -0400"
      },
      "message": "Fix incorrect usage text for am.\n\nChange-Id: I95afb3bd02ce23bb8d0797ec4c33e27a9530988e\n"
    },
    {
      "commit": "824c510752fd6a30cdba5ed7324cb80a5043ce26",
      "tree": "701346031a5b93e71c73f4786f1a276e1f6053db",
      "parents": [
        "2707d6026240bcca6f0e35e2e1138958882e90ce"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Jul 09 16:26:57 2010 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Jul 12 13:35:14 2010 -0700"
      },
      "message": "Allow \"am\" to initiate heap dumps.\n\nThis was mostly cloned from the \"am profile\" implementation.  It\u0027s\nintended to replace the old \"kill -10\" approach used by \"runhat\".\n\nWe could really use a native heap dump, so I pass a \"managed\"\nflag through that indicates whether we want to dump the native or\nmanaged heap.  We don\u0027t currently have a native heap dump-to-file\nfunction, so it currently just logs a warning.\n\n(android.ddm.DdmHandleNativeHeap.getLeakInfo is a good start -- it\ncopies /proc/maps and then calls get_malloc_leak_info to get some\ngoodies.  Needs some formatting to make it human-readable.  I didn\u0027t\nwant to cram all that into this change.)\n\nIt would be useful if \"am\" didn\u0027t exit until the heap dump operation\ncompleted, but I\u0027m not sure how to do that.\n\nBug 2759474.\n\nChange-Id: I46bc98067738d8c72ac0fc10002ca67bb4929271\n"
    },
    {
      "commit": "d6c0bb0f0f3827f1c336db20ac9dc0eb90cd46fa",
      "tree": "8409eea06150b5892a243b80d7ea407e63310133",
      "parents": [
        "aa2fe148496858e17d0ffd2b8d5d29b89d400934",
        "2b9a49a30d2ce1176cbd90741897705bec32d0bd"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed May 19 08:28:32 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed May 19 08:28:32 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: I0598edad283a177a5ddcc30e20d2284503e6038e\n"
    },
    {
      "commit": "746a95ab7145a1c7583d1f2d6004a508cd7a31dc",
      "tree": "067e8da2b4c6ecdd5d4f6327ee0aa36387285490",
      "parents": [
        "1152df7e82f1501e72aee1641d028bd7201f6d0b"
      ],
      "author": {
        "name": "Christian Mehlmauer",
        "email": "FireFart@gmail.com",
        "time": "Mon May 17 21:16:20 2010 +0200"
      },
      "committer": {
        "name": "Christian Mehlmauer",
        "email": "FireFart@gmail.com",
        "time": "Mon May 17 21:16:20 2010 +0200"
      },
      "message": "Removed Calls to deprecated APIs\n\nChange-Id: I3f9b6a8d3c8a050156a6cc7ea0eb9de33b82f79a\n"
    },
    {
      "commit": "69acb6b746c82f88607b3365795ebb3279188eed",
      "tree": "cd36e73daeba0b2f24ba77fde8643e98c866eeca",
      "parents": [
        "d4dd85d532dcd383a2f6b421e747b5ab07246d19"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Apr 16 12:52:47 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Apr 16 12:55:48 2010 -0700"
      },
      "message": "Unify am startservice commands.\n\nThis replaces the implementation with an equivalent one.\n\nChange-Id: I1343ddee9414a67906cd426b8381ddbace873894\n"
    },
    {
      "commit": "d4dd85d532dcd383a2f6b421e747b5ab07246d19",
      "tree": "2bcf1bde78fe3c0f2c470da8779653512539dc7a",
      "parents": [
        "69e398bd14fc909bb5f854c435fd210ae0974748"
      ],
      "author": {
        "name": "Anthony Newnam",
        "email": "anthony.newnam@garmin.com",
        "time": "Wed Apr 14 14:34:41 2010 -0500"
      },
      "committer": {
        "name": "Garmin Android technology group",
        "email": "android@garmin.com",
        "time": "Wed Apr 14 14:35:11 2010 -0500"
      },
      "message": "Allow Am to start services\n\nChange-Id: I31d066ae2c980cc293e55034446a63a0f42088ad\n"
    },
    {
      "commit": "5ef402baafc4818ccdf2aaec5da9cf25dd1c0e12",
      "tree": "6678df993ee5d0af105bcb948472d747fd27059d",
      "parents": [
        "9c3cee9824026764275e4d84ba9b5d9fdc5da690"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 26 17:17:25 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Mar 26 17:17:25 2010 -0700"
      },
      "message": "Fix issue #2538228: Intents targeting browsers constantly nagging\n\nSome applications are setting the MIME type field for an http:\nintent, which is technically wrong because the recipient opening\nthe URI will get the MIME type from the header.  This was hitting\na bug when we compute the intent filter when setting the\npreferred activity, where we have to set both the MIME type and\ndata URI for the intent filter.  (For file: and content: URIs\nonly the MIME type is needed, since these can be opened directly\nthrough ContentResolver so everyone is presumed to be able to\nhandle them.)\n\nChange-Id: Ia7025e6859e9c90997bf56c2c80f225fca7a2007\n"
    },
    {
      "commit": "8f7f35e0ccd91c964b9d3eeef81ff829622dfa74",
      "tree": "f00fafb472259f5b1cfa416b54cf62a2c3bef735",
      "parents": [
        "59dc9ecec6e4f53a1a2934b08c7f779d2b0a0d9a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 25 18:48:12 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Feb 26 16:34:33 2010 -0800"
      },
      "message": "Add new -W option to Am to wait for the start to complete.\n"
    },
    {
      "commit": "6fb35fe1accfbdcbf0252e55cf7ef823c12f4c05",
      "tree": "9665f7db74016860efaf894244562c8f39d3f297",
      "parents": [
        "9ff1f96fdf1c88c55c45e0876b10a3a9686dc28a"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Feb 24 11:13:26 2010 -0800"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Wed Feb 24 11:37:35 2010 -0800"
      },
      "message": "add \"startservice\" option to am command-line utility\n\nAllows starting Services in addition to Activities.\n\nChange-Id: Ib078115f6200faa8907b35909af2f64b0c563b38\n"
    },
    {
      "commit": "305e1b8fe926430e63d167ebed0c1f4d191ebcdc",
      "tree": "1ce084ed7c14c9d8c0f9723dc65e26d16b9046a9",
      "parents": [
        "3766ae5551e6231c251b0af38206aea30a49df63"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Nov 30 16:15:15 2009 -0800"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Mon Nov 30 16:15:15 2009 -0800"
      },
      "message": "add --esn option to am to allow adding extra with a null value\n"
    },
    {
      "commit": "68d881cf2d2b252f6f795cd64d43e316a1d736e5",
      "tree": "3d0f7cb91e612df7a5663ceefec0b5439c907642",
      "parents": [
        "71060f29855745893c122e8b93cf7a723186931b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Oct 05 13:58:17 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Oct 05 15:52:32 2009 -0700"
      },
      "message": "Fix issue #2166755: BroadcastReceiver trying to return result during a non-ordered broadcast\n\nTell the broadcast receiver whether it is getting an initial sticky value,\nso it will be quiet about attempts to do ordered broadcast stuff.\n\nNote that the original bug being reported was not actually a crash, just\nan error log.  So all we are doing here is making the log quieter.\n\nChange-Id: Iaf1b718d82093ec1197142410a64feff47eb3859\n"
    },
    {
      "commit": "9f4af53561daae8ffe77157068d67ab10d9e2a4d",
      "tree": "2354fec04e81ba8b2daaa38e1974b5b2c63a6f1d",
      "parents": [
        "2f140bdb8a22a6328023a5cd7d19ecd57e6662d9"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Wed Jul 22 14:06:56 2009 -0700"
      },
      "committer": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Wed Jul 22 16:56:55 2009 -0700"
      },
      "message": "Make intent broadcasts in \"am\" synchronous (they wait until exit).\nClean up error handling and reporting in \"am\".\nMake the usage message for \"am\" more informative.\n\nMake it easier to turn on logging in GoogleHttpClient.\n"
    },
    {
      "commit": "9c8dd55a9d829c29a3feee9469d8c2f27a9f5516",
      "tree": "deb1f95fbdc6972bf1d50fffb79ef2c74731314b",
      "parents": [
        "0bc7b8490b1575bb8266a3b0c6652d4f460fcda1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 23 19:22:52 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 24 16:23:14 2009 -0700"
      },
      "message": "Fix bug 1829561 (\"am profile\" with bad filename kills process).\n\nThe am command is now the one that takes care of opening the target file,\nhandling the opened file descriptor to the process that will be profiled.\nThis allows you to send profile data to anywhere the shell can access, and\navoids any problems coming up from the target process trying to open the\nfile.\n"
    },
    {
      "commit": "c62a216a2bb877b3b8c968cc90ab6c1f10605edc",
      "tree": "ba99af94f1a63b1f362e000cdf3e2313250c13c0",
      "parents": [
        "a41962065a93b63e7161cffd662b564e01a9e189"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jun 04 12:04:03 2009 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Thu Jun 04 12:04:03 2009 -0700"
      },
      "message": "The \u0027-D\u0027 option for the \u0027am\u0027 command appears to be optional, so reflect that in the usage.\n"
    },
    {
      "commit": "95fc68f24a2a93e5664e2234abcfe479d385cc05",
      "tree": "6f8f8071cf8a69d82fd16c1d5455ea81d31e1275",
      "parents": [
        "ee748d37b01b3affb72b701d95ba20c189887b5f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 19 18:37:45 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 19 18:46:53 2009 -0700"
      },
      "message": "Fix issue where apps could prevent the user from going home.\n\nNow we have a 5-second time after home is pressed, during which\nonly the home app (and the status bar) can switch to another app.\nAfter that time, any start activity requests that occurred will\nbe executed, to allow things like alarms to be displayed.  Also\nif during that time the user launches another app, the pending\nstarts will be executed without resuming their activities and\nthe one they started placed at the top and executed.\n"
    },
    {
      "commit": "abc25e3679a9de2625eadf3e3050a6973f7a6c71",
      "tree": "f72e763ae34c1db2a78daffbdf928712b58a9d63",
      "parents": [
        "a38b427a7a6d2658dc3e3083bc6c263a3d4d7af3"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Wed May 13 19:22:08 2009 -0700"
      },
      "committer": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Fri May 15 11:59:31 2009 -0700"
      },
      "message": "Add intent for gservices override, and handle empty arguments properly\nin the \"am\" utility.\n"
    },
    {
      "commit": "f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2",
      "tree": "3a24d2250b24d928cd5b67936affc4f0ac3b599b",
      "parents": [
        "53b404521227d30353f0f2421458103dff903626"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Mar 05 20:00:43 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Mar 05 20:00:43 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@136745\n"
    },
    {
      "commit": "9066cfe9886ac131c34d59ed0e2d287b0e3c0087",
      "tree": "d88beb88001f2482911e3d28e43833b50e4b4e97",
      "parents": [
        "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "076357b8567458d4b6dfdcf839ef751634cd2bfb"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "54b6cfa9a9e5b861a9930af873580d6dc20f773c",
      "tree": "35051494d2af230dce54d6b31c6af8fc24091316",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
