)]}'
{
  "log": [
    {
      "commit": "2e8e5e60b6ecbcfe2110242e41b9ec5340b11cf5",
      "tree": "8810a00e508e0dd698d23f513432fff2e513e87e",
      "parents": [
        "ee1c45f88f5fcd1b1d43c325e0de366cc3d0ce36"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 20 12:58:31 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 20 16:57:25 2017 -0700"
      },
      "message": "DO NOT MERGE: The future is now.\n\n__INTRODUCED_IN_FUTURE -\u003e __INTRODUCED_IN(26)\n\nBug: http://b/37437368\nTest: treehugger\nChange-Id: I601a23da83b65a0cd582cc840ed3856a9031b673\n(cherry picked from commit cb302f932a3532f1484e1e70894e9b1199384283)\n"
    },
    {
      "commit": "438e01940b90a2b6061a9b9809e08466e1e9faac",
      "tree": "4889c190b65be3636ee5d638db7822624abcd412",
      "parents": [
        "e4e69a174a0b4980eaff49c55c39b476cbe9b73e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 17 14:53:07 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 17 14:53:07 2017 -0700"
      },
      "message": "Un-deprecated __system_property_find_nth.\n\nNetflix was using this, and looking the header file, although\n__system_property_find_nth has been available since the beginning of time,\n__system_property_foreach only appeared in 16. So anyone who wants to run\non pre-JellyBean devices would want to use __system_property_find_nth.\n\nIt\u0027s pretty much a one-liner in terms of __system_property_foreach anyway,\nso it doesn\u0027t cost us anything to keep it.\n\nAlso restore slightly better tests than we originally removed.\n\nBug: http://b/36566667\nTest: ran tests\nChange-Id: Id268c2c2e848da17bb0a5a5420af234d9dcb829a\n"
    },
    {
      "commit": "41a3a6f3cf36d626bb8ae474291bda58fc10aba2",
      "tree": "d13f02dfa3b359e36980ae015cb190a695c7306c",
      "parents": [
        "7f24a4f5565f5392ade4edbd5583ee0a0b43570e"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 16 15:34:21 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Feb 23 14:20:13 2017 -0800"
      },
      "message": "Hide internal __system_property_* functions\n\nBug: http://b/34114501\nTest: bionic-unit-tests --gtest_filter\u003dprop*\nChange-Id: I1fc57b4ced6aaf841aad64e12e7696d25c2e027b\n"
    },
    {
      "commit": "a0d374d587ec18d437d0dd15ba1332aceaa188af",
      "tree": "a9466c8841140cf70290c54d50354f245ea3a9db",
      "parents": [
        "132768084e24119c337e56fd110b97a23e5593c2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 10 18:13:46 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 13 13:30:10 2017 -0800"
      },
      "message": "Add __system_property_wait and return the serial in __system_property_read_callback.\n\nIn order to implement android::base::WaitForProperty well, we need a way to\nwait not for *any* property to change (__system_property_wait_any), but to\nspecifically wait for the property represented by a given `prop_info` to\nchange.\n\nThe android::base::WaitForProperty implementation, like attempts to cache\nsystem properties in the past, also needs a way to keep serials and values\nin sync, but the existing functions don\u0027t provide a cheap way to get a\nconsistent snapshot. Change the __system_property_read_callback callback\u0027s\ntype to include the serial corresponding to the given value.\n\nAdd a test, slightly clean up some of the existing tests (and name them to\ninclude the names of the functions they\u0027re testing, in our usual style).\n\nBug: http://b/35201172\nTest: ran tests\nChange-Id: Ibc8ebe2e88eef1e333a1bd3dd7f68135f1ba7fb5\n"
    },
    {
      "commit": "16b2a4de143a026b8d467b7d242126adcf67242b",
      "tree": "56e0d6455248408f5c485c8a5403bb970441f7a8",
      "parents": [
        "40250bb6837da0eb0f0882efd07bdaefb3f304b1"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 20:43:29 2017 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 12:58:18 2017 -0800"
      },
      "message": "Revert \"Revert \"Remove limit of system property name length\"\"\n\nThis reverts commit 489f58b5eaedd5a80635bb3a7b39e97037c585f6.\nBug: http://b/33926793\nBug: http://b/34670529\nTest: Run bionic-unit-tests --gtest_filter\u003dprop*\n\nChange-Id: Id4e94652dc2310a21f5b7bd3af098bf79df3f380\n"
    },
    {
      "commit": "489f58b5eaedd5a80635bb3a7b39e97037c585f6",
      "tree": "af22a101af7a53336af2669978e9a507f589fbd5",
      "parents": [
        "5c1ce278f31bc6fc338b9b951f1adc7c2b343d7c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 18:39:04 2017 +0000"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 24 18:39:04 2017 +0000"
      },
      "message": "Revert \"Remove limit of system property name length\"\n\nThis reverts commit 5c1ce278f31bc6fc338b9b951f1adc7c2b343d7c.\nBug: http://b/33926793\nBug: http://b/34670529\n\nChange-Id: I0dc4a8ae55576c69b34b2958d8e664f7066b9c54\n"
    },
    {
      "commit": "5c1ce278f31bc6fc338b9b951f1adc7c2b343d7c",
      "tree": "0652006476a923c95c16837640a52f9298322a35",
      "parents": [
        "7844b4c5dbd0be9ea4212a523da2dd6a4804032c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu Dec 03 11:26:38 2015 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jan 23 11:21:18 2017 -0800"
      },
      "message": "Remove limit of system property name length\n\nThis change introduces new __system_property_read_callback\nmethod to use in place of deprecated __system_property_read\n__system_property_set() and get() should just work but now\ndo not have limit on system property names.\n\nBug: http://b/33926793\nTest: boot device, run adb shell propget\nTest: boot device with old version of init (protocol v1)\nTest: run bionic-unit-tests --gtest_filter\u003dprop*\nChange-Id: I619fb5a7e27a272aac30011579665f6160888bc7\n"
    },
    {
      "commit": "581b9f661bc7d32691ac5e5ee8eac38a8807aa09",
      "tree": "2100650f26ccb76348855e2747f86c77926dba3a",
      "parents": [
        "fb07c36bc061db4ca5d8348ff6bc1e60b6c53191"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Jan 09 11:05:52 2017 -0800"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jan 10 13:41:27 2017 -0800"
      },
      "message": "Hide __system_property_add/update, deprecate find_nth\n\nThese functions are supposed to be used only by the\nproperty service.\n\n__system_property_find_nth is deprecated and no longer part\nof NDK. Call to this function will result in abort for apps\ntargeting Android O.\n\nBug: http://b/34114501\nTest: bionic-unit-tests --gtest_filter\u003dprop*\nChange-Id: I9846965bf248e2ddf45cd7b293618245bbd87145\n"
    },
    {
      "commit": "46b44160e9e4c466be0faf1bb8d6ec70ecc83273",
      "tree": "80036c736b6315189745423724f1d69cb3b74682",
      "parents": [
        "6e9c1f61d8ea04d35d18709e373da355ca32e523"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri May 27 11:14:16 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 02 13:40:35 2016 -0700"
      },
      "message": "Update header versions for NDK platform fixes.\n\nBug: http://b/28178111\nChange-Id: Icd638673b409aa43a91490f77c6b4d79c9ea20d9\n"
    },
    {
      "commit": "14adff1cfa06a3d4d3281a9bf7848b556d84c20d",
      "tree": "ce1fb2867f69e49f57d0bbe8a9099b09beda0c19",
      "parents": [
        "5a3d5cac642f9e58b2c510eab23789fb4fc3a753"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Apr 29 12:00:55 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Apr 29 16:39:50 2016 -0700"
      },
      "message": "Add versioning information to symbols.\n\nBug: http://b/28178111\nChange-Id: I46bf95accd819f4521afb1173d8badcc5e9df31c\n"
    },
    {
      "commit": "577418403d68e663fb33c7b0c8a90d862d9c00cf",
      "tree": "2426b457f82259c0b4fda183557591b6e66e9b06",
      "parents": [
        "1791cb0001516d6f3ffa7b916d61942b98bc88f4"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Tue Feb 12 16:39:31 2013 -0800"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Tue Jun 18 15:38:31 2013 -0700"
      },
      "message": "bionic: add __system_property_foreach\n\nfind_nth() will be inefficient on a trie.  Since find_nth() is only used\ninternally and only for enumerating properties, we can add a foreach()\nfunction to do this directly.\n\nChange-Id: I66bde9926c193073d74b244cce9fffd52108fff8\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n"
    },
    {
      "commit": "4399df8f2ebd797e45bec81e6f22e4911b2c5686",
      "tree": "333595bb8060913140086592f30663e2b969749c",
      "parents": [
        "70828ae0ea33c8e2f3316a705b5da478a32f8498"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Thu Mar 10 15:52:49 2011 -0800"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Mon Mar 14 16:53:18 2011 -0700"
      },
      "message": "Move property setting from libcutils to bionic.\n\nAll the other property stuff is already here.  Property setting was\nonly in libcutils previously to leverage a utility function / constant\nor two.\n\nUnfortunately in the process of fixing a race condition we would\u0027ve\nhad to do break abstraction boundaries and put some libc-internal\ndetails into libcutils so instead of that we\u0027ll just move this\ninto bionic.\n\nAlong with Iee1ca9b7, this now passes:\n\n$ adb shell am instrument -w -e class android.os.SystemPropertiesTest \\\n  com.android.frameworks.coretests.systemproperties/android.test.InstrumentationTestRunner\n\nBug: 3511230\nChange-Id: I110b653a58f312fbe069dca59892a877ae9bc911\n"
    },
    {
      "commit": "49f0a8f23bba188466c6ee3652858ef4da228c6f",
      "tree": "fd0c67133f0ad6e856a7a56a1f27333131ef40e3",
      "parents": [
        "cdcc2648baa3ad62c497fbc87c36de590f9f9f97"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Feb 09 14:05:43 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Feb 09 14:05:43 2010 -0800"
      },
      "message": "Fix \u003csys/epoll.h\u003e and \u003csys/system_properties.h\u003e to include proper C++ inclusion guards\n"
    },
    {
      "commit": "1dc9e472e19acfe6dc7f41e429236e7eef7ceda1",
      "tree": "3be0c520fae17689bbf5584e1136fb820caef26f",
      "parents": [
        "1767f908af327fa388b1c66883760ad851267013"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "1767f908af327fa388b1c66883760ad851267013",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "a799b53f10e5a6fd51fef4436cfb7ec99836a516"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349",
      "tree": "defd1cc07d16ad2f3b21154114e092d11c94c5bb",
      "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"
    }
  ]
}
