)]}'
{
  "log": [
    {
      "commit": "a1c60c0597f8f978fd6568c19fb90993592e031d",
      "tree": "167659e4796194f01f2109748ba035e5e7230f5f",
      "parents": [
        "34f6f58d0fdbaa23288ad4f79503bfd51c7a7ce5"
      ],
      "author": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Mon Jul 13 19:12:28 2015 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 22 13:06:06 2015 -0700"
      },
      "message": "Increase size of the the adb packets sent over the wire\n\nThe reason behing this change is to increase the adb push/pull speed\nwith reduceing the number of packets sent between the host and the\ndevice because the communication is heavily bound by packet latency.\n\nThe change maintains two way compatibility in the communication\nprotocol with negotiating a packet size between the target and the\nhost with the CONNECT packets.\n\nAfter this change the push/pull speeds improved significantly\n(measured from Linux-x86_64 with 100MB of data):\n\n           | Old push | Old pull || New push  | New pull  |\n-----------------------------------------------------------\nHammerhead | 4.6 MB/s | 3.9 MB/s || 13.1 MB/s | 16.5 MB/s |\n-----------------------------------------------------------\nVolantis   | 6.0 MB/s | 6.2 MS/s || 25.9 MB/s | 29.0 MB/s |\n-----------------------------------------------------------\nFugu       | 6.0 MB/s | 5.1 MB/s || 27.9 MB/s | 33.2 MB/s |\n-----------------------------------------------------------\n\nChange-Id: Id9625de31266e43394289e325c7e7e473379c5d8\n"
    },
    {
      "commit": "5c761bdf94bcdaf3a619cde002ef60c9b226f5c3",
      "tree": "62e95a1ffffde3814c2818c52b2d9404856b57ae",
      "parents": [
        "bba4d471283190dd9b153b7e13efdb28da0b6695"
      ],
      "author": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Tue Jul 21 02:06:26 2015 -0700"
      },
      "committer": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Tue Jul 21 02:06:26 2015 -0700"
      },
      "message": "adb: logging: newlines, thread ids, error code overwriting\n\nAdd missing \\n to uses of legacy D() macro. This should make the legacy\nlogging easier to read (and harder to miss important stuff).\n\nOn POSIX, use gettid() from libcutils instead of pthread_self() so that\nthe output shows a more reasonable number instead of a pointer value.\nThis should be ok since libbase\u0027s logging already uses gettid().\n\nWin32:\n\nDon\u0027t let the Win32 last error get overwritten by API calls after the\noriginal error\u0027ing API. When encountering an unknown error, log the\nspecific error code.\n\nChange-Id: Ib8f72754efa7ba895d2f1cd914251fec2a1d894c\nSigned-off-by: Spencer Low \u003cCompareAndSwap@gmail.com\u003e\n"
    },
    {
      "commit": "32129390457fdc1180c25718fa971681fb46d66e",
      "tree": "c9f42ccfb4f14bdba02a0aec2f3872678518a256",
      "parents": [
        "e91631558898a0b8f7a3ea2b74b7726d78c2f227"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jul 18 13:57:46 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jul 18 13:57:46 2015 -0700"
      },
      "message": "Fix adbd/adb server confusion in an error message.\n\nChange-Id: Iacb8bcfb1e8e1d46198ee4ba8cf0ec0d1b98c75a\n"
    },
    {
      "commit": "24f5276345d7f1b6cba973ed728179d7df0b8f22",
      "tree": "0b0aef126945f6a606906468a096d9826daab531",
      "parents": [
        "d7eb85491f7f2347a21fad16300f7f3c653f108b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 23 13:00:32 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 24 10:36:41 2015 -0700"
      },
      "message": "Improve the \"device \u0027(null)\u0027 not found\" error.\n\nNow we\u0027ll say \"no devices found\" if you haven\u0027t set ANDROID_SERIAL and\nthere\u0027s no device connected to default to.\n\nAlso clean up the relevant code a little.\n\nChange-Id: Id254929629ce0888628d5ba8e67cd996ffbf9c8a\n"
    },
    {
      "commit": "ecce503aa0bfb68469e4c8aef695813ba879e6de",
      "tree": "44e69daadd7a29502b54eac48eabfc36332523b9",
      "parents": [
        "9ca39e3b3771099dc41dd37968c56a2d15c3a4fc"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 18 16:46:31 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu May 21 15:49:05 2015 -0700"
      },
      "message": "Make atransport be a real class.\n\nUsing non-POD types in atransport means we\u0027ll need to start treating\nit as a real class (specifically with regards to new/delete rather\nthan malloc/free).\n\nI\u0027ve also cleaned up the home grown linked lists for transport_list\nand pending_list to just be std::lists. We might want to refactor that\nagain to be an std::unordered_map keyed on serial, since that seems to\nbe a common way to search it.\n\nChange-Id: I7f5e23cdc47944a9278099723ca029585fe52105\n"
    },
    {
      "commit": "9a50f4ccb8668f15c8d4eaf924fcfd769b1003ff",
      "tree": "797356a734389ac53d6f03132d7fa8af7af42dab",
      "parents": [
        "5bf0f162de66a2f5a189c75fc63aac23d7b2c387"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 18 16:43:57 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 18 17:10:33 2015 -0700"
      },
      "message": "Make connection states a proper type.\n\nChange-Id: I809f9b327c832b88dd63151bf7dcb012d88e81c4\n"
    },
    {
      "commit": "a8c34142be062033dfa930a4afcc0e2d2bd9013f",
      "tree": "3f19ad2bd56937f38a9ebb65f268727b3ca82953",
      "parents": [
        "ab93a04644f7a97114b81cf178d2c6201cb4a75d"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed May 06 16:48:52 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed May 06 16:48:52 2015 -0700"
      },
      "message": "Be tolerant of devices that don\u0027t report serials.\n\nThe USB spec explicitly says this is optional, so we shouldn\u0027t be\nrelying on it.\n\nBug: http://b/20883914\nChange-Id: Icf38405b00275199bcf51a70c47d428ae7264f2b\n"
    },
    {
      "commit": "f251714ebdf7669c67e79378859a88d4bb049f9d",
      "tree": "eca2dbcec26ca3d35cd24c0bb2ae54d1b9c70675",
      "parents": [
        "3aec2ba9f5297a94b52f479cbf741121e2910152"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 05 13:41:21 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 05 13:41:21 2015 -0700"
      },
      "message": "Simplify adb_thread_create.\n\nChange-Id: I36d6021ef8fbc23e8bcd4ddbe1dac0eba467cc70\n"
    },
    {
      "commit": "3aec2ba9f5297a94b52f479cbf741121e2910152",
      "tree": "02dc43658386df1391e0d6cf54d42bc53d41a234",
      "parents": [
        "32ce0f86ecc3f4a187de76e7facd4b0d171fe46b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 05 13:10:43 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 05 13:10:43 2015 -0700"
      },
      "message": "Give enum types CamelCase names for clarity.\n\nChange-Id: I1c89f1cc155ee839f372fb14d972a288183b8bcd\n"
    },
    {
      "commit": "fb59684b188e9dd2649592f5e357fd4996522138",
      "tree": "7849490fabea8d735e4096b9064e680b839012b3",
      "parents": [
        "88b4c85a6f7fbc094f55c9e5322e1e16857006a2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 01 17:04:38 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 01 17:36:46 2015 -0700"
      },
      "message": "Add WriteFdFmt and clean up more code.\n\nAlso say *which* device wasn\u0027t found.\n\nBug: http://b/20666660\nChange-Id: I50e234ad89e39ae0a8995083c0b642c61275c5a3\n"
    },
    {
      "commit": "88b4c85a6f7fbc094f55c9e5322e1e16857006a2",
      "tree": "5eae0ad266a6ac7680a12dd088142c1fb953fc7c",
      "parents": [
        "da94581ec4a749f738bebaaa5d0ebcca4017143e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 30 17:32:03 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 01 15:55:37 2015 -0700"
      },
      "message": "More adb buffer fixes.\n\nThis patch factors out a lot of the basic protocol code: sending OKAY,\nsending FAIL, and sending a length-prefixed string.\n\nADB_TRACE has been non-optional for a long time, so let\u0027s just remove\nthe #ifs.\n\nAlso actually build the device tracker test tool (and remove its duplicate).\n\nBug: http://b/20666660\nChange-Id: I6c7d59f18707bdc62ca69dea45547617f9f31fc6\n"
    },
    {
      "commit": "da94581ec4a749f738bebaaa5d0ebcca4017143e",
      "tree": "c3f9d2e92764ded1c8769b20e79a8f794a5a2976",
      "parents": [
        "b27e24180f62900160c5734d005706b6cf128efc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 29 12:28:13 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 30 11:25:05 2015 -0700"
      },
      "message": "More fixed-length buffer removal.\n\nBug: http://b/20666660\nChange-Id: I0c738e9fed2defed48a9cf2d0a4f7b99c08dcf3d\n"
    },
    {
      "commit": "d0269c99cc87a11189af7fb1c4d859dd95a154ac",
      "tree": "053900e4b7ac066f4f42e9756e0566419b0fff4d",
      "parents": [
        "f56c8f974162c27283f095fe7a66002c447ff75f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 21 19:39:52 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 21 19:43:22 2015 -0700"
      },
      "message": "Add missing null checks after allocations.\n\nBug: http://b/20317729\nChange-Id: I62bb761d48ee59a1f4ddd0cdd0632432305ca2ca\n"
    },
    {
      "commit": "ea62dfefe624687a2f1c847fb8347e3b4f4c19c9",
      "tree": "81b026e781f4cca03efaa16d4ad084c678ab8e7a",
      "parents": [
        "927cd19f21dc729381f37192b010f2a2c87926cd",
        "fe7ff81e12a8f8ca724b36cfa3fd33e8736057df"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 17 17:31:51 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 17 17:31:51 2015 +0000"
      },
      "message": "Merge \"Remove extern \"C\" barriers to using C++.\""
    },
    {
      "commit": "fe7ff81e12a8f8ca724b36cfa3fd33e8736057df",
      "tree": "472547b45e133c31da42343c1f534d8db847426e",
      "parents": [
        "c084e0c4116d0b001184a69c70d0ef564dc93579"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 17 09:47:42 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 17 09:47:42 2015 -0700"
      },
      "message": "Remove extern \"C\" barriers to using C++.\n\nChange-Id: Ic046d6aa540738cb46b54531bc59ba3b47b0136d\n"
    },
    {
      "commit": "ab88242ece4a44d79acb5dfc8dd52bb418f5c427",
      "tree": "4de96573c4e36b7fb03aa823f762a991d41c8f47",
      "parents": [
        "c084e0c4116d0b001184a69c70d0ef564dc93579"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 16 22:54:44 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 16 22:54:44 2015 -0700"
      },
      "message": "Show $ADB_VENDOR_KEYS if authentication fails.\n\nIncorrectly set $ADB_VENDOR_KEYS is the most likely cause of failed\nadb connections. Make it easier to debug such problems by including\nthe value in use in the error message.\n\nBug: 20165551\nChange-Id: I64c1d98ae6d3fb40eea9e1f0ddcfcf4f2d9d7318\n"
    },
    {
      "commit": "abfa720b5e3fbb8b2f8f2770123208c8e63bde77",
      "tree": "e2ec781df90cc79f513c3479e1304ca350d09077",
      "parents": [
        "ae50460656d4994ba80b3539ce091c03190ee161"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 03 16:12:15 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 03 16:12:15 2015 -0700"
      },
      "message": "Fix \"adb devices -l\".\n\nChange 4895c52db5ead27a2d9ffc4c3f97dbad269e795a switched to using isalnum(3)\nbut didn\u0027t take into account that isalnum has the opposite sense to the\nfunction it replaced, so the tests should have been inverted.\n\nBug: http://b/20056546\nChange-Id: I90630c0bea69ddbb4a95dc09f79f49d23fd497de\n"
    },
    {
      "commit": "db6fe6428c1ca5f397d3853f2b96c3e3e878b172",
      "tree": "7c788a60093d22977baee6c6625107abf40b66e3",
      "parents": [
        "0e0ce0662e948b9cfb1b42e48f18d3c4643b6c1e"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Mar 19 15:21:08 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Mar 19 15:32:33 2015 -0700"
      },
      "message": "File header cleanup.\n\n * sysdeps.h should always be included first.\n * TRACE_TAG needs to be defined before anything is included.\n * Some files were missing copyright headers.\n * Save precious bytes on my SSD by removing useless whitespace.\n\nChange-Id: I88980e6e00b5be1093806cf286740d9e4a033b94\n"
    },
    {
      "commit": "f30d73c74d85ccc2b1f55d6946f616e62d67e48e",
      "tree": "b2302299d3d083ba83949a80213b92d66540201f",
      "parents": [
        "b5f43a12723896c2d8fc98eed5abce563a16f56b"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Feb 25 17:51:28 2015 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Mar 09 14:06:11 2015 -0700"
      },
      "message": "Move adb to C++.\n\nI keep trying to clean things up and needing std::strings. Might as\nwell just do this now.\n\nusb_linux_client.c is going to stay as C because GCC isn\u0027t smart\nenough to deal with the designated initializers it uses (though for\nsome reason it is in C mode).\n\nThe Darwin files are staying as C because I don\u0027t have a way to test\nthat they build.\n\nThe Windows files are staying as C because while I can actually build\nfor them, it\u0027s slow and painful.\n\nChange-Id: I75367d29205a9049d34460032b3bb36384f43941\n"
    },
    {
      "commit": "b5f43a12723896c2d8fc98eed5abce563a16f56b",
      "tree": "f81933396150903b8b0d0fa38e9faa081376253a",
      "parents": [],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Mar 09 20:29:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 09 20:29:07 2015 +0000"
      },
      "message": "Merge \"Fix a writex transcription error.\""
    }
  ]
}
