)]}'
{
  "log": [
    {
      "commit": "3cbf75aad9bff42f4d46fa744cf2a3547a63a1cf",
      "tree": "1966a2f60eac4c48f7372ed817ff86cd2d8a1ce9",
      "parents": [
        "c36807b1a84e6ee64e3f2380bbcbbead6d9ae7e4"
      ],
      "author": {
        "name": "Shaju Mathew",
        "email": "shaju@google.com",
        "time": "Wed Jul 05 17:01:32 2023 -0700"
      },
      "committer": {
        "name": "Shaju Mathew",
        "email": "shaju@google.com",
        "time": "Wed Aug 02 09:38:13 2023 -0700"
      },
      "message": "Addressing failing tests on Windows(get_host_socket_spec_port() and socket_spec_connect()) as well\nas assorted legacy failures on Mac.\n\nBug: 290119691\n\nTest: Ran adbd_test on Windows 10 Enterprise, Mac M1 and Linux hosts\n  - Windows: nativetest\\adb_test\u003e.\\adb_test.exe\n    Running main() from external/googletest/googletest/src/gtest_main.cc\n    [\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d] Running 78 tests from 16 test suites.\n    \u003csnip\u003e\n    [----------] 8 tests from AdbListenersTest (304 ms total)\n    [----------] Global test environment tear-down\n    [\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d] 76 tests from 16 test suites ran. (152379 ms total)\n    [  PASSED  ] 75 tests.\n    [  SKIPPED  ]  1 test, listed below:\n    [  SKIPPED  ]  adb_utils.directory_exisits_win32_symlink_junction\n\n        YOU HAVE 8 DISABLED TESTS\n  - Mac M1:\n    $ out/host/darwin-x86/nativetest64/adb_test/adb_test\n    \u003csnip\u003e\n    [----------] Global test environment tear-down\n    [\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d] 86 tests from 17 test suites ran. (34901 ms total)\n    [  PASSED  ] 82 tests.\n    [  SKIPPED ]  3 tests, listed below:\n    [  SKIPPED ]  io.WriteFdExactly_ENOSPC\n    [  SKIPPED ]  socket_spec.get_host_socket_spec_port_vsock_success\n    [  SKIPPED  ] sysdeps_poll.duplicate_fd\n    [  FAILED  ]  1 test, listed below:\n    [  FAILED  ]  FdeventTest.timeout\n\n        1 FAILED TEST\n  - Linux: aosp-master-with-phones$ out/host/linux-x86/nativetest64/adb_test/adb_test\n    \u003csnip\u003e\n    [----------] Global test environment tear-down\n    [\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d] 87 tests from 17 test suites ran. (15584 ms total)\n    [  PASSED  ] 87 tests.\n\nChange-Id: I2989cf18b4aa77591852d2813a2ec1b274cd40cd\n"
    },
    {
      "commit": "90228a63bb6a59e8195165fbb7c332be27459696",
      "tree": "627a2f393951cc4f4b0b307c04e1d09b8eda942e",
      "parents": [
        "527a1b3a82b4038bb86e9b43c00b76283e1350d2"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 25 14:04:57 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon May 06 16:18:02 2019 -0700"
      },
      "message": "Revert \"Revert \"Add a way to turn off unique_fd\u0027s operator int.\"\"\n\nThe original commit broke aosp-master-with-phones, because of\nvendor libraries the depended on the int versions of libbase functions.\n\nThis patch reverts the revert, and also adds ABI-compatibility shims for\nthe replaced functions.\n\nThis reverts commit dfdf916d09f6583d3fd1db1e33c79ed60bff2480.\n\nBug: http://b/131312539\nTest: treehugger\nTest: forrest run of aosp-master-with-phones\nChange-Id: I75cc84ec8d963e20862f7662e8e2f409471f41cc\n"
    },
    {
      "commit": "dfdf916d09f6583d3fd1db1e33c79ed60bff2480",
      "tree": "8e02ad6551dcc3593b5105963c1d1d5a72fceefc",
      "parents": [
        "6bc77009177ba2de4c25a2c8f17bee826c0540a3"
      ],
      "author": {
        "name": "Ian Kasprzak",
        "email": "iankaz@google.com",
        "time": "Thu Apr 25 15:59:28 2019 +0000"
      },
      "committer": {
        "name": "Ian Kasprzak",
        "email": "iankaz@google.com",
        "time": "Thu Apr 25 15:59:28 2019 +0000"
      },
      "message": "Revert \"Add a way to turn off unique_fd\u0027s operator int.\"\n\nThis reverts commit 6bc77009177ba2de4c25a2c8f17bee826c0540a3.\n\nReason for revert: b/131312539 - All aosp-master-with-phones phones failing boot / health check.\n\nChange-Id: Id4239f93484b7d6b8d9bcd355a59cbd40d9766e2\n"
    },
    {
      "commit": "6bc77009177ba2de4c25a2c8f17bee826c0540a3",
      "tree": "97b63d6b7c86394ab0a1dc40eedca8f7ce305378",
      "parents": [
        "4c0c9c90e1ae4fb8ef7312833a825bc3c3bee62b"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 18 16:39:30 2019 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Apr 24 12:59:42 2019 -0700"
      },
      "message": "Add a way to turn off unique_fd\u0027s operator int.\n\nunique_fd\u0027s implicit conversion to int has led to tons of problems (see\nall of the overloads for close, fdopen, fdopendir, etc.). Add a switch\nthat can turn it off, and reduce the ridiculous amount of work to fix up\ncallers by introducing a borrowed_fd type that can be constructed from\neither int or unique_fd.\n\nTest: treehugger\nChange-Id: If77cf5cbcaddacdaec5919a15b3520fb68f51a62\n"
    },
    {
      "commit": "8477cb4a3ab8650ea0e23b24384fc18686fbd323",
      "tree": "893553ddf7def6c52c512c739165b1e28cf72dcb",
      "parents": [
        "7aeecda12eb3ea09ef6478835051171d74fa9f52"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Feb 20 19:46:26 2019 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Feb 25 13:49:25 2019 -0800"
      },
      "message": "adb: make ParseUint reject garbage at the end by default.\n\nTest: adb_test on host\nChange-Id: Ie63d89bd08f0b296a3d54ff66aae85fe52d8cd0f\n"
    },
    {
      "commit": "c2705969e945b115ca42bc6365e90383f5c078b6",
      "tree": "56eda95c2736e1494bbc1362d8ad964607b4899c",
      "parents": [
        "0560feb3bc387398394aa86b5066624f183cd97e"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jan 23 15:36:42 2019 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jan 23 17:11:13 2019 -0800"
      },
      "message": "adb: convert more stuff to unique_fd.\n\nTest: adb_test\nTest: adbd_test\nTest: test_device.py\nChange-Id: Ie75f0b811d2c75d508e6ecffb40579308f5789d0\n"
    },
    {
      "commit": "4219a7bb1a1d49771b58f5e018caad0f3001debd",
      "tree": "a9bfa0945a65214e2264c593c1228cfb1c936d03",
      "parents": [
        "6dbf579e448b1d25eba03ede5cfcebb5e3c5e080"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Dec 20 13:17:04 2018 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Dec 26 11:48:14 2018 -0800"
      },
      "message": "adb: add stroll equivalent for string_view.\n\nTest: $ANDROID_HOST_OUT/nativetest64/adb_test/adb_test\nTest: adb shell /data/nativetest64/adbd_test/adbd_test\nChange-Id: I1d89913474fcd1aa4a856b5e4583a3c1f076ddd4\n"
    },
    {
      "commit": "739991dcd2bbc34b6359ac1878134f2bb968bf4f",
      "tree": "6fbac1a2707254965e4f649ef324dca687528cf0",
      "parents": [
        "a958fb6ef27d47a259070ea75d1ec44c7dc1be37"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Nov 12 12:45:59 2018 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Nov 14 09:35:34 2018 -0800"
      },
      "message": "switch to using android-base/file.h instead of android-base/test_utils.h\n\nTest: compile\nBug: 119313545\nChange-Id: I4f7ad84743e974b4b4d1d7256088f6c8b749a237\n"
    },
    {
      "commit": "934d4b18f132df2c3e2a64ef7e82da43f2635d61",
      "tree": "1562cb1d3fc5ab85830f3c4b460fe552470dcb73",
      "parents": [
        "f96711775ea639054f9904db6c29a778d3b4e332"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Mon Jul 09 23:51:58 2018 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Jul 10 23:32:09 2018 -0700"
      },
      "message": "adb: fix escape_arg for multiple quotes\n\nescape_arg reuses the same index for the source (s) and the destination\n(result), so it breaks on strings containing more than one quote, e.g:\n\n * a\u0027b\u0027c    \u003d\u003d\u003e \u0027a\u0027\\\u0027\u0027b\u0027c\u0027\n * a\u0027bcde\u0027f \u003d\u003d\u003e \u0027a\u0027\\\u0027\u0027b\u0027\\\u0027cde\u0027f\u0027\n\nAlso make the function more efficient by doing fewer string copies. This\ncode is based on the android::base::Split code.\n\nUse EXPECT_EQ because the tests can keep going if one fails.\n\nBug: none\nTest: adb_test --gtest_filter\u003dadb_utils.escape_arg\nChange-Id: I6ca6e905fa53cc61b9a87276cb7116a5df7e8017\n"
    },
    {
      "commit": "a0e185b07f7d70d1f3a7b4920e6839cda776c1f3",
      "tree": "4ec66520044b50136aa101ab3ea0f8cfad9b20ae",
      "parents": [
        "75bd1e0dd49ba423251b0d040fd846f15ca9732d"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 23 16:05:12 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 23 16:19:55 2017 -0700"
      },
      "message": "adb: allow symlinks to directories in directory_exists.\n\nBug: http://b/36516955\nTest: python test_device.py\nChange-Id: Ie81e87aac3b157182bde0955bdba23d48bfea873\n"
    },
    {
      "commit": "e6794076f51e3762fdda315a82e2dbc79f15627a",
      "tree": "e838c86040272d4968fca946cb13443d0e49dd47",
      "parents": [
        "30e9fe635737dfd46c6ceef241a2e8c7ab9c76fb"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 23 21:23:05 2017 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Feb 27 18:18:31 2017 -0800"
      },
      "message": "Move adb_dirname and adb_basename to libbase\n\nadb already provides an implementation of dirname and basename that\ntake and produce std::strings, move it into libbase so it can be\nused in the implementation of GetExecutableDirectory.\n\nTest: out/host/linux-x86/nativetest64/adb_test/adb_test\nTest: out/host/linux-x86/nativetest64/libbase_test/libbase_test\nTest: adb shell /data/nativetest64/libbase_test/libbase_test64\nChange-Id: Ideb1627607b14562121316d4ed27fa6fb0930684\n"
    },
    {
      "commit": "563db92a4482c6eef8b36388c083814fc98f3a20",
      "tree": "50dadfe864b5888d971f9fd0aeafc906784c1218",
      "parents": [
        "90b40f68d8714bcbb77b60ee92840fca556f978f",
        "a4f9c17d4f2d03ab0e9936f0be878602513a86ea"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 01 21:54:00 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 01 21:54:00 2016 +0000"
      },
      "message": "Merge changes I1d398d19,I8f20b3cd\n\n* changes:\n  adb: fix stat on Windows.\n  adb: extract Windows bits out of directory_exists test.\n"
    },
    {
      "commit": "a4f9c17d4f2d03ab0e9936f0be878602513a86ea",
      "tree": "4b2b4c82fcb54bad2182a81bfe6124ea5f2bdcb6",
      "parents": [
        "cde85bfe4478b2dcacae0775e236a31ca76275fb"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jul 28 18:09:48 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Aug 01 12:36:04 2016 -0700"
      },
      "message": "adb: fix stat on Windows.\n\nstat on Windows fails with ENOENT when passed a path with a trailing\nslash or backslash, regardless of whether the target is actually a\ndirectory. Emulate the correct POSIX behavior by stripping trailing\npath separators and then checking if the target is a directory if\nsuccessful.\n\nBug: http://b/30481559\nBug: https://code.google.com/p/android/issues/detail?id\u003d214633\nChange-Id: I1d398d19a9bce1ecb3fdc4aabc31aa98c82c3f93\nTest: Relevant adb_tests pass on Linux and Windows 10.\n"
    },
    {
      "commit": "90b40f68d8714bcbb77b60ee92840fca556f978f",
      "tree": "ac237a564275e5177d6e0638f7e744deb5978b28",
      "parents": [
        "cf8000ebb5058af8efa9e5d76143474f98832768"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Jul 27 16:25:51 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Aug 01 11:55:42 2016 -0700"
      },
      "message": "Fix clang-tidy performance warnings in syste/core.\n\n* Use const reference type for parameters to avoid unnecessary copy.\n* Suppress warning of not using faster overloaded string find function.\n\nBug: 30407689\nBug: 30411878\nChange-Id: I6cfdbbd50cf5e8f3db6e5263076d3a17a9a791ee\nTest: build with WITH_TIDY\u003d1\nMerged-In: Ie79dbe21899867bc62031f8618bb1322b8071525\n"
    },
    {
      "commit": "cde85bfe4478b2dcacae0775e236a31ca76275fb",
      "tree": "428b003fda0f3b90f5416958e3b5c06a21a9d4a8",
      "parents": [
        "cf8000ebb5058af8efa9e5d76143474f98832768"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jul 28 18:30:46 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jul 28 18:36:01 2016 -0700"
      },
      "message": "adb: extract Windows bits out of directory_exists test.\n\nBug: http://b/30481559\nBug: https://code.google.com/p/android/issues/detail?id\u003d214633\nChange-Id: I8f20b3cd5aef6a77c2b4f194b914b4295397d73f\n"
    },
    {
      "commit": "19d0c23a5a8730cf30baeaed51ba9d2c8890cb60",
      "tree": "721bbf170deaba71d54149bfb7be3382207156f0",
      "parents": [
        "e29499c30c394708de7543c558c2fa3567d0dc23"
      ],
      "author": {
        "name": "David Pursell",
        "email": "dpursell@google.com",
        "time": "Thu Apr 07 11:25:48 2016 -0700"
      },
      "committer": {
        "name": "David Pursell",
        "email": "dpursell@google.com",
        "time": "Mon May 09 16:55:10 2016 -0700"
      },
      "message": "adb: support forwarding TCP port 0.\n\nThis CL adds support to forward or reverse TCP port 0 to allow the\nsystem to automatically select an open port. The resolved port number\nwill be printed to stdout:\n  $ adb forward tcp:0 tcp:8000\n  12345\n  $ adb reverse tcp:0 tcp:9000\n  23456\nThis allows testing to be more robust by not hardcoding TCP ports which\nmay already be in use.\n\nForwarding port 0 is a host-only change and will work with any device,\nbut reversing port 0 requires the device to be updated with a new adbd\nbinary.\n\nThis CL also does a little bit of cleanup such as moving the alistener\nclass out of adb.h, and adds some error checking and additional tests.\n\nBug: 28051746\nTest: python -m unittest discover\nTest: adb_test\nTest: `adb forward` and `adb reverse` with tcp:0\nChange-Id: Icaa87346685b403ab5da7f0e6aa186aa091da572\n"
    },
    {
      "commit": "1ec9ceb6eea5e6c5657ddcad5fc32bcaa52c9620",
      "tree": "bae4feefca88d4e4d0d40aa1637a91825720cdc9",
      "parents": [
        "7257e03981c1330a785a910a846a454724eebdaf"
      ],
      "author": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Wed Feb 10 15:03:50 2016 -0800"
      },
      "committer": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Wed Feb 10 15:03:50 2016 -0800"
      },
      "message": "adb: mkdirs fixes\n\nFix pathological case where the directory to be created can\u0027t be created\nbecause there is already a file there. This was previously returning\nsuccess because the wrong var was passed to directory_exists().\n\nFix test to exercise this situation. Also clarify tests.\n\nChange-Id: I0dc0f14084e0eda4e1498874d4ab2a6445d322ac\nSigned-off-by: Spencer Low \u003cCompareAndSwap@gmail.com\u003e\n"
    },
    {
      "commit": "635e44d723dee1a59e62b852a8fa43f9f66f7b92",
      "tree": "01878f4dda073626a25b79eb5fdf93c8292cc6b1",
      "parents": [
        "1d2b4970e7865d072a8fc89a9c3f28ed9f733d53"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Feb 08 11:22:50 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Feb 08 11:22:50 2016 -0800"
      },
      "message": "adb: fix mkdirs test.\n\nThe behavior of mkdirs was changed a while ago, without updating the\ntest.\n\nChange-Id: I2aaa73818933b281e911c42a14e3c843d8bd972a\n"
    },
    {
      "commit": "a17d272002eab3355be435dbe2c1722162556fe9",
      "tree": "c78ea82996f0ea56f95e07ade9e696ed65c276fc",
      "parents": [
        "128452bdd7eac825796023d8c44a41d4fd8053e2"
      ],
      "author": {
        "name": "David Pursell",
        "email": "dpursell@google.com",
        "time": "Thu Jan 21 08:40:59 2016 -0800"
      },
      "committer": {
        "name": "David Pursell",
        "email": "dpursell@google.com",
        "time": "Thu Jan 21 20:03:33 2016 -0800"
      },
      "message": "base: add network address parsing function from adb.\n\nThis CL moves the network address parsing function from adb to libbase\nso that it can be used by fastboot as well as adb.\n\nlibbase seemed like the right choice because:\n  1. It already has some parsing functions (parseint)\n  2. The net address parsing function uses the libbase string\n     functions so we have a libbase dependency anyway.\n\nThe parsing function has been modified slightly to make the canonical\naddress optional, and debug logging on success has been removed.\n\nFor adb the only functional difference is that parsing a network\naddress will no longer print the result to the debug log, which seemed\nunnecessary.\n\nBug: http://b/26236380\nChange-Id: Ife6df02937225fc66de87884d3572d79c092c522\n"
    },
    {
      "commit": "f55ead962f2257312af08fe730ef9d3f3d988e76",
      "tree": "75488c67fc418f771691c0aa9caa88346126ed75",
      "parents": [
        "b13dd00d883d02dfef1a403caa63501ddca50a09"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 22:00:26 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 22:00:26 2015 -0800"
      },
      "message": "Track rename of base/ to android-base/.\n\nChange-Id: Idf9444fece4aa89c93e15640de59a91f6e758ccf\n"
    },
    {
      "commit": "f462e0bf5b192a7bd4035a820f00598847239688",
      "tree": "0dbe0907071bd39e470d9d0be89fb36079a66e1d",
      "parents": [
        "cb094c6f2848c6bec3b7a849605f8e768f81e98a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 03 18:52:35 2015 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Nov 04 14:21:35 2015 -0800"
      },
      "message": "adb: make adb_basename match the POSIX behavior.\n\nPreviously, adb_basename was behaving according to the GNU, POSIX-incompatible\nbasename, despite POSIX adb_dirname existing alongside it. This patch changes\nadb_basename to pass through to the POSIX basename.\n\nBug: http://b/25456821\nChange-Id: I62a4865cccf3b9cdbc112e3e53ff475aa4a23bd9\n"
    },
    {
      "commit": "5fc22317b7ad03a3b72e746e614f97921ccdfbfb",
      "tree": "229c68cd70a7ec87b681bdfb3faad85b3d163877",
      "parents": [
        "de01c94f969f6c59926bc7ace48c3ed0a707a670"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Oct 06 15:10:05 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Oct 06 16:15:30 2015 -0700"
      },
      "message": "adb: keep file flags in fdevent_install.\n\nBug: 24615098\nChange-Id: Ia791ecbe612f09aca3bbd5787513f121fae54da5\n"
    },
    {
      "commit": "f96845c02905d09e048485523bd1636c913bf930",
      "tree": "94cc98bbfa1de7d6784ddfdf9e7b84fae1bf1b30",
      "parents": [
        "a7549c6131a2f09612156bdf7a332a69ec1ebadd"
      ],
      "author": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Mon Aug 03 20:43:24 2015 -0700"
      },
      "committer": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Thu Aug 06 18:09:32 2015 -0700"
      },
      "message": "win32: adb_test/libbase_test fixes\n\n - My recent change with -DUNICODE\u003d1 required changing\n   GetProfilesDirectory() to GetProfilesDirectoryA() for the ANSI version\n   of the API.\n\n - enh\u0027s edit to my previous change deleted a test that used\n   /proc/version, but I think another test was missed. Merge that test into\n   another.\n\nChange-Id: Ic748549848e7be922bcbf218d5b0c3fca2a90704\nSigned-off-by: Spencer Low \u003cCompareAndSwap@gmail.com\u003e\n"
    },
    {
      "commit": "939d000706a597f75e78e7379133a60d43cb020e",
      "tree": "dbb4f3b4c051d202c4df640a08c758f917b887f2",
      "parents": [
        "5f4de22dcbf8da782aab363fe9dcec2009178e59"
      ],
      "author": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Sat Aug 01 17:29:23 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 03 13:24:18 2015 -0700"
      },
      "message": "adb: fix mkdirs / adb pull with relative paths, fix win32 issues\n\nRelative paths were being prefixed with OS_PATH_SEPARATOR on unix and\nwin32 causing adb to incorrectly try to make directories at the root.\nPlus, absolute paths didn\u0027t work on win32 (C: got prefixed into \\C:).\n\nThis fix is to use dirname (available on win32 via mingw\u0027s crt) to do\nthe messy parsing.\n\nI added a test for the relative path case.\n\nChange-Id: Ibb0a4a8ec7756351d252a4d267122ab18e182858\nSigned-off-by: Spencer Low \u003cCompareAndSwap@gmail.com\u003e\n"
    },
    {
      "commit": "c9ddd81c5649d5a4c2349691cb358d636c3cbb20",
      "tree": "ee52e2181e83ff1eb96e79c70414b7b5a08c8614",
      "parents": [
        "62b9d667def517b8bfb712c2fe818b57c05811e9"
      ],
      "author": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Sun May 24 15:36:28 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 03 12:44:43 2015 -0700"
      },
      "message": "adb_test/libbase_test: win32: get some tests working\n\nadb_test:\n\n* Fix adb_utils directory_exists test for Windows. The test actually\nfails because directory_exists() is not aware of junctions or symlinks,\nbut I\u0027m not really sure if that is a bad thing (since these are rare on\nWindows to begin with).\n\n* Fix crash during transport tests due to mutex not being initialized.\n\n* io tests fail for various reasons (see adb_io_test.cpp for more info).\n\nlibbase_test:\n\n* Get it building on Win32 by implementing mkstemp() and mkdtemp().\n\n* Run StringPrintf %z test on Windows because it passes because we build\nwith __USE_MINGW_ANSI_STDIO which implements %z.\n\n* I didn\u0027t fixup the logging tests: some logging tests fail because when\nabort() is called on Windows, by default it pops up UI asking whether a\ncrash dump should be sent to Microsoft. To some degree this makes sense,\nas I think LOG(FATAL) does crash dumping in Chromium. This should be\nrevisited in the future.\n\nChange-Id: Iaa2433e5294ff162e0b2aa9fe6e4ec09a6893f7a\nSigned-off-by: Spencer Low \u003cCompareAndSwap@gmail.com\u003e\n"
    },
    {
      "commit": "d189cfb4837f978bec5d56042989b4a8e9bcc474",
      "tree": "ec93a69048905f2062f6737235ce301984f97fe6",
      "parents": [
        "28d1f8d69e63f96ce770417d256819d5bc1c5e14"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 30 17:42:01 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 30 17:46:58 2015 -0700"
      },
      "message": "More adb cleanup.\n\nThis removes adb_dirstart and adb_dirstop. It also fixes a couple of memory\nleaks by switching to std::string. This also fixes the bug in the previous\nchange --- mkdirs is given input like \"/system/bin/sh\" and only expected to\ncreate \"/system/bin\". In a later change, we should remove mkdirs and only\nexpose the intended \"unlink \u0026\u0026 mkdirs \u0026\u0026 create\" functionality.\n\nChange-Id: I30289dc1b3dff575cc1b158d993652178f587552\n"
    },
    {
      "commit": "28d1f8d69e63f96ce770417d256819d5bc1c5e14",
      "tree": "987e5cc564bc6e2441e097ff857afbd4a2295485",
      "parents": [
        "881c43397d990ecf026951de9946ff9bc5b1ad60"
      ],
      "author": {
        "name": "Alex Vallée",
        "email": "avallee@chromium.org",
        "time": "Wed May 06 16:26:00 2015 -0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 30 15:08:53 2015 -0700"
      },
      "message": "Write mkdirs in more idiomatic C++ style.\n\n~ Rewrote mkdirs to be in C++ style.\n~ Replaced adb_dir{start,stop} with std::string params and (r)find.\n+ Added test for mkdirs.\n\nAlso make base/test_utils.h public and support temporary directories\nas well as files.\n\nChange-Id: I6fcbdc5e0099f3359d3aac6b00c436f250ca1329\n"
    },
    {
      "commit": "09ccf1fa62cef5ce1f3766683df29b8467444a79",
      "tree": "2be312cbca0b49375c67d451a2648042d3efa370",
      "parents": [
        "e91631558898a0b8f7a3ea2b74b7726d78c2f227"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jul 18 12:21:30 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 21 15:25:14 2015 -0700"
      },
      "message": "Recognize IPv6 addresses for \"adb connect\".\n\nBug: http://b/22559299\nChange-Id: I32891d706b5010c38db84a056e76dd279b780f75\n"
    },
    {
      "commit": "de52ce2dae9ca9a88425c07b7353dc948d29f1f7",
      "tree": "2dc2a8b17d94c14e04ad70762bc5c36bc6bc78ad",
      "parents": [
        "9529b3e16c99070f2abb3dcd232f4f39a60d702e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 15 12:06:00 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 15 12:06:00 2015 -0700"
      },
      "message": "Fix \u0027 escaping in adb.\n\nYou can\u0027t just use \\\u0027 inside a single-quoted string.\n\nBug: http://b/20323053\nBug: http://b/3090932\nChange-Id: I73754b097671d02dc11c35052f0534b6dd789e4f\n"
    },
    {
      "commit": "48db87f35909f825f1bfa17bb65962e34fe616a3",
      "tree": "5c5d47925637230f943cd52c141f6d19143f32ed",
      "parents": [
        "bebf693cba868feff20031443b534842c0b439c0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 17 20:50:11 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 17 20:55:04 2015 -0700"
      },
      "message": "Use \u0027 quoting to escape arguments.\n\nThe specific motivating case is \"text;ls;1.apk\", but rather than continue\nadding individual characters to the list of characters to be escaped, let\u0027s\njust switch to quote all arguments with \u0027, which only leaves \u0027 itself to be\nescaped.\n\nBug: 20323053\nBug: 19734868\nChange-Id: I8bd71db9373bc2d1169fc11e46c889da6638550a\n"
    },
    {
      "commit": "38104453d910ce8fa46daa3d2b087be3b63ab39e",
      "tree": "bbb55a93308c0caac94bee1a6b8381932e3eb259",
      "parents": [
        "fa1cb7a5de95b478d6c60e2417f4a31f6c4567da"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 17 13:57:15 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 17 15:23:31 2015 -0700"
      },
      "message": "Fix more buffer overruns.\n\nAlso add some tests.\n\nBug: 20323050\nChange-Id: I9eaf3dc04efd85206663c4cca4f8c1208620a89a\n"
    }
  ]
}
