)]}'
{
  "commit": "9270a20a801403c9f60d6a701b39eae70d380403",
  "tree": "5bdb058af5b05a65112297a504018ee356e0ddbb",
  "parents": [
    "210f887382e0fd7e51ec6ce071972374a76f0722"
  ],
  "author": {
    "name": "Doug Zongker",
    "email": "dougz@android.com",
    "time": "Mon Jan 09 15:16:13 2012 -0800"
  },
  "committer": {
    "name": "Doug Zongker",
    "email": "dougz@android.com",
    "time": "Tue Jan 10 10:18:17 2012 -0800"
  },
  "message": "support \"sideload over ADB\" mode\n\nRather than depending on the existence of some place to store a file\nthat is accessible to users on an an unbootable device (eg, a physical\nsdcard, external USB drive, etc.), add support for sideloading\npackages sent to the device with adb.\n\nThis change adds a \"minimal adbd\" which supports nothing but receiving\na package over adb (with the \"adb sideload\" command) and storing it to\na fixed filename in the /tmp ramdisk, from where it can be verified\nand sideloaded in the usual way.  This should be leave available even\non locked user-build devices.\n\nThe user can select \"apply package from ADB\" from the recovery menu,\nwhich starts minimal-adb mode (shutting down any real adbd that may be\nrunning).  Once minimal-adb has received a package it exits\n(restarting real adbd if appropriate) and then verification and\ninstallation of the received package proceeds.\n\nChange-Id: I6fe13161ca064a98d06fa32104e1f432826582f5\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a94ecc668903f5a2d03e7afc918f81757c2cc74e",
      "old_mode": 33188,
      "old_path": "Android.mk",
      "new_id": "7e48e7f645e65a9b0ef43662084a4eeed1b11232",
      "new_mode": 33188,
      "new_path": "Android.mk"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a226ea571e761bbff80777efff97c990d946ebca",
      "new_mode": 33188,
      "new_path": "adb_install.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a18b712a258a637a42ba5bb5d39b12e88dd00d19",
      "new_mode": 33188,
      "new_path": "adb_install.h"
    },
    {
      "type": "modify",
      "old_id": "265ed071e56100e4d9805fa59962d2231850b11f",
      "old_mode": 33188,
      "old_path": "default_device.cpp",
      "new_id": "648eaec4e1eb98c25b12058217f077d1928b0dbe",
      "new_mode": 33188,
      "new_path": "default_device.cpp"
    },
    {
      "type": "modify",
      "old_id": "8096a8d9f8ce9b8ccbbd5023b908cb00bb1f0f7c",
      "old_mode": 33188,
      "old_path": "device.h",
      "new_id": "583de75eff25d1b4b389a43561642e18cda2af1c",
      "new_mode": 33188,
      "new_path": "device.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5a4de682834015580dee27f9aa6482501ca785a8",
      "new_mode": 33188,
      "new_path": "minadbd/Android.mk"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0c190d05de4595ae5858aa068572f637290a6a11",
      "new_mode": 33188,
      "new_path": "minadbd/README.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d1e97b31fd47174dd63b64473b581829b2c74a37",
      "new_mode": 33188,
      "new_path": "minadbd/adb.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a989eddab72fbbbba92c600858b32b520643b3b9",
      "new_mode": 33188,
      "new_path": "minadbd/adb.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5c374a71bff8b64338547fdfd2d36f1c6c343cff",
      "new_mode": 33188,
      "new_path": "minadbd/fdevent.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a0ebe2a7ee2b2372f5dc1f06bd134b4bd92703d3",
      "new_mode": 33188,
      "new_path": "minadbd/fdevent.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "652dd7341ca29b82fadc7c8abc213c18238fd209",
      "new_mode": 33188,
      "new_path": "minadbd/mutex_list.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8fc8b3ccb859ef2d0c17b5abce3cbd688ba05b07",
      "new_mode": 33188,
      "new_path": "minadbd/services.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9f4cecb3a374934c08ec5348f62dba14c42274ac",
      "new_mode": 33188,
      "new_path": "minadbd/sockets.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b51807615d6472af3a6b305412b6ec91ea2c3a44",
      "new_mode": 33188,
      "new_path": "minadbd/sysdeps.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2f7bd2784a4db346a4dccb2b90bc9cbe17a64945",
      "new_mode": 33188,
      "new_path": "minadbd/transport.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "992e05285f92ad93430d5c96c5e7fa55c0efa1aa",
      "new_mode": 33188,
      "new_path": "minadbd/transport.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ee6b637b556c94ac981ea90cc1a676679d162263",
      "new_mode": 33188,
      "new_path": "minadbd/transport_usb.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "635fa4bbb61da737c846e4d195a8832c682ee57a",
      "new_mode": 33188,
      "new_path": "minadbd/usb_linux_client.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "91518bab669d31712970d1e9eb62b64c1aa6375d",
      "new_mode": 33188,
      "new_path": "minadbd/utils.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f70ecd24dd8daebe8f87f94fc027ab3e720b4b81",
      "new_mode": 33188,
      "new_path": "minadbd/utils.h"
    },
    {
      "type": "modify",
      "old_id": "da9334aae6e33437443742b7f98fda18eba20ce8",
      "old_mode": 33188,
      "old_path": "recovery.cpp",
      "new_id": "726442b84f4fd7547c582bf5af6c49778a217adc",
      "new_mode": 33188,
      "new_path": "recovery.cpp"
    }
  ]
}
