)]}'
{
  "log": [
    {
      "commit": "19bec5b329fe202795688bfb76d77f4560adf2c6",
      "tree": "e046660c0f6fcf1038982323810cb15e0326d591",
      "parents": [
        "468978294e130807cc37ed295115863c2d7bacaa"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Sep 22 15:52:57 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Sep 23 12:53:38 2015 -0700"
      },
      "message": "Adb: use VLOG() to replace D() for verbose logging.\n\nAs there are too many D(), we can keep both VLOG() and D() now, and get\nrid of D() gradually.\n\nChange-Id: I2f1cb70bcab3e82c99fed939341d03f6b2216076\n"
    },
    {
      "commit": "815ad88d465c07b09eae296db6f41b7bef3c3cc4",
      "tree": "b52bacf0f8fdeaad7b5dfa89f3ffeff841dc8e1d",
      "parents": [
        "7d5e6e62f2d618ba376cbc9b8a5def881a73f1a9"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Sep 02 17:44:28 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Sep 02 20:21:00 2015 -0700"
      },
      "message": "adb: clean up debug tracing a little.\n\nAlways use LOG() for debug tracing.\nRemove useless D_lock. I believe it is useless to lock just before and after fprintf.\n\nI verified the log output both on host and on device. The output looks fine to me.\n\nChange-Id: I96ccfe408ff56864361551afe9ad464d197ae104\n"
    },
    {
      "commit": "4e22229d86690f03e2cce8cec3e558144f6b7d58",
      "tree": "26a83477f453936dea5ac38c75a15be3f66acfd0",
      "parents": [
        "402331e9b626f9252eaf1369e8f8e09e9e66ef8d"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Aug 31 11:50:24 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Aug 31 13:34:27 2015 -0700"
      },
      "message": "adb: improve names for transport threads.\n\nThe old names seems confusing. output_thread was reading remote data and writing to\nlocal sockets. input_thread was reading local sockets data and writing to remote.\nThis change tries to make it clear by renaming output_thread to read_transport thread,\nand renaming input_thread to write_transport thread.\n\nChange-Id: I2e7b4cde7a94d436f3745e9e3ab10780e7caa8ac\n"
    },
    {
      "commit": "2669cf9b61e4b222a012750baac7725ae2327618",
      "tree": "eccb8a0b47c4c07b4fcebebb08305593b4c6a2a8",
      "parents": [
        "5fea4913485a45bb8d63bf5fa7a60dc80284e155"
      ],
      "author": {
        "name": "Siva Velusamy",
        "email": "vsiva@google.com",
        "time": "Fri Aug 28 16:37:29 2015 -0700"
      },
      "committer": {
        "name": "Siva Velusamy",
        "email": "vsiva@google.com",
        "time": "Mon Aug 31 07:52:52 2015 -0700"
      },
      "message": "adb: set thread names (linux \u0026 mac)\n\nBug: 23423333\nChange-Id: I0069f32ddbae2a10fb130064f721facf45b2cc09\n"
    },
    {
      "commit": "24f9b083cba742a1f118ad85d81a63f2ae854d71",
      "tree": "bd08afcb9e4e5f1370698732264a5cf01afacbbe",
      "parents": [
        "a4169f96db89a7dae57f7d90b4d1b9dfb21f2259"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 27 21:21:39 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 28 08:07:21 2015 -0700"
      },
      "message": "Fix const-ness of strrchr callers.\n\nThis causes build failures in google3 where they use GCC. glibc only\nprovides const-correct overloads for string functions for GCC \u003e\u003d 4.4,\nbut clang -- which is what we use -- pretends to be GCC 4.2.\n\nChange-Id: I2a054823ea6201ebcea46d5e77b80a975eefc622\n"
    },
    {
      "commit": "3af421c6bd91a2f67fd9f9b5f90f7b9fb0870d8a",
      "tree": "e195b89eb0c13b621e6116ca4e25a90d75f02d6f",
      "parents": [
        "6cde25edd8c2ef313aebe5852496baa5218ee48a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 23 15:20:09 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 24 12:35:50 2015 -0700"
      },
      "message": "Clean up the locking in usb_linux.cpp.\n\ntsan complained that usb_bulk_write accesses usb_handle members outside\na lock. Fix that, but by moving everything over to C++11 locking.\n\nNote that the old code was checking whether pthread_cond_timedwait returned\na negative value, which it will never do --- it will signal timeout (or\nany other error) by returning a positive errno value. The rewrite does\nwhat they appeared to intend to do (break out on timeout), rather than\nwhat they actually did (keep trying forever).\n\nBug: http://b/22598587\nChange-Id: Iab6869ffed4874143a7da97193d6b09e34cf2933\n"
    },
    {
      "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": "3a2421b940e844e6c29da9ec389da42dc87f90f2",
      "tree": "331a2e72aa1ce7167daba893914f0ffc386b1b2f",
      "parents": [
        "b1d05de8a377b369b424d0e6c79f1843581bc1e9"
      ],
      "author": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Fri May 22 20:09:06 2015 -0700"
      },
      "committer": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Fri May 22 20:20:49 2015 -0700"
      },
      "message": "adb: fix adb_close() vs. unix_close() usage\n\nDocument the differences between adb_*() and unix_*() in the function\nprototypes in sysdeps.h. See the file for the details (CR/LF\ntranslation, well-known file descriptors, etc.).\n\nFix adb_read(), adb_write(), and adb_close() calls that should really be\nunix_read(), unix_write(), and unix_close(). Note that this should have\nno impact on unix because on unix, unix_read/unix_write/unix_close are\nmacros that map to adb_read/adb_write/adb_close.\n\nImprove sysdeps_win32.cpp file descriptor diagnostic logging to output\nthe name of the function that was passed a bad file descriptor.\n\nChange-Id: I0a1d9c28772656c80bcc303ef8b61fccf4cd637c\nSigned-off-by: Spencer Low \u003cCompareAndSwap@gmail.com\u003e\n"
    },
    {
      "commit": "53a3744981a350cd3a35f7e062c6fd05cf8be24a",
      "tree": "76bd2c0a306a9dac27d9c9b03e72a241a56e61c9",
      "parents": [
        "e66e677c1d14ad932700d37844d8e78bec584078"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri May 08 16:13:53 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri May 08 17:33:21 2015 -0700"
      },
      "message": "Revert \"Revert \"Split adb_main.cpp into client and daemon.\"\"\n\nThis reverts commit 151f4887d194a642b4a276276344d4ea5b05d477.\n\nChange-Id: I74088db34983dc99e316a07c6ddc294340e0eb71\n"
    },
    {
      "commit": "151f4887d194a642b4a276276344d4ea5b05d477",
      "tree": "0e11729e2cedfdc40c88cab2982ec76a495689d0",
      "parents": [
        "100889ccbdc10c603445feb83455d9438b932289"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri May 08 16:08:57 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri May 08 16:08:57 2015 -0700"
      },
      "message": "Revert \"Split adb_main.cpp into client and daemon.\"\n\nThis reverts commit ad87c02ce2e9545a255991b646e057337718b728.\n"
    },
    {
      "commit": "ad87c02ce2e9545a255991b646e057337718b728",
      "tree": "498db75192460a033fb1a8580f1ff6bc321b7324",
      "parents": [
        "818aa86ae676c2895a0779efcd9eb4e261c40be3"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue May 05 19:25:23 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri May 08 10:20:26 2015 -0700"
      },
      "message": "Split adb_main.cpp into client and daemon.\n\nThe name \"client\" is somewhat misleading as it also contains the host\nside adb server, but it\u0027s a part of the client binary.\n\nChange-Id: I128b7bab213e330eb21b5010cd1fec5f7a62c8af\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": "949f2620c7ae33742ad639cf893c007204dc2074",
      "tree": "79a717f47ad9c055e176bcd8da18a0d50e034d55",
      "parents": [
        "fd9cde9e0d33b60d1cf4538f1fe72cea5985f901"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 27 14:20:17 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 27 14:52:17 2015 -0700"
      },
      "message": "Support the full length of USB serial numbers.\n\nTwo bugs: we couldn\u0027t report the serial number correctly if it was long\nenough, and it wasn\u0027t possible to connect to a device whose serial number\nwas long enough to overflow a different fixed-length buffer.\n\nBug: http://b/20317730\nChange-Id: Ic9cf3c847066449ac78069bd1718184935098ac7\n"
    },
    {
      "commit": "5d50437045dfae5ed2b333a0842f26488a21619b",
      "tree": "8b944a88e2ffb8c3388aee8c2628ef22aee53468",
      "parents": [
        "86f97fe00dec583fe384e6b6246bd7ed52ce01ee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 25 14:44:23 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 25 14:44:23 2015 -0700"
      },
      "message": "Improve logging of USBDEVFS_CLAIMINTERFACE failures.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d170054\nChange-Id: I9b11eb019093e3322da0a8e70d6e17de4c25ab75\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": "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.\""
    }
  ]
}
