)]}'
{
  "log": [
    {
      "commit": "3cbb33e5c6068d80c50f64a543550611eca8309a",
      "tree": "4f4ae2c84cfd8d6c3130de6041c013fa37f8f2e6",
      "parents": [
        "48c0d385023d620fb114fc81125599676c022320"
      ],
      "author": {
        "name": "Radosław Piliszek",
        "email": "radoslaw.piliszek@gmail.com",
        "time": "Tue Jun 30 17:52:10 2020 +0200"
      },
      "committer": {
        "name": "Radosław Piliszek",
        "email": "radoslaw.piliszek@gmail.com",
        "time": "Tue Jun 30 17:52:10 2020 +0200"
      },
      "message": "Fix python3_enable to return true\n\nRecent regression spotted by Dmitry Tantsur.\nDevStack dropped Py2 support but the now-unused-in-devstack\npython3_enable got its result nastily inversed.\n\nChange-Id: I4b37cc847a24705c4955cec2e6e45f0514705f1b\n"
    },
    {
      "commit": "d7a82f41e469fc51fb021184c1fa6c98da428411",
      "tree": "8b0efcf039e29af25b4c70f7a842ae3b44cfbda6",
      "parents": [
        "f6286cb586eb1f861866bfdf85c4f873c79fd592"
      ],
      "author": {
        "name": "Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Tue Jun 23 10:21:09 2020 +0200"
      },
      "committer": {
        "name": "Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Fri Jun 26 15:27:32 2020 +0200"
      },
      "message": "Drop support for python2\n\npython2 is EOL, let\u0027s move on and only support python3.\n\nChange-Id: Ieffda4edea9cc19484c04420ed703f7141ef9f15\n"
    },
    {
      "commit": "f1ed7c77c50ac28cb58c9f7ed885c6a3e0a75403",
      "tree": "e266d726c846b032bc55553e37a31afb3538fad2",
      "parents": [
        "c2c2b6b415a4289ab740e7506f68e820ecbc5818"
      ],
      "author": {
        "name": "Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Thu Jun 11 05:51:26 2020 +0000"
      },
      "committer": {
        "name": "Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Tue Jun 23 08:02:52 2020 +0200"
      },
      "message": "Use python3 pip module instead of pip binary\n\nFocal only provides a pip3 binary, no pip3.8. Instead of working around\nthat with a symlink, use the module instead.\n\nAdd version information output for this variant.\n\nChange-Id: I7af194ecc40e4d43c10ce067a661bb6ab4ca37d4\n"
    },
    {
      "commit": "be26306b4ab470e65cc93305453d2945aa33bf78",
      "tree": "737e10a46fe51a324ebd916111607328097882ec",
      "parents": [
        "09b5b05c471985ad53c4b321e993101f007ee915"
      ],
      "author": {
        "name": "Radosław Piliszek",
        "email": "radoslaw.piliszek@gmail.com",
        "time": "Mon Mar 30 09:56:53 2020 +0200"
      },
      "committer": {
        "name": "Radosław Piliszek",
        "email": "radoslaw.piliszek@gmail.com",
        "time": "Mon Mar 30 19:53:32 2020 +0200"
      },
      "message": "Support extras in Glance Store install\n\nRecent change to devstack dropped installing test-requirements [1]\nHowever, this caused gate failures due to lack of glance-store\ndeps for cinder and swift support.\n\nThis patch makes devstack install relevant extras depending on\nenabled features.\n\nAdditionally, relevant functions are added/fixed to make this\npossible.\n\nglance-store \u003d glance_store (for gerrit search match)\n\n[1] https://review.opendev.org/715469\n\nChange-Id: I0bf5792a6058b52936115b515ea8360f6264a7c9\n"
    },
    {
      "commit": "09b5b05c471985ad53c4b321e993101f007ee915",
      "tree": "bf4320f72cc396597e21e2c4ec7aaeb0cd7a70b3",
      "parents": [
        "c2830fb26759678b1bfe90a77aa5c149599d6705"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Fri Mar 27 11:22:39 2020 -0500"
      },
      "committer": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Fri Mar 27 11:22:39 2020 -0500"
      },
      "message": "Stop installing test-requirements with projects\n\nThis is a test of installing openstack and then seeing if it works.\nOpenStack components do not need test-requirements to operate,\nthat\u0027s why they are test-requirements.\n\nAdditionally, as we look forward to depsolver pip, this is going\nto screw us because we don\u0027t apply constraints to linters, which\nare expressed in - you guessed it, test-requirements.\n\nChange-Id: I8f24b839bf42e2fb9803dc7df3a30ae20cf264eb\n"
    },
    {
      "commit": "c2830fb26759678b1bfe90a77aa5c149599d6705",
      "tree": "be2a104828e26862b39355fd4d218e91ecd5bc53",
      "parents": [
        "c26dfb0d6f165a567925390ac9c6f6ac32742fee"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Fri Mar 27 11:08:27 2020 -0500"
      },
      "committer": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Fri Mar 27 11:12:31 2020 -0500"
      },
      "message": "Revert \"Run pip check at end of devstack\"\n\nThis reverts commit 79b8e79488a6268f37244188ab831e99a99648c8.\n\nThis is breaking things in various jobs, most notably because\nwe do not put constraints on linters - but we install\ntest-requirements which then can conflict with each other.\n\nChange-Id: Ibc5603c61b38ce44db58fb27a27352f59123ad09\n"
    },
    {
      "commit": "c26dfb0d6f165a567925390ac9c6f6ac32742fee",
      "tree": "6a030a3a3ce791a5d092ec5b4ecbe51f7f12b047",
      "parents": [
        "37659927923473c13f4bec88855205d0ee28bcfb"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Wed Mar 25 08:32:26 2020 -0500"
      },
      "committer": {
        "name": "Dr. Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Thu Mar 26 09:44:23 2020 +0000"
      },
      "message": "Run pip check at end of devstack\n\nThe new pip depsolver is coming this summer. Until it\u0027s ready,\nrun pip check at the end of devstack to make sure we\u0027re not\nsomehow installing conflicting package versions. We shouldn\u0027t\nbe, because of constraints, but if we are, better to know and\nstart figuring it out.\n\nChange-Id: Id98f0848ff5a252d93e5f8029df2d069924d603f\n"
    },
    {
      "commit": "21a10d3499abd6e9cd1950b3615502bef5ad6b45",
      "tree": "38757a10e8e7c5c46ee3784cf2c509b82150f6ca",
      "parents": [
        "2dcbc28abab7eb51b9e3fd549fab49d42c48e90f"
      ],
      "author": {
        "name": "Federico Ressi",
        "email": "fressi@redhat.com",
        "time": "Fri Jan 31 07:43:30 2020 +0100"
      },
      "committer": {
        "name": "Radosław Piliszek",
        "email": "radoslaw.piliszek@gmail.com",
        "time": "Mon Feb 17 17:03:47 2020 +0000"
      },
      "message": "Use python3 as default python command\n\nAfter Python 2 is getting unsupported, new distros\nlike CentOS 8 and RHEL8 have stopped providing \u0027python\u0027\npackage forcing user to decide which alternative to\nuse by installing \u0027python2\u0027 or \u0027python3.x\u0027 package\nand then setting python alternative.\n\nThis change is intended to make using python3 command as\nmuch as possible and use it as default \u0027python\u0027 alternative\nwhere needed.\n\nThe final goals motivating this change are:\n - stop using python2 as much as possible\n - help adding support for CentOS 8 and RHEL8\n\nChange-Id: I1e90db987c0bfa6206c211e066be03ea8738ad3f\n"
    },
    {
      "commit": "2dcbc28abab7eb51b9e3fd549fab49d42c48e90f",
      "tree": "a530d3fb202efc3170c3373194cb127d2254446e",
      "parents": [
        "93d22d82988ee781feddf84535d65adf44472379"
      ],
      "author": {
        "name": "Federico Ressi",
        "email": "fressi@redhat.com",
        "time": "Wed Feb 05 11:29:51 2020 +0100"
      },
      "committer": {
        "name": "Dr. Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Mon Feb 17 12:00:41 2020 +0000"
      },
      "message": "Install versioned python RPMs on RedHat distros\n\nSet default python3 version as 3 for cases python3\nis not installed before running DevStack.\n\nImplements installation of required python3x package\nfor RedHat family distros with package name depending on\nconfigurable ${PYTHON3_VERSION}. Examples:\n\n  3 \u003d\u003e python3 python3-devel (default one)\n  3.6 \u003d\u003e python36 python36-devel\n  3.7 \u003d\u003e python37 python37-devel\n\nThis should help in situations where there are more\nthan one python available for given platform and\nDevStack is asked to pick one by its full 3.x version\n\nChange-Id: I49d86bc9193165e0a41e8e8720be37d81a4e7ee0\n"
    },
    {
      "commit": "80758e6932c79c48348730dfe571b9bcb02c5410",
      "tree": "984ac34a0ecfd371e5d3d340fd12d7cd026aaa4a",
      "parents": [
        "64b3c5f468110e00a30216186e590e87f81bc328",
        "78cf6f642aea91385dfbe6e1fa594e9f5373e69c"
      ],
      "author": {
        "name": "Zuul",
        "email": "zuul@review.opendev.org",
        "time": "Sat Feb 15 16:01:08 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Sat Feb 15 16:01:08 2020 +0000"
      },
      "message": "Merge \"Always install python3 and its dev package\""
    },
    {
      "commit": "29bf8523965b504624f9450f3dffe863994b4077",
      "tree": "3d33f9e4902f3a3d4eecf536a1d98141e1258b21",
      "parents": [
        "f9a6986b90f896f2c0d122ae2572411f9c13f506"
      ],
      "author": {
        "name": "Radosław Piliszek",
        "email": "radoslaw.piliszek@gmail.com",
        "time": "Fri Jan 24 11:52:13 2020 +0100"
      },
      "committer": {
        "name": "Radosław Piliszek",
        "email": "radoslaw.piliszek@gmail.com",
        "time": "Fri Jan 24 12:55:21 2020 +0100"
      },
      "message": "Do not try finding pip for python2 when not required\n\n[1] stopped installing pip for py2 when py3 is being used.\n\nThis patch makes sure we check only for py3 pip then.\n\nAlso removed some no-longer-relevant comment and\nmade uninstall behave the same.\n\nCheck for pip\u003e\u003d6 removed too.\n\nSee also [2].\n\n[1] 279a7589b03db69fd1b85d947cd0171dacef94ee\n[2] http://lists.openstack.org/pipermail/openstack-discuss/2020-January/012182.html\n\nChange-Id: I36ee53e57e468d760b80a7e621b90899867a8efd\n"
    },
    {
      "commit": "78cf6f642aea91385dfbe6e1fa594e9f5373e69c",
      "tree": "ac65c1f2f82ce3f88f72bee3e5b0a02fb7566511",
      "parents": [
        "e18325ca67dcb70b01a29563432291e1baf9f46e"
      ],
      "author": {
        "name": "Terry Wilson",
        "email": "twilson@redhat.com",
        "time": "Tue Oct 15 19:45:09 2019 +0000"
      },
      "committer": {
        "name": "Terry Wilson",
        "email": "twilson@redhat.com",
        "time": "Wed Jan 22 20:03:29 2020 -0600"
      },
      "message": "Always install python3 and its dev package\n\nSome distros do not install python3/python3-devel with the minimal\ninstall. F29 doesn\u0027t install -devel, and neither Centos 7 or 8\ninstall either. This patch ensures that these packages get installed.\n\nIdeally, PYTHON3_VERSION would be set *after* ensuring that python3\nwas installed, but it gets a little tricky with all of the includes.\nThis sets it to 3.6 as nothing uses 3.5 anymore.\n\nChange-Id: I7bdfc408b7c18273639ec26eade475856ac43593\n"
    },
    {
      "commit": "6b6bdc7111aa6f953a29c5ffc8854039336ce660",
      "tree": "dfa6eeae055b90324722010c582fb7da955298b5",
      "parents": [
        "035b41b9b28e0cda61dc7427dcd7e4b44b7a6563"
      ],
      "author": {
        "name": "Stephen Finucane",
        "email": "sfinucan@redhat.com",
        "time": "Wed Oct 09 16:13:20 2019 +0100"
      },
      "committer": {
        "name": "Stephen Finucane",
        "email": "sfinucan@redhat.com",
        "time": "Fri Jan 17 11:19:16 2020 +0000"
      },
      "message": "inc/python: Remove ability to mark packages as non-Python3\n\nEverything in OpenStack *must* be Python 3 supporting now, which means\nit\u0027s time to remove the functionality that allows us to blacklist\npackages that didn\u0027t support Python 3.\n\nChange-Id: I7c8cf538ec88bd4056b0109f19671e3d65f5da3a\nSigned-off-by: Stephen Finucane \u003csfinucan@redhat.com\u003e\n"
    },
    {
      "commit": "bcb2c30c317834f62cab470dc0b58670d945a6ef",
      "tree": "646a2b87bc883d71e888c5f514b22fa7475de2b9",
      "parents": [
        "4143ce6fc95ccd9bde88c22baaa3eeaba58183f8"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Jan 13 16:31:20 2020 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Jan 13 16:31:20 2020 +1100"
      },
      "message": "Remove TRACK_DEPENDS\n\nThis was added in 2012 with I89677fd54635e82b10ab674ddeb9ffb3f1a755f0,\nbut I can not see it being used anywhere currently.\n\nIt\u0027s use of virtualenv\u0027s has become problematic in a python2\ndeprecated world, but since it is not used, remove it to avoid further\nconfusion.\n\nChange-Id: I65d44d24f449436ca6229928eee2c5a021793055\n"
    },
    {
      "commit": "16bccbcea410ce426f83b5086424080b5bfaf925",
      "tree": "d29b241c280fd43c9d416295add55f0281d47b03",
      "parents": [
        "650769a3115704aa8af8b346a57838d46b87ba6a"
      ],
      "author": {
        "name": "Peter Penchev",
        "email": "openstack-dev@storpool.com",
        "time": "Mon Sep 09 15:14:11 2019 +0300"
      },
      "committer": {
        "name": "Peter Penchev",
        "email": "openstack-dev@storpool.com",
        "time": "Mon Sep 09 15:14:11 2019 +0300"
      },
      "message": "Revert \"install LIBS_FROM_GIT using python 2 and 3 where appropriate\"\n\nAll the OpenStack projects should be able to run under Python 3 now so\nthe fallback installation of the Python 2 libraries should not be\nneeded any longer. This also avoids the problem of script files\ninstalled by the libraries sometimes being overwritten by the Python 2\nversion leading to incorrect execution later, as discussed in\nhttp://lists.openstack.org/pipermail/openstack-discuss/2019-September/009226.html\n\nThis reverts commit a2eb89417fbb6d61526b1819cbe3d0a60537eedd.\n\nChange-Id: I1cdb7e4a209872f1620be556b7278879a4b86df5\n"
    },
    {
      "commit": "9b6d2f20b47523ddc51349943dd76bb76d1c58d8",
      "tree": "89c6b25118e2c5078d5600357c53ba65e8afae38",
      "parents": [
        "371a25328525ac16677ad721f725e81628f9d941"
      ],
      "author": {
        "name": "Matt Riedemann",
        "email": "mriedem.os@gmail.com",
        "time": "Tue Jun 18 10:43:16 2019 -0400"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Jun 21 14:35:16 2019 +1000"
      },
      "message": "Update (git|review).openstack.org links to opendev\n\nThis updates links going to git.openstack.org and review.openstack.org\nto go to their respective opendev locations to avoid redirects.\n\nChange-Id: I78e3bb5303718962f591117f9c0ee11f2314b128\nCloses-Bug: #1833256\n"
    },
    {
      "commit": "4db9d567d19759ee090e506adf7ad77d8e64e452",
      "tree": "aacdfbf39d6470b04469cbd5416f8f59977996ca",
      "parents": [
        "172f02f1e0b981e0867a1e2cf2777f40af88032e"
      ],
      "author": {
        "name": "Tom Barron",
        "email": "tpb@dyncloud.net",
        "time": "Wed Jan 09 08:43:52 2019 -0500"
      },
      "committer": {
        "name": "garyk",
        "email": "gkotton@vmware.com",
        "time": "Mon May 20 06:01:35 2019 +0000"
      },
      "message": "Safety check for python version in get_pip_command\n\nWe know empirically that some legacy gate jobs pass and appear\nto be running with python3 but actually pip was invoked with\nPYTHON3_VERSION unset so that they are actually ran with python2\npackages.\n\nAs a followup to this discussion [1], add a safety check in the\nget_pip_command function to ensure that a python version has been\nset when it is invoked.\n\n[1] https://review.openstack.org/#/c/622415/4/inc/python@283\n\nChange-Id: I3a08406fb7d68282c6b98abb33a625821510046a\n"
    },
    {
      "commit": "e03bcb2c8b8f1ee1cbef579454a30776e43175b3",
      "tree": "4d90fae8f7cd20532afdf0a26975c7d9a567e59b",
      "parents": [
        "13e260ea2c3220a217626b12bff538916fdd2caf"
      ],
      "author": {
        "name": "Matt Riedemann",
        "email": "mriedem.os@gmail.com",
        "time": "Mon Apr 01 12:19:45 2019 -0400"
      },
      "committer": {
        "name": "Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Tue Apr 02 10:13:13 2019 +0000"
      },
      "message": "Remove crusty old python 3 package version logic\n\nIf we are running with python3, just assume that any\npackage that is not blacklisted is available for py3\nand just attempt to install it and let pip sort it out\nwhether it gets installed from a local or remote package.\n\nChange-Id: Ic05d183e489320f6dfc721575d47e7e4d661f87c\nCloses-Bug: #1820892\n"
    },
    {
      "commit": "8ca63acff888979bfceb9ce7a55eb217dcddde90",
      "tree": "fce231b323139eb8ab67ec14f8768e6cd9096596",
      "parents": [
        "b359b960d21486ae9f920fc4e64635459c0ee4b3",
        "a30dd1cc96a75d565ae924e4698c4208150e5564"
      ],
      "author": {
        "name": "Zuul",
        "email": "zuul@review.openstack.org",
        "time": "Sat Mar 30 00:45:27 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Sat Mar 30 00:45:27 2019 +0000"
      },
      "message": "Merge \"Fixed support python 2 on Fedora 27\""
    },
    {
      "commit": "a30dd1cc96a75d565ae924e4698c4208150e5564",
      "tree": "764bb7eafbc9d23d196459981c6a4ede1ddc8f21",
      "parents": [
        "deadc7c439f1126ba986b9c4f3c4d0b6d7774016"
      ],
      "author": {
        "name": "Lenny Verkhovsky",
        "email": "lennyb@mellanox.com",
        "time": "Thu Mar 14 13:19:36 2019 +0200"
      },
      "committer": {
        "name": "Lenny Verkhovsky",
        "email": "lennyb@mellanox.com",
        "time": "Sun Mar 24 11:46:45 2019 +0200"
      },
      "message": "Fixed support python 2 on Fedora 27\n\nI7d16194d6ba1391ca31251d5b50cbb8de033fc38 added wrong behavour\non Fedora \u003e 26 and Centos 7 when python3 disabled\npip should install packages in /usr/bin\n\nCloses-Bug: #1820070\nChange-Id: I3a8efbc8eb6e311db9c7347577c5d2047ba523a9\n"
    },
    {
      "commit": "ddb6179b0479ea9478cf2a146fe9b0d7592acaec",
      "tree": "a026986f2d74c08990cc6e5681cde42abe7319ea",
      "parents": [
        "2ba01316f37fb2c41b7dbab4a244d712ab6ed8e0"
      ],
      "author": {
        "name": "Matt Riedemann",
        "email": "mriedem.os@gmail.com",
        "time": "Tue Mar 19 15:04:12 2019 -0400"
      },
      "committer": {
        "name": "Matt Riedemann",
        "email": "mriedem.os@gmail.com",
        "time": "Tue Mar 19 15:04:12 2019 -0400"
      },
      "message": "Ease python 3 classifier check in check_python3_support_for_package_local\n\nThis makes the grep match in check_python3_support_for_package_local\nthe same as check_python3_support_for_package_remote.\n\nChange I0349de2026c49279ba7f262d5e86d37018d66326 in grenade started\nsetting the PYTHON3_VERSION variable, and then we recently started\nusing bionic nodes everywhere which means we\u0027re running python 3.6.\n\nThe etcd3gw package has a python 3 and 3.5 classifier, but not 3.6:\n\nhttps://pypi.org/project/etcd3gw/\n\nThe pip_install function code that is dealing with installing py3\npackages is hitting a problem installing etcd3gw if the package is\nlocal because of the more restrictive grep in the\ncheck_python3_support_for_package_local function, and since\nPYTHON3_VERSION\u003d3.6 now, we don\u0027t install from py3 and install\netcd3gw on python 2.7 which makes services like cinder-volume and\ncinder-backup, which use etcd3gw, fail when they are running under\npython 3 (they get module import errors).\n\nThis simply removes the $ restriction on the grep. Looking at the\nchange that added those local/remote functions:\n\n  I243ea4b76f0d5ef57a03b5b0798a05468ee6de9b\n\nThere is no explanation for the difference, it just said:\n\n  Also, since not many packages are classified correctly, fallback\n  to looking for just \"Programming Language :: Python :: 3\" and\n  log a message for the package to highlight the problem.\n\nSo that\u0027s what this change does.\n\nNote that alternatives would be:\n\n1. Update the etcd3gw package to add the 3.6 classifier and do\n   a release (this should probably happen anyway).\n\n2. Add etcd3gw to ENABLED_PYTHON3_PACKAGES but that would be a\n   short-term hack workaround.\n\nChange-Id: Icd3768870ba0f1659bb2e6f002043d975047b73e\nCloses-Bug: #1820892\n"
    },
    {
      "commit": "c759706686abb421879148410adced34e44333f2",
      "tree": "6be283d2b0d161e8335420839dcc7739b517e262",
      "parents": [
        "72f632222f6d90d3545b5d7ca48297da4218e2ea"
      ],
      "author": {
        "name": "Sean Mooney",
        "email": "work@seanmooney.info",
        "time": "Thu Feb 28 11:20:36 2019 +0000"
      },
      "committer": {
        "name": "Sean Mooney",
        "email": "work@seanmooney.info",
        "time": "Thu Feb 28 11:24:05 2019 +0000"
      },
      "message": "support python 3 on centos 7\n\nwhen installing with python 3.6 on centos7 pip installs\npackages to /usr/local/bin as it does on new versions\nof fedora.\n\nthis change updates the check to include centos\n\nChange-Id: I7d16194d6ba1391ca31251d5b50cbb8de033fc38\n"
    },
    {
      "commit": "f3302dcee3e11fb4283a28416e1bcf92514b6bf8",
      "tree": "e2ee094c33c2db78d39ad2c134f22dd8cbd353a4",
      "parents": [
        "f1275599ad372e7715b5b825d6ab8649867b3679",
        "58243f6203f3385039fe7124b037d5abf7e1d59e"
      ],
      "author": {
        "name": "Zuul",
        "email": "zuul@review.openstack.org",
        "time": "Wed Feb 06 16:34:56 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Feb 06 16:34:57 2019 +0000"
      },
      "message": "Merge \"Add options for development bindep install\""
    },
    {
      "commit": "85e6aaf54136409a7944fb645ec1bc78f212529b",
      "tree": "5e8c4b3b8bed13a46e132f3e0b07d418c84d678a",
      "parents": [
        "cc391e49d987d2810250a13e4281dcc195dd17dd",
        "698796f1aeb0d9a559488bad9f1d03e4941b061e"
      ],
      "author": {
        "name": "Zuul",
        "email": "zuul@review.openstack.org",
        "time": "Thu Jan 17 04:35:27 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Jan 17 04:35:27 2019 +0000"
      },
      "message": "Merge \"Fix an issue in iniset function\""
    },
    {
      "commit": "58243f6203f3385039fe7124b037d5abf7e1d59e",
      "tree": "657a7933404290db8f3df9e47de90c1439e51fc3",
      "parents": [
        "8fc227f63fd0820bd9c5725a6023529c742d2041"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Dec 13 14:05:53 2018 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Jan 14 16:35:12 2019 +1100"
      },
      "message": "Add options for development bindep install\n\nThis adds a -bindep option to the key development library install\nfunctions.  With this option the bindep.txt file will be referenced\nand the relevant packages installed.\n\nChange-Id: I856f1f59fca49b6020920d8f859b797f3b904300\n"
    },
    {
      "commit": "698796f1aeb0d9a559488bad9f1d03e4941b061e",
      "tree": "aefe7515b4d236f4182ae982f058d52abfd8921d",
      "parents": [
        "a88a22969cb557456d3a8db8ae734a59a1ba8066"
      ],
      "author": {
        "name": "Yi Wang",
        "email": "yi.c.wang@intel.com",
        "time": "Fri Dec 14 10:35:26 2018 +0800"
      },
      "committer": {
        "name": "Yi Wang",
        "email": "yi.c.wang@intel.com",
        "time": "Sat Jan 12 08:53:26 2019 +0800"
      },
      "message": "Fix an issue in iniset function\n\nGiven the file to be configured, if user \"stack\" even doesn\u0027t have\nread access, the result of configuration is not expected. iniset with\n\"-sudo\" option will always create the section and the option which we\nwant to configure for each calling, no matter whether this section and\nthis option exist in the file or not. The root cause is the calling of\ngrep and ini_has_option in iniset don\u0027t use the \"sudo\" option.\n\nChange-Id: I9d21322046b7be411c4c7c28fefc24894fa2e131\nSigned-off-by: Yi Wang \u003cyi.c.wang@intel.com\u003e\n"
    },
    {
      "commit": "36377f63e348200cd091b702c74350062a69fff9",
      "tree": "e9962c68b82b43a6b415c7aa71722ce3ce5e841e",
      "parents": [
        "a88a22969cb557456d3a8db8ae734a59a1ba8066"
      ],
      "author": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Tue Dec 04 11:33:03 2018 -0500"
      },
      "committer": {
        "name": "Tom Barron",
        "email": "tpb@dyncloud.net",
        "time": "Wed Jan 09 09:05:36 2019 -0500"
      },
      "message": "install under python3 by default when enabled\n\nRemove the requirement that services explicitly enable python3 support\nin order to be tested under python3 when running with python3\nenabled. Keep the enable_python3_package() function for backwards\ncompatibility, for now, since it is called in some devstack plugins.\n\nExplicitly add swift to the set of packages that should not be installed\nusing python3 by default until full support is available.\n\nChange-Id: I8ab0a7c242bbf5bf3f091f5a85a98e2f4543f856\nSigned-off-by: Doug Hellmann \u003cdoug@doughellmann.com\u003e\n"
    },
    {
      "commit": "67394b02417802842021fdef95f68edbf723eb71",
      "tree": "8f586ee638d8cf5297cd2a9ab6196bd48c8e3f35",
      "parents": [
        "0c6208c6a07b0616b5982b6e9e7c8216397d49e3"
      ],
      "author": {
        "name": "Andreas Jaeger",
        "email": "aj@suse.com",
        "time": "Sat Nov 24 10:14:46 2018 +0100"
      },
      "committer": {
        "name": "Andreas Jaeger",
        "email": "aj@suse.com",
        "time": "Sat Nov 24 10:18:07 2018 +0100"
      },
      "message": "Remove is_in_projects_txt\n\nThis function is nowhere used as confirmed by codesearch:\nhttp://codesearch.openstack.org/?q\u003dis_in_projects_txt\u0026i\u003dnope\u0026files\u003d\u0026repos\u003d\n\nWe can remove the function.\n\nNote that usage of this function was removed in change\nI843208e2e982eb04931b76f5cb4bd219fbcd70de in 2015.\n\nThis came up in context of https://review.openstack.org/619089 where\nrequirements/projects.txt is getting removed.\n\nChange-Id: I487d3f9e340bd45e83245b9ca91e8e3b5ac3ae02\n"
    },
    {
      "commit": "e991f7da457e0f1343ca13e8adeb0f6334b04990",
      "tree": "917162302ab82adbc4051d90b765b4c08d35e33b",
      "parents": [
        "bb99f1f677beac272c541da0d85ef36d0ff5910a"
      ],
      "author": {
        "name": "imacdonn",
        "email": "iain.macdonnell@oracle.com",
        "time": "Thu Oct 04 19:41:59 2018 +0000"
      },
      "committer": {
        "name": "imacdonn",
        "email": "iain.macdonnell@oracle.com",
        "time": "Thu Oct 04 19:42:21 2018 +0000"
      },
      "message": "Use bash-style test for Fedora version\n\nOld-style test fails on Ubuntu when python3 enabled, with:\n\n.../devstack/inc/python: line 52: [: 16.04: integer expression expected\n\nUse bash-style test, which doesn\u0027t attempt to evaluate the RHS if the\nLHS evaluates to false\n\nChange-Id: If18031ab98c9060e5825c3a8d3c647bd3705cd9c\nCloses-Bug: #1796174\n"
    },
    {
      "commit": "c7c67658c1daa40bfcdddfc99d1e05a70d205e66",
      "tree": "c57b27c9970718ac1ecf5beef9af75c3be6dd01a",
      "parents": [
        "0d1bee17680d55c654e9b804d1b55e1437b65d06"
      ],
      "author": {
        "name": "Luigi Toscano",
        "email": "ltoscano@redhat.com",
        "time": "Mon Jun 04 10:59:57 2018 +0200"
      },
      "committer": {
        "name": "Luigi Toscano",
        "email": "ltoscano@redhat.com",
        "time": "Mon Jun 04 11:00:08 2018 +0200"
      },
      "message": "iniset: fix handling of keys with spaces\n\nCeph for example uses them. Creation already worked, but not\nupdates of existing keys.\n\nCloses-Bug: 1774956\n\nChange-Id: I20cb61c08079b9cd9ad56ac875525abf1442bff6\n"
    },
    {
      "commit": "a0f319fc6dcdc44fecbe054869b5eda3567cca5a",
      "tree": "576a993d4902988fdde17b82fb209bc94540ef45",
      "parents": [
        "f99d1771ba1882dfbb69186212a197edae3ef02c",
        "e1edde38edb697f56e111f55e5992e7bf22f6284"
      ],
      "author": {
        "name": "Zuul",
        "email": "zuul@review.openstack.org",
        "time": "Thu Apr 19 12:44:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Apr 19 12:44:31 2018 +0000"
      },
      "message": "Merge \"Automatically set LIBS_FROM_GIT based on required projects\""
    },
    {
      "commit": "e1edde38edb697f56e111f55e5992e7bf22f6284",
      "tree": "f042d7085a4dec97abcf0b358d9ed74116fd14ab",
      "parents": [
        "6f27fca4a76aceaadab3776c87c48743671ce502"
      ],
      "author": {
        "name": "James E. Blair",
        "email": "jeblair@redhat.com",
        "time": "Fri Mar 02 15:05:14 2018 +0000"
      },
      "committer": {
        "name": "James E. Blair",
        "email": "jeblair@redhat.com",
        "time": "Tue Apr 17 13:48:37 2018 -0700"
      },
      "message": "Automatically set LIBS_FROM_GIT based on required projects\n\nIf a project shows up in zuul\u0027s required-projects list, add it\nto LIBS_FROM_GIT automatically.  This way, when a user specifies\nthat a job requires a zuul-project, it gets used in testing, but\notherwise, it doesn\u0027t (pypi is used instead).\n\nAlso add information about what happens behind the scenes for both\nLIBS_FROM_GIT and plugin dependencies.\n\nThis moves the check performed in check_libs_from_git to\na helper function which is installed for most kinds of\ninstallations.  This means that if someone sets LIBS_FROM_GIT to\n\"foobar\", devstack won\u0027t error anymore, as nothing is going to\ntry to install foobar, therefore the check won\u0027t run on that.\nHowever, as we move to automated generation of the local config,\nthat error is not likely to happen.  This check was originally\nadded due to an error in the upper-constraints file (where a\nconstraint name did not match a package name).  This location of\nthe check would still catch that type of error.\n\nChange-Id: Ifcf3ad008cf42d3d4762cfb3b6c31c93cfeb40db\n"
    },
    {
      "commit": "236250f1c3e9f328f0dc23ab168afbcfa639a33b",
      "tree": "2c6830075f1fdb3bfe67ceae6c846002788198d9",
      "parents": [
        "9cc3e636fc25b84231ff4e204dfddbd07b933909"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Fri Mar 23 08:27:57 2018 -0500"
      },
      "committer": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Fri Mar 23 08:27:57 2018 -0500"
      },
      "message": "Rename python-openstacksdk to openstacksdk\n\nChange-Id: Ia77163f330f674146b369dfebea56bd97820057e\nDepends-On: https://review.openstack.org/554662\n"
    },
    {
      "commit": "b9891eea1f981fa51682f2c94f8e04f047f3dec4",
      "tree": "a9d85f1a4f2df599a0b24bd490fe52b2c12d4c0a",
      "parents": [
        "28b4be186105888b72300d27166deb771857df06"
      ],
      "author": {
        "name": "Victor Stinner",
        "email": "vstinner@redhat.com",
        "time": "Mon Jan 08 15:20:36 2018 +0100"
      },
      "committer": {
        "name": "Victor Stinner",
        "email": "vstinner@redhat.com",
        "time": "Tue Jan 09 11:22:39 2018 +0100"
      },
      "message": "Fix Python3 get_python_exec_prefix on Fedora 27\n\nOn Fedora 27, the default Pytho 3 install prefix changed from /usr\nto /usr/local:\nhttps://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe\n\nCloses-Bug: #1741901\nChange-Id: Id40620efdf173189df053b5d380a801092933f83\n"
    },
    {
      "commit": "e46f22db7fcb6e9aae5922d650eda14a15231fb8",
      "tree": "76ce9a5f76232c9ee2fea0c47c3ea89377f231b1",
      "parents": [
        "9ef3e8448580e9d166e1a4669a036da0205243b5"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Sun Dec 03 10:21:26 2017 -0600"
      },
      "committer": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Sun Dec 03 10:21:26 2017 -0600"
      },
      "message": "Add workaround for openstacksdk in check_libs_from_git\n\npython-openstacksdk does not match its pip name which is openstacksdk.\nSo setting python-openstacksdk in LIBS_FROM_GIT leads to devstack\nthinking there is a problem.\n\nPut in a workaround for now. It would be better to either:\n\n  a) rename python-openstacksdk repo to openstacksdk\n  b) rename the pip name for openstacksdk back to python-openstacksdk\n  c) add general support in the various GIT hashes for a pip name\n\nChange-Id: I57cf95763d54ad2060a4ce2af91c3ba18ca04db0\n"
    },
    {
      "commit": "007f588f275ac9d7320d4b24f1d05378d3df3d37",
      "tree": "1181b739611f600b94cf53bb0041cdc3bb4e9e03",
      "parents": [
        "b5fb7fd627fe24876a8dd2782fce065cf1957b55"
      ],
      "author": {
        "name": "DamonLi",
        "email": "damonl@vmware.com",
        "time": "Thu Nov 23 10:05:46 2017 +0800"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Nov 28 07:34:49 2017 +1100"
      },
      "message": "Convert to safe name in lib_installed_from_git\n\nThe \u0027pip list\u0027 command prints the \"safe name\" which converts _\u0027s to\n-\u0027s amongst other things; e.g. glance_store becomes\n\n  \"glance-store             0.21.1.dev22      /opt/stack/glance_store\"\n\nBecause people may use these more familiar \"file system\" names in\nLIBS_FROM_GIT automatically convert names when checking if libraries\nare installed.\n\nChange-Id: I30524f80a341f38dfa794a8f629d859e85a4a448\n"
    },
    {
      "commit": "b5fb7fd627fe24876a8dd2782fce065cf1957b55",
      "tree": "2dd6de6af181f809a4d2426bfdac4c4a86aee571",
      "parents": [
        "c19d0cbb27d2cd387d9b4543fc59ac6c084a68e6"
      ],
      "author": {
        "name": "rabi",
        "email": "ramishra@redhat.com",
        "time": "Wed Nov 22 08:14:29 2017 +0530"
      },
      "committer": {
        "name": "rabi",
        "email": "ramishra@redhat.com",
        "time": "Wed Nov 22 10:09:30 2017 +0530"
      },
      "message": "Fix lib_installed_from_git\n\nIn commit f0cd9a8b08d92524fc8e2c3f05d08cdebc638e2a we changed to\nuse column format, but it checks for zero length string and\ncheck_libs_from_git fails.\n\nChange-Id: I97b52b80efb33749647229a55147a08afa112dd2\n"
    },
    {
      "commit": "ec31a52560c5ee0b457b186f1bb73a18e53df6f8",
      "tree": "fe08d44692b27c6758fc8a2f4e4a7c1d8dd26c5b",
      "parents": [
        "84220d0cef0374ca9efcc215dcd7cb172e374592",
        "f0cd9a8b08d92524fc8e2c3f05d08cdebc638e2a"
      ],
      "author": {
        "name": "Zuul",
        "email": "zuul@review.openstack.org",
        "time": "Tue Nov 21 20:04:33 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Nov 21 20:04:33 2017 +0000"
      },
      "message": "Merge \"Update lib_install_from_git to use column format\""
    },
    {
      "commit": "065779517f9c99a80fbc39d51784c614e4ee341c",
      "tree": "f2dffa2c172a66bdc967fff6e9c00557524068bf",
      "parents": [
        "57ddd7c1613208017728c50370d2e259c072d511"
      ],
      "author": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Fri Oct 20 12:14:29 2017 -0700"
      },
      "committer": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Fri Oct 20 12:16:32 2017 -0700"
      },
      "message": "Properly get pip version\n\nThe old code was strip()ing the version string instead of split()ing the\nversion string so we always got the first character of the version\nstring. This worked fine as long as the pip version was single digit but\nas soon as it rolls over to \u002710.stuff\u0027 we will compare:\n\n  pip version 1 (instead of 10) \u003e 6\n\nWhich fails bceause 1 is less than six. Instaed we really do want to\ncompare 10 \u003e 6 so use split on \u0027.\u0027 instead.\n\nChange-Id: Ic7d0c04d7fa77774ab2d70fb9d11f182becec553\n"
    },
    {
      "commit": "f0cd9a8b08d92524fc8e2c3f05d08cdebc638e2a",
      "tree": "172fe1333ffcbfe13004d145766e94013c229108",
      "parents": [
        "a29329b55983d69c3966e1699f985be8cdf6e59d"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Fri Oct 06 13:11:48 2017 -0500"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Oct 19 15:35:38 2017 +1100"
      },
      "message": "Update lib_install_from_git to use column format\n\nThe pip list command supports a --format\u003dcolumns option which outputs\nthings in space delimited columns. Switch to using that.\n\nChange-Id: I5140a7d83bf567b1c3c67516112eb4c57074fa53\n"
    },
    {
      "commit": "9e7ead9ac2e791f70542741aa2c84e7ad828ac7a",
      "tree": "954c9a85974820855e0d5bfcf70a215e7f543816",
      "parents": [
        "52237ee5482ff8c614dc68088ecaaf7d59a85915"
      ],
      "author": {
        "name": "Zane Bitter",
        "email": "zbitter@redhat.com",
        "time": "Thu Oct 05 16:51:09 2017 -0400"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Oct 06 22:19:05 2017 +1100"
      },
      "message": "Calculate package directory correctly in pip_install\n\nStrip the [\u003cextras\u003e] string from a \u003cpackage_dir\u003e[\u003cextras\u003e] argument\nwhen looking for the package directory.  Explain what the heck is\ngoing on.\n\nChange-Id: I79beb5c3e9e7c35c91cdd0d5a1d91532bebc4b6d\nCloses-Bug: #1721638\n"
    },
    {
      "commit": "ae9c6ab759d9dc1c7e72159092539444ca03cf33",
      "tree": "344c9c1eb15a447f912084ee38ca8895a7a84729",
      "parents": [
        "5b419ffb1f20dfe613bd694fab8c1f08c8db7cce"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Sep 29 10:16:47 2017 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Sep 29 12:55:45 2017 +1000"
      },
      "message": "Use \"pip list\" in check_libs_from_git\n\nAs described in the change, \"pip freeze\" has issues with the way\nzuulv3 clones repos without a remote.  This is an attempt to use \"pip\nlist\" to check for local install\n\nChange-Id: I33d25f86b6afcadb4b190a0f6c53311111c64521\n"
    },
    {
      "commit": "87d2396d225533aefd8d52bb5fa574ea57dbb987",
      "tree": "6e05a6f6ac4d68fb62deca473df0bdb9edc294ce",
      "parents": [
        "dea3083d984569eac9647f1a28f10ae98afc42f7"
      ],
      "author": {
        "name": "Sampath Priyankara",
        "email": "sam47priya@gmail.com",
        "time": "Thu Aug 03 16:12:40 2017 +0900"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Aug 14 16:03:41 2017 +1000"
      },
      "message": "Don\u0027t uninstall pip packages if OFFLINE\u003dTrue\n\nlib/nova does a pip re-install of libvirt-python to rebuild the python\nlibrary incase the underlying libvirt version changed during package\ninstalls.  In offline mode, the underlying version of libvirt can\u0027t\nhave changed; so we have the situation that we\u0027ve removed the libvirt\npython bindings but can\u0027t reinstall them (because we\u0027re offline).\n\nThis fixes that particular situation, but skipping uninstalls in\noffline mode seems generically OK.\n\nChange-Id: I2b75d45d94d82f87d996c7570c125d46f5f99f6a\nCloses-Bug: #1708369\n"
    },
    {
      "commit": "fa0077707e15abfbecddbd22fe8594ffe3b4ecc4",
      "tree": "d2a59a3bc977e8ad597e9bd0b502408fe7b6ba88",
      "parents": [
        "ab7035040319d8b145e1ad4ffcefa184ad6bd8a9"
      ],
      "author": {
        "name": "Takashi NATSUME",
        "email": "natsume.takashi@lab.ntt.co.jp",
        "time": "Sat Jul 22 08:59:43 2017 +0900"
      },
      "committer": {
        "name": "Takashi NATSUME",
        "email": "natsume.takashi@lab.ntt.co.jp",
        "time": "Sat Jul 22 09:12:59 2017 +0900"
      },
      "message": "Update URLs\n\nSome URLs are broken, so fix them.\nThe others are redirect to new URLs,\nso replace them with new ones.\n\nThe config options of nova serial console proxy\nhave been gathered in nova/conf/serial_console.py.\nSo the description in doc/source/guides/nova.rst\nis fixed.\n\nChange-Id: Ifd81cc09969341fbf8f135a913fc6003b94e0acc\n"
    },
    {
      "commit": "f266a2dc81be050fec41a180906723ab5cf61df5",
      "tree": "7c1abda53bbe9cf803acd2d48c1e638b2ccc0d81",
      "parents": [
        "9234316794403e6ec422c3c9a766edbb1bae180f"
      ],
      "author": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Mon Jun 12 14:57:59 2017 -0700"
      },
      "committer": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Mon Jun 12 14:57:59 2017 -0700"
      },
      "message": "Install test-requirements with main install\n\nTo reduce the total number of invocations necessary for pip which isn\u0027t\nthe quickest thing ever (due to needing to evaluate constraints and deps\nlists and what is currently installed) combine the main installation of\nsoftware with its test-requirements.txt file which should roughly halve\nour pip invocations.\n\nChange-Id: Ibcc3264136e66d34a879ad1c90a62e1bb6a84243\n"
    },
    {
      "commit": "954fd1b729f792dc6cbc470285a5e147053147a8",
      "tree": "3e6d443db958471bcdff88666ede3e898438c32a",
      "parents": [
        "ac042d41222eea83bf360b4db89c4c7bf415457d"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "bhaley@redhat.com",
        "time": "Tue May 16 12:24:45 2017 -0400"
      },
      "committer": {
        "name": "Brian Haley",
        "email": "bhaley@redhat.com",
        "time": "Tue May 16 12:24:45 2017 -0400"
      },
      "message": "Use -y with \u0027pip uninstall\u0027\n\n\u0027pip uninstall\u0027 will hang running stack.sh if it has to\nprompt the user for input, use -y.\n\nChange-Id: Ic94639e444b87fd3538463d5a51c01a0208a2ab2\nCloses-bug: #1691172\n"
    },
    {
      "commit": "f28e7ef6ba48030d7bc5c6ea27f28b8a1fc281e9",
      "tree": "caeddc62ade7f67002bf13f1ff1b18563ad7c9c2",
      "parents": [
        "2b88b323c9e08ab8fecfe4e3e88d79c26761411c"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Sun May 07 22:02:10 2017 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Mon May 08 07:30:20 2017 -0400"
      },
      "message": "uninstall libvirt-python and reinstall\n\nlibvirt-python compiles against the currently installed libvirt. If\nyou upgrade that, it needs to rebuild, however it won\u0027t change\nversions, so pip install just noops. Force an uninstall / reinstall of\nit every time to handle potential upgrades of libvirt.\n\nChange-Id: If34541b34aa6d55eedaf6c603fd1fe92eb887308\n"
    },
    {
      "commit": "bacfb94390e0680fac13cb7f7236b9d5d0e89b89",
      "tree": "81b31280be69731159e6edd8fb50f6224f01da5f",
      "parents": [
        "fc2919ffdfe360f05ac7be7b35bdb3c9305acebb"
      ],
      "author": {
        "name": "Armando Migliaccio",
        "email": "armamig@gmail.com",
        "time": "Mon Mar 20 22:27:20 2017 -0700"
      },
      "committer": {
        "name": "Armando Migliaccio",
        "email": "armamig@gmail.com",
        "time": "Mon Mar 20 22:33:56 2017 -0700"
      },
      "message": "Enable openSUSE to work in Python 3.x environments\n\nAdd packages required to run devstack with USE_PYTHON3\u003dTrue.\n\nChange-Id: Iee43c9335bd82c10cfaeffb02d1d99290c34bb83\n"
    },
    {
      "commit": "6523d6e09789076d0a430bf7b608511fcb1c406a",
      "tree": "d96213973217dd7ff0611091f6facdced64a31ce",
      "parents": [
        "73a3e2decd2e7d9fd652fb40c4e697794d9abd05",
        "afef8bf097356d7bb37c57d0daa44653c7905c17"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Mar 08 13:31:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Mar 08 13:31:57 2017 +0000"
      },
      "message": "Merge \"Make declared variables global\""
    },
    {
      "commit": "afef8bf097356d7bb37c57d0daa44653c7905c17",
      "tree": "0aa5c440428469fa0160285cab3ca6e5573135b2",
      "parents": [
        "6f23555c959ce2a121d57c27a7460815808ac2b6"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Mon Mar 06 14:07:23 2017 -0500"
      },
      "committer": {
        "name": "John L. Villalovos",
        "email": "john.l.villalovos@intel.com",
        "time": "Tue Mar 07 22:07:29 2017 -0800"
      },
      "message": "Make declared variables global\n\nWhen variables use the \u0027declare\u0027 directive, it is by default a local\nvariable. While other variables have global scope.\n\nFor example:\n   declare -A AN_ARRAY   # local in scope\n   foo\u003d1                 # global in scope\n\nThis causes errors to occur as some of the variables will be local only\nand others will be global.\n\nUpdate the code, as appropriate, so that variables using the \u0027declare\u0027\ndirective also include the \u0027-g\u0027 flag to have them also be global. Not\nevery instance of a declared variable has been updated.\n\nCloses-Bug: #1669509\nCo-Authored-By: John L. Villalovos \u003cjohn.l.villalovos@intel.com\u003e\nChange-Id: I2180b68fe861ad19c6d4ec0df0f9f8a528347862\n"
    },
    {
      "commit": "0e1e78117e63af1d55b969469642a7337c616aa0",
      "tree": "4efb0f0a7b4b8980ce46f59b9889cf525b6f60a7",
      "parents": [
        "259c5e19a72dfab893446275bf7d26b92d63ca5b",
        "a2eb89417fbb6d61526b1819cbe3d0a60537eedd"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Feb 28 16:37:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Feb 28 16:37:49 2017 +0000"
      },
      "message": "Merge \"install LIBS_FROM_GIT using python 2 and 3 where appropriate\""
    },
    {
      "commit": "259c5e19a72dfab893446275bf7d26b92d63ca5b",
      "tree": "87fe17bcae6dfc5f62daa1d546cfd7eb9c806a0a",
      "parents": [
        "d81e422722d8fba76df2c9a7638892c08fe5c7bb",
        "94129c7d02902e0f000c09c8245be341df1c5965"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Feb 28 16:37:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Feb 28 16:37:20 2017 +0000"
      },
      "message": "Merge \"allow config to manage python3 use explicitly\""
    },
    {
      "commit": "f80e2cfee85a200ba204ac00bada74695abcd964",
      "tree": "00dd1ee9922f85dbc032e8be6959fd415c7e1478",
      "parents": [
        "eb9d42b65c8dbbe531e8124b442f13db5dff2993"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Jan 18 15:42:32 2017 -0500"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Jan 18 15:42:53 2017 -0500"
      },
      "message": "add install_devstack_tools\n\nAn initial install for devstack-tools, this will need to use all the\nfun pip extra variables for installation, however the current\npip_install always prefers python2, and we only want to do python3\nhere.\n\nChange-Id: I3dcdb35130f76fad81cb7b0d4001b7e96efbbd84\n"
    },
    {
      "commit": "a2eb89417fbb6d61526b1819cbe3d0a60537eedd",
      "tree": "bf3d868fefff195b8e1e62792c194a04cd279ddf",
      "parents": [
        "94129c7d02902e0f000c09c8245be341df1c5965"
      ],
      "author": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Mon Jan 09 22:11:49 2017 +0000"
      },
      "committer": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Tue Jan 10 16:08:43 2017 +0000"
      },
      "message": "install LIBS_FROM_GIT using python 2 and 3 where appropriate\n\nWhen installing a library from source and python 3 is enabled, first run\nthe installation process with python 2 enabled to ensure the library is\nalso installed under python 2 for any services not yet running under\n3. The python 3 version is installed second so that command line tools\ninstalled with libraries are installed under python 3 when python 3 is\nenabled.\n\nChange-Id: Ibb0f7a68d21081bf7652a0c1515080c0c54888ca\nSigned-off-by: Doug Hellmann \u003cdoug@doughellmann.com\u003e\n"
    },
    {
      "commit": "94129c7d02902e0f000c09c8245be341df1c5965",
      "tree": "731f84b7edfcc48ff2a7f8a229a233a9a17b1b0a",
      "parents": [
        "858a105c81f1571825d086d359ca7538079072fb"
      ],
      "author": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Mon Jan 09 21:24:24 2017 +0000"
      },
      "committer": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Tue Jan 10 16:08:14 2017 +0000"
      },
      "message": "allow config to manage python3 use explicitly\n\nAdd variables ENABLED_PYTHON3_PACKAGES and DISABLED_PYTHON3_PACKAGES to\nwork like ENABLED_SERVICES and DISABLED_SERVICES and to manage which\npackages are installed using Python 3. Move the list of whitelisted\npackages in pip_install to the default for ENABLED_PYTHON3_PACKAGES,\nexcept swift which is not enabled by default for now.\n\nAdd enable_python3_package and disable_python3_package functions to make\nediting the variables from local.conf easier.\n\nAdd python3_enabled_for and python3_disabled_for functions to check the\nsettings against packages being installed by pip.\n\nUpdate pip_install to check if python3 is disabled for a service, then\nsee if it is explicitly enabled, and only then fall back to looking at\nthe classifiers in the packaging metadata.\n\nUpdate pip_install messages to give more detail about why the choice\nbetween python 2 and 3 is being made for a given package.\n\nChange-Id: I69857d4e11f4767928614a3b637c894bcd03491f\nSigned-off-by: Doug Hellmann \u003cdoug@doughellmann.com\u003e\n"
    },
    {
      "commit": "52b10746154d57c067b152009bbc13024c2951d9",
      "tree": "5d41a7642cc8c66b8e7152f30210b3f13c74dc9e",
      "parents": [
        "72bfe17b6ae633edb4dc02dc72691faf4649d08c"
      ],
      "author": {
        "name": "Mehdi Abaakouk",
        "email": "sileht@redhat.com",
        "time": "Thu Dec 01 16:11:17 2016 +0100"
      },
      "committer": {
        "name": "Mehdi Abaakouk",
        "email": "sileht@redhat.com",
        "time": "Wed Jan 04 10:21:29 2017 +0100"
      },
      "message": "cinder: configure dlm when this one is zookeeper\n\nPrevious this was set the zake, but that was revert to missing\ndependencies issue and because zake is a test fixture and not somthing\nto deploy.\n\nThis change configures the Cinder dlm with this one is zookeeper.\nAnd it installs tooz and the extra dependencies needed for the\nzookeeper driver.\n\nTo do it, this commit have to introduce a new method for package\ninstallation: \u0027pip_install_gr_extras package extra1,extra2\u0027.\n\nChange-Id: Idca310c08e345db59840eb31434c6cb1f849fa70\n"
    },
    {
      "commit": "72bfe17b6ae633edb4dc02dc72691faf4649d08c",
      "tree": "01cac76d2262a82c0e7e34a69b4dfa86be414618",
      "parents": [
        "721eb4fcdd02c33d3386cbc9db7cbf0500340fb6",
        "22b63666de41bf62b008cff709168c5e84a0bf3b"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Jan 03 20:07:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Jan 03 20:07:35 2017 +0000"
      },
      "message": "Merge \"Warn instead of die on undefined config names\""
    },
    {
      "commit": "0c0d848b8ce151c72b21114ac741508351a0bf37",
      "tree": "b4d49ea660b345035de9651f2baadaa8526227d8",
      "parents": [
        "afa8a00c14f100cf610ac076f07db2379cfcee20"
      ],
      "author": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Tue Jan 03 08:52:25 2017 -0500"
      },
      "committer": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Tue Jan 03 08:52:28 2017 -0500"
      },
      "message": "Add swift and uwsgi to py35 whitelist\n\nReally close to getting swift and keystone under uwsgi working, so\nlet\u0027s white list them. Won\u0027t affect any existing jobs, so we should\nbe good.\n\nChange-Id: I51d56d16a5b175bd45dee09edc0b2748d72a5d06\n"
    },
    {
      "commit": "afa8a00c14f100cf610ac076f07db2379cfcee20",
      "tree": "d4136642c135cfb9ba5fe01dc30fdb1230d32a7e",
      "parents": [
        "29890549929b4f2ab9dd5c96d0a857708c683997"
      ],
      "author": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Mon Dec 19 09:51:01 2016 -0500"
      },
      "committer": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Fri Dec 23 13:15:03 2016 -0500"
      },
      "message": "Switch to python 3.5\n\nUse trueorfalse to normalize the values for USE_PYTHON3\n\nInstall 3.5 instead of 3.4 When USE_PYTHON3 is specified.\nAlso, since not many packages are classified correctly, fallback\nto looking for just \"Programming Language :: Python :: 3\" and\nlog a message for the package to highlight the problem.\n\nAlso special case some services that are *almost* ready\n\nDepends-On: Id48e1b328230fcdf97ed1cb4b97f4c3f9cf6eb8a\nDepends-On: Ib7d9aa0e0b74a936002e0eea0b3af05102b06a62\nChange-Id: I243ea4b76f0d5ef57a03b5b0798a05468ee6de9b\n"
    },
    {
      "commit": "22b63666de41bf62b008cff709168c5e84a0bf3b",
      "tree": "c1697001191dc1d96a06107eb47ca84aa7ed4906",
      "parents": [
        "8040232e05a68ce18e4ddfa233140d604c94cc77"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Fri Dec 09 07:33:01 2016 -0500"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Mon Dec 12 09:55:32 2016 -0500"
      },
      "message": "Warn instead of die on undefined config names\n\nWhen using local.conf in multinode envs not everything is going to be\ndefined in all places. Eventually we probably want to make it so we\nhave a host role for these sections or something. But for now warn\ninstead of die when we can\u0027t find a config var.\n\nChange-Id: I6959099373f035fbfe9e540a44e4c52b8e7c95c0\nCloses-Bug: #2000824\n"
    },
    {
      "commit": "02f3f9a6bbb6c4af989ad6cf504d5c49d7c9b4e2",
      "tree": "a2f2577d2a27eaf9e2ac14f8eb7679c02b322cb3",
      "parents": [
        "a3bb131c138859367f4529720121fd3eb8e239fd"
      ],
      "author": {
        "name": "YAMAMOTO Takashi",
        "email": "yamamoto@midokura.com",
        "time": "Sat Nov 26 00:43:07 2016 +0900"
      },
      "committer": {
        "name": "YAMAMOTO Takashi",
        "email": "yamamoto@midokura.com",
        "time": "Sat Nov 26 00:49:55 2016 +0900"
      },
      "message": "meta-config: Fix consecutive same sections\n\nThe current coding fails to process local.conf like\nthe following.  Note: This example is taken from a\nreal use case. [1]\n\n    [[post-config|$NEUTRON_CONF]]\n    [qos]\n    notification_drivers \u003d midonet\n    [[post-config|$NEUTRON_CONF]]\n\n    [quotas]\n    # x10 of default quotas (at the time of writing)\n    quota_network\u003d100\n    quota_subnet\u003d100\n    quota_port\u003d500\n    quota_router\u003d100\n    quota_floatingip\u003d500\n    quota_security_group\u003d100\n    quota_security_group_rule\u003d1000\n\n[1] https://review.openstack.org/#/c/400627/\n\nCloses-Bug: #1583214\nChange-Id: Ie571b5fa5a33d9ed09f30ba7c7724b958ce17616\n"
    },
    {
      "commit": "0a099763b022ce476f921c8a4bc2ea20ce5f67b4",
      "tree": "2ebf715f41fed72d8dfa6b68368888ae398247a1",
      "parents": [
        "e56318f9bc87b0ed0e1ce6fcd1216aebe3689fe8"
      ],
      "author": {
        "name": "Lubosz \"diltram\" Kosnik",
        "email": "diltram@gmail.com",
        "time": "Wed Aug 03 10:21:41 2016 -0500"
      },
      "committer": {
        "name": "Lubosz \"diltram\" Kosnik",
        "email": "diltram@gmail.com",
        "time": "Wed Aug 03 10:21:41 2016 -0500"
      },
      "message": "Change python version to 3.5\n\nOn Ubuntu Xenial there is no way to install python3.4\nUse value specified in PYTHON3_VERSION\n\nChange-Id: Ibc69b1c8270bdd240c82cf2acfdfd0730ef0f182\n"
    },
    {
      "commit": "88ccd47c88dc39b8d746afae89dea31d46558a68",
      "tree": "fead6219e57bdb10c32d8b59c5334c805f2995e9",
      "parents": [
        "5c9c54b1ff50f7339e9f958bf053232b0c26f24e"
      ],
      "author": {
        "name": "Spyros Trigazis",
        "email": "strigazi@gmail.com",
        "time": "Sun Jul 24 22:13:57 2016 +0200"
      },
      "committer": {
        "name": "Spyros Trigazis",
        "email": "strigazi@gmail.com",
        "time": "Mon Jul 25 14:31:51 2016 +0200"
      },
      "message": "Keep old behavior of setuptools for editable installs\n\nIn the 25.0.0 release [1] of setuptools during any install\noperation the package in not overwritten. If a package is\ninstalled from another requirement via pip and then it is\ninstalled again from git, it is not updated causing\ncheck_libs_from_git to fail.\n\n[1] https://setuptools.readthedocs.io/en/latest/history.html#v25-0-0\n\nChange-Id: Ibaa1d4157816ea649f4452756fbde25951347001\nCloses-Bug: #1605998\n"
    },
    {
      "commit": "bb35715cfe68ad8d1d2ccb2b2e7eb4143e87d678",
      "tree": "b3f01bf87fbc6ff1260e856109a215de714a3b60",
      "parents": [
        "01cbe7c1438d8c7a262c1ac771531c24d08ea54f"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Jun 07 11:20:55 2016 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Fri Jul 01 12:50:18 2016 +0000"
      },
      "message": "add local.conf modifying functions\n\nThis adds a set of local.conf modifying functions which make it easier\nfor consuming projects like devstack-gate to programatically add\nelements to local.conf structured files.\n\nChange-Id: I3427968c2bd43aba12b3619acc27f73c74f0dabb\nCo-Authored-By: fumihiko kakuma \u003ckakuma@valinux.co.jp\u003e\n"
    },
    {
      "commit": "46f8cb7f208d00f89863cf57f2400309cf8f6bd4",
      "tree": "c5515957862bc7cdf5995cb33ca6af01a571db3d",
      "parents": [
        "18534b2805af27fd428fe874525e6dbb1920e373"
      ],
      "author": {
        "name": "Marc Koderer",
        "email": "marc@koderer.com",
        "time": "Fri May 13 09:08:16 2016 +0200"
      },
      "committer": {
        "name": "Marc Koderer",
        "email": "marc@koderer.com",
        "time": "Tue May 17 08:57:39 2016 +0200"
      },
      "message": "Add option to download all libs from git\n\nFor client debugging that invokes multiple libs it can be useful\nto have all libs directly in git and not listing all of them\nin LIBS_FROM_GIT.\n\nTrivialFix\n\nChange-Id: Ie631cc4045231ebbe8177d2d113e47e4bf83f61c\n"
    },
    {
      "commit": "c8c1c615f2bf63e6a1ad9be70a340058bd813919",
      "tree": "b0a6e0905759762fdc29d07454919b605bf284a1",
      "parents": [
        "0a2a7ae8471575d887a19b9bf8b7375ea1fd7f45"
      ],
      "author": {
        "name": "YAMAMOTO Takashi",
        "email": "yamamoto@midokura.com",
        "time": "Tue Mar 22 14:29:47 2016 +0900"
      },
      "committer": {
        "name": "YAMAMOTO Takashi",
        "email": "yamamoto@midokura.com",
        "time": "Tue Mar 22 21:23:23 2016 +0900"
      },
      "message": "Normalize path for upper-constraints\n\nIt seems pip distinguishes paths with .. or extra / for constraints.\nFor example, the following directories are considered different.\n\n    /path/to/dir\n    /path/to//dir\n    /path/to/dir/subdir/..\n\nThis commit tries to normalize the given directory name to avoid\n\"Could not satisfy constraints for \u0027xxxx\u0027: installation from path\nor url cannot be constrained to a version\" error due to directory\nname mismatch.\n\nReference: https://github.com/pypa/pip/pull/3582\nCloses-Bug: #1542545\nChange-Id: Iae9d58c27d3b10bca16e4a471507c4d5c16439a0\n"
    },
    {
      "commit": "7ae97298c55d9ba21d2dc037cc7d9fae54afa183",
      "tree": "f6dfe9c2e05a9f2b3bb9f8b3613ed91341f0bc2f",
      "parents": [
        "f130b283d9603477c0ffa7705eec39d73798b4d2"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Feb 16 14:50:53 2016 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Feb 16 14:50:53 2016 +1100"
      },
      "message": "Minor fixes for bashate trunk\n\nWe don\u0027t have a new bashate release yet, but this fixes some minor\nissues when used with bashate trunk.\n\nThe only two things triggered are stricter checking of assignment in\nlocal declartions (catches quotes) and one instance of evaluating\narithmetic result in tools/xen/functions.\n\nTherefore, hopefully, this change has no effect!\n\nChange-Id: I3fd5d55236e90c2f2c25243af87adaf0c1b763e2\n"
    },
    {
      "commit": "b6156915768b65fbc588c7601fc5a6a1e89d186c",
      "tree": "163aba711a605e4fb88e2aec73a27cb4e1482c4f",
      "parents": [
        "ddeaaf20447f04fb46fe3c423d657e3e6f7346e8",
        "cc6af3fc94ea56b0f081eabcb65404b0fa3716fe"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Jan 07 04:51:19 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Jan 07 04:51:19 2016 +0000"
      },
      "message": "Merge \"XenAPI: add support to use local.conf\""
    },
    {
      "commit": "c615993fe16902bfc1ac91cad7da34084c77ed99",
      "tree": "6e9a5a65c0561d95b42d8586f3dd1a1b00090453",
      "parents": [
        "535fcd008eee7ec5d11f8d788f7d48514db56bfb",
        "0842b8147f098106b679cf652edbcb5ea4330f04"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Jan 06 20:17:12 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Jan 06 20:17:12 2016 +0000"
      },
      "message": "Merge \"Support extra dependencies when setup_develop\""
    },
    {
      "commit": "8ba3cf0132f1d97ccf5e55aa82f67efbd601da6a",
      "tree": "cc12c8d40544abfd824b91d183700201c28ac165",
      "parents": [
        "119e36c9219334c76ec16f69a0e6e83554dc732b",
        "e208d060e17e2ad622c7b06cd90baed0eeed89f8"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Jan 05 18:56:26 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Jan 05 18:56:27 2016 +0000"
      },
      "message": "Merge \"Preserve result returned by apt-get and pip\""
    },
    {
      "commit": "0842b8147f098106b679cf652edbcb5ea4330f04",
      "tree": "c1a9d4baee12f1d51b8a07a4c111c1bab492f8b5",
      "parents": [
        "e60d52c392098192b6c666cb345c50a9a4842d1b"
      ],
      "author": {
        "name": "Brant Knudson",
        "email": "bknudson@us.ibm.com",
        "time": "Mon Aug 03 13:31:25 2015 -0500"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Jan 05 07:41:19 2016 -0500"
      },
      "message": "Support extra dependencies when setup_develop\n\nRecent pip supports using [extras] to install extra dependencies\nfrom the project setup.cfg. Add support so that projects can take\nadvantage of it.\n\nFor example, if devstack is configured to use ldap, install the\nextra ldap dependencies using:\n\n setup_develop $KEYSTONE_DIR ldap\n\nPartial-Bug: 1479962\nChange-Id: Ic13d95b99aaa4d3854b2723343e90f5de6b98aa2\n"
    },
    {
      "commit": "e208d060e17e2ad622c7b06cd90baed0eeed89f8",
      "tree": "da018a768b076a2d5938af9c36ae1748c6a713b3",
      "parents": [
        "7bd9ca8a3be6aeb50bffdce48b220615b1297f79"
      ],
      "author": {
        "name": "Federico Ressi",
        "email": "federico.ressi@intel.com",
        "time": "Sat Nov 21 11:15:39 2015 +0000"
      },
      "committer": {
        "name": "Federico Ressi",
        "email": "federico.ressi@intel.com",
        "time": "Tue Jan 05 08:21:05 2016 +0000"
      },
      "message": "Preserve result returned by apt-get and pip\n\nChange I855ffe9c7a75e9943106af0f70cf715c34ae25c5 and\nI368fec44858bd97fc6a314fb20eed2b10932cbb1 added timing\ninfrastructure which hides the return value of\nthe main commands.  Restore the prior behaviour.\n\nChange-Id: I4a536abefa7824ac6d42e7bbbf1079d9cc055984\nCloses-Bug: #1518545\n"
    },
    {
      "commit": "135bd484a9f83099e33e18dd97274ad550a392bb",
      "tree": "2a6a731f79456ac7a1db6778baf973d061ec2b7d",
      "parents": [
        "1195a5b7394fc5b7a1cb1415978e9997701f5af1"
      ],
      "author": {
        "name": "vsaienko",
        "email": "vsaienko@mirantis.com",
        "time": "Fri Dec 11 11:03:52 2015 +0200"
      },
      "committer": {
        "name": "Vasyl Saienko",
        "email": "vsaienko@mirantis.com",
        "time": "Tue Dec 29 09:42:35 2015 +0000"
      },
      "message": "Introduce iniget_sections function\n\nThis function returns list of sections from specified INI file.\nIt is needed for I7938f26015d953efdf720774b5ad2cee4068ac90.\n\u0027iniget_sections\u0027 is needed for automatic node enrollment to\nIronic from INI syntax file.\n\nChange-Id: I52a69ad3bc8fc528e7f20e6b03a98f327acaaa74\nImplements: blueprint ironic-ml2-integration\n"
    },
    {
      "commit": "cc6af3fc94ea56b0f081eabcb65404b0fa3716fe",
      "tree": "f9965869dc77ba9315d349ed6191ab3cd7b848b6",
      "parents": [
        "147c442547f4736ec7ba3698aabc25510d14f0f8"
      ],
      "author": {
        "name": "Huan Xie",
        "email": "huan.xie@citrix.com",
        "time": "Wed Dec 23 02:17:01 2015 +0000"
      },
      "committer": {
        "name": "Huan Xie",
        "email": "huan.xie@citrix.com",
        "time": "Mon Dec 28 08:56:14 2015 +0000"
      },
      "message": "XenAPI: add support to use local.conf\n\nXenServer install with devstack doesn\u0027t support local.conf, this fix\nis to add support for using local.conf and backward-compatibility of\nlocalrc\n\nChange-Id: Ie494e01f8f1ecb8720e14392ef3f12d5a5a01dcd\nCloses-Bug: #1528520\n"
    },
    {
      "commit": "1f7631dce6252f32c182176b5e11b1f8eaa8b399",
      "tree": "358a68e239b97a5f925e60a9d0e0053c34f1e781",
      "parents": [
        "7b7101f1c5ccd4d0722245613df8c8f7a67e79b9",
        "ddc3839bdc7ff73f6224273605db10fd88cd60df"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Dec 09 18:03:58 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Dec 09 18:03:58 2015 +0000"
      },
      "message": "Merge \"Enable optional Python 3 support\""
    },
    {
      "commit": "563c68f3cd26bb0ed440c76f4d922590e6e4e181",
      "tree": "b8e99a611a9cf0a51a974af4eead05dbb6ad450c",
      "parents": [
        "366382fa6e435d6ea38dea8784d1c1e9d108a76d",
        "e0ac37c257bf08db8d220d13773859d9202305d2"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Sun Dec 06 13:34:19 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Sun Dec 06 13:34:19 2015 +0000"
      },
      "message": "Merge \"Fix path setup in add_sudo_secure_path\""
    },
    {
      "commit": "ddc3839bdc7ff73f6224273605db10fd88cd60df",
      "tree": "0d00622ab7f5b0e4ae8e2832a208237b19e1d318",
      "parents": [
        "b889294af7aa1ccf613da28fb08f547306e0f581"
      ],
      "author": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Thu May 07 21:06:24 2015 +0000"
      },
      "committer": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Tue Dec 01 14:52:35 2015 -0500"
      },
      "message": "Enable optional Python 3 support\n\nAdd USE_PYTHON3 and PYTHON3_VERSION variables to allow services to use\npython 3 if they indicate support in their python package metadata.\n\nTested in Heat here -\u003e I837c2fba682ab430d50e9f43913f2fed20325a7a.\nProject config change to add a dedicated job to Heat is here -\u003e I0837e62d6ccc66397a5e409f0961edd4be31f467\n\nChange-Id: I079e18b58b214bf8362945c253d6d894ca8b1a6b\n"
    },
    {
      "commit": "e0ac37c257bf08db8d220d13773859d9202305d2",
      "tree": "e70f7d871b5f19cce98fcc2b1a9bdb8909e8ac47",
      "parents": [
        "bf81732b129675d667d2285859f32db16ef5e2f5"
      ],
      "author": {
        "name": "Dmitry Guryanov",
        "email": "dguryanov@parallels.com",
        "time": "Mon Nov 30 18:48:23 2015 +0300"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Dec 01 13:43:01 2015 +1100"
      },
      "message": "Fix path setup in add_sudo_secure_path\n\nThere are two bugs in add_sudo_secure_path.\n\nFirstly we don\u0027t properly check if the file exists, so always append\nthe new line.  This will overwrite any existing changes.\n\nSecondly the logic for checking if the path exists is inverted, so we\nmiss adding paths when we should.  This particularly causes failures\nwhen installing with virtualenv\u0027s since the paths are inside the\nvirtualenv, rather than the standard system locations.\n\nChange-Id: I646fe0c68958470d464fe4f3d81d5c17dd6f2ab6\nCloses-bug: #1521241\n"
    },
    {
      "commit": "5509ed579773bf1a69bc5fb406a206a6da010c56",
      "tree": "d06172fadcae6f52ec4316b8ec578e0ee5c48093",
      "parents": [
        "bf81732b129675d667d2285859f32db16ef5e2f5"
      ],
      "author": {
        "name": "Atsushi SAKAI",
        "email": "sakaia@jp.fujitsu.com",
        "time": "Mon Nov 30 20:20:21 2015 +0900"
      },
      "committer": {
        "name": "Atsushi SAKAI",
        "email": "sakaia@jp.fujitsu.com",
        "time": "Mon Nov 30 20:25:17 2015 +0900"
      },
      "message": "Fix comment typos in inc/ and tests/ directories\n\nvalu3 \u003d\u003e value3\nenviromnet \u003d\u003e environment\ndirecotry \u003d\u003e directory\nvirualenv \u003d\u003e virtualenv\neditiable \u003d\u003e editable\nenvirnment \u003d\u003e environment\n\nChange-Id: I97fb2d44a37b16d02d4fbdb08bfa33414349f651\n"
    },
    {
      "commit": "523f48803609b35350b624244fa73b1030c1d5fa",
      "tree": "17f99ab223f42eec58523fa89a49f243efba754b",
      "parents": [
        "307730acd9d271bc4c3d44f2dfed0eab67e1657d"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Oct 13 11:03:03 2015 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Nov 27 15:36:04 2015 +1100"
      },
      "message": "Namespace XTRACE commands\n\nI noticed this when debugging some grenade issues failures.\n\nAn include of grenade/functions stores the current value of XTRACE\n(on) and disables xtrace for the rest of the import.\n\nWe then include devstack\u0027s \"functions\" library, which now overwrites\nthe stored value of XTRACE the current state; i.e. disabled.\n\nWhen it finishes it restores the prior state (disabled), and then\ngrenade restores the same value of XTRACE (disabled).\n\nThe result is that xtrace is incorrectly disabled until the next time\nit just happens to be turned on.\n\nThe solution is to name-space the store of the current-value of xtrace\nso when we finish sourcing a file, we always restore the tracing value\nto what it was when we entered.\n\nSome files had already discovered this.  In general there is\ninconsistency around the setting of the variable, and a lot of obvious\ncopy-paste.  This brings consistency across all files by using\n_XTRACE_* prefixes for the sotre/restore of tracing values.\n\nChange-Id: Iba7739eada5711d9c269cb4127fa712e9f961695\n"
    },
    {
      "commit": "73de4a42d96780b0a14f36e43dd6cb7934101209",
      "tree": "f99e562aa7e546a65c02b89b44ce2a21f55baec8",
      "parents": [
        "c9f6f1126599c49c6cd838bdaa2a93ffb400e87c",
        "85f42f698c7bd74d53309da486fbf44ed860c348"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Nov 04 15:39:03 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Nov 04 15:39:03 2015 +0000"
      },
      "message": "Merge \"Provide an error message on bogus config file spec\""
    },
    {
      "commit": "85f42f698c7bd74d53309da486fbf44ed860c348",
      "tree": "8d8a7ab9738ebbd422b6617b780e2a8b56931570",
      "parents": [
        "f86d2e1a05dbcb144bb7614932adcd56514360fd"
      ],
      "author": {
        "name": "Thomas Morin",
        "email": "thomas.morin@orange.com",
        "time": "Tue Sep 01 10:33:10 2015 +0200"
      },
      "committer": {
        "name": "Thomas Morin",
        "email": "thomas.morin@orange.com",
        "time": "Mon Nov 02 15:35:01 2015 +0100"
      },
      "message": "Provide an error message on bogus config file spec\n\nIf local.conf specifies a config file addition in the following way...\n\n[[post-config|$MY_CONF_FILE]]\n[xyz]\nfoo\u003dbar\n\n...and $MY_CONF_FILE points to a file whose directory is not writable by\nthe user running the script, then stack.sh aborts with the following\nobscure message:\n\n  2015-09-01 08:20:08.113 | touch: setting times of \u0027/\u0027: Permission denied\n\nThis patch modifies inc/meta-config to provide a useful error message,\nsuch as:\n\n  2015-09-01 08:20:08.114 | could not create config file / ($MY_CONF_FILE)\n\nThis patch also modifies inc/meta-config so that it provides an error\nmessage if $MY_CONF_FILE is empty (instead of silently ignoring this local.conf\nstatement):\n\n  2015-09-01 09:38:53.406 | bogus config file specification: $MY_CONF_FILE\n  is undefined\n\nChange-Id: I9b78407420318548561012a8672762bc7fdd6db6\nCloses-Bug: 1490881\n"
    },
    {
      "commit": "d111182f218094dfdd88bda63af024c0c6e5d8cd",
      "tree": "6efbaec54afc4965767c187b5743c25b8346f438",
      "parents": [
        "5a98d4f7d0a1cf00f2aca9e0f3f6cdc285c1ee79",
        "ada886dd43ccc07f48d3a82d8d3d840fe5096c03"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Oct 14 02:43:52 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Oct 14 02:43:52 2015 +0000"
      },
      "message": "Merge \"Don\u0027t mix declaration and set of locals\""
    },
    {
      "commit": "cb658fab15dbf8074038bc76fc54ec4afccf5716",
      "tree": "f84e5354076c802cfe5801a5600529e5d03e3fa5",
      "parents": [
        "95c33d532f5d69516c0fbe123595f00f00792995"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Thu Oct 08 17:12:03 2015 -0400"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Oct 12 23:10:09 2015 +0000"
      },
      "message": "add pip install timing\n\nChange-Id: I368fec44858bd97fc6a314fb20eed2b10932cbb1\n"
    },
    {
      "commit": "ada886dd43ccc07f48d3a82d8d3d840fe5096c03",
      "tree": "93d62f1c82edc08d813b7f9f7eb9270e7024e055",
      "parents": [
        "433a9b10ddd6fa67d7459c4943a92ce4f488cebc"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 14:06:26 2015 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 17:03:32 2015 +1100"
      },
      "message": "Don\u0027t mix declaration and set of locals\n\nIa0957b47187c3dcadd46154b17022c4213781112 proposes to have bashate\nfind instances of setting a local value.  The issue is that \"local\"\nalways returns 0, thus hiding any failure in the commands running to\nset the variable.\n\nThis is an automated replacement of such instances\n\nDepends-On: I676c805e8f0401f75cc5367eee83b3d880cdef81\nChange-Id: I9c8912a8fd596535589b207d7fc553b9d951d3fe\n"
    },
    {
      "commit": "433a9b10ddd6fa67d7459c4943a92ce4f488cebc",
      "tree": "4db530838dadc2fc4e1e4ae4d37c6213f747919c",
      "parents": [
        "561137e88a513f1c1e1cc9f08b7d3bd909702282"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 13:29:31 2015 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 16:54:29 2015 +1100"
      },
      "message": "Don\u0027t set xtrace directly in local call\n\nIa0957b47187c3dcadd46154b17022c4213781112 detects setting local\nvariables with subshell commands.\n\nAlthough this is a particuarly benign case, it trips the test.  Rather\nthan putting in an ignore for this, we can easily change it to make\nthe test pass.  This seems better than putting in special work-arounds\nto bashate, etc.\n\nChange-Id: I37c3967c0f2d780a636a7d26cda83755085c5c69\n"
    },
    {
      "commit": "713fd2f6c644e13ed8ad7e8d819f6a3d44ff5370",
      "tree": "075349bcd6fad0d3b704d0b408cc992b313c7ea1",
      "parents": [
        "767c7298332d1275110ea983c2b9d4b228cbd2c9"
      ],
      "author": {
        "name": "Sirushti Murugesan",
        "email": "sirushti.murugesan@hp.com",
        "time": "Wed Sep 30 15:12:50 2015 +0530"
      },
      "committer": {
        "name": "Sirushti Murugesan",
        "email": "sirushti.murugesan@hp.com",
        "time": "Wed Sep 30 15:24:59 2015 +0530"
      },
      "message": "Additionally install test-requirements with pip_install\n\nWhen moving to Python 3, we also need to install test-requriements\nto allow projects to install any python 3 test dependencies they\nmight be missing otherwise.\n\nChange-Id: I2d19aa2f7ec8de869a82aa7764ab72cc8693101f\n"
    },
    {
      "commit": "c71973eb04d05c2497eb930c4e1b59dcaf983085",
      "tree": "b746858c67421e46d4b393558e6cd3fb052b7e81",
      "parents": [
        "2105b9f9ce325394d205d9c5f7a7427141bc4ebd"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Sep 08 07:12:48 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Fri Sep 11 07:01:02 2015 -0400"
      },
      "message": "check LIBS_FROM_GIT\n\nafter the glance_store vs. upper-constraints bug, it\u0027s probably worth\nactually enforcing and sanity checking that devstack is doing what\nit\u0027s being asked of with LIBS_FROM_GIT. This will hopefully reduce\nuser generated error.\n\nThis *might* not work with the current oslo naming, we\u0027ll have to test\nand normalize that.\n\nChange-Id: Iffef2007f99a0e932b68c4c897ebbfb748cac2b4\n"
    },
    {
      "commit": "9f52d648fbffe342b9c822f6519a7992c914f50f",
      "tree": "cf3c521444aa1cf691ffbb5115b175cd146e25ea",
      "parents": [
        "6059752fc0e86145a425288d7de9c9fa5aba6846",
        "cede78748291a8b5ae0dd0dc34c95da4a72fb3ea"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Sat Aug 29 00:38:16 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Sat Aug 29 00:38:16 2015 +0000"
      },
      "message": "Merge \"Add file creation test\""
    },
    {
      "commit": "a30a98099baa00b29c5e073c5a85b8a647aca954",
      "tree": "b7657bc7a5ebc9373a98b8a533e7403842e522de",
      "parents": [
        "897d116a7c9c09385e7e87e1202d7fa612802c49",
        "f44a024f022d843fd204da6e23b4a98a142c07f3"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Aug 27 22:15:30 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Aug 27 22:15:30 2015 +0000"
      },
      "message": "Merge \"Add -sudo option to ini setting options\""
    },
    {
      "commit": "05aa3846a0402edc9cc49f4ba36f09592004b273",
      "tree": "2ec4bb8ed899b1a9a89736d79b057a0bad9cb2e4",
      "parents": [
        "57aafb5a9ad20e19e2c248a8e853a32d5b719c03"
      ],
      "author": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Mon Aug 03 11:14:13 2015 -0700"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Aug 18 09:39:04 2015 -0700"
      },
      "message": "Just use constraints everywhere\n\nHaving behavior on your laptop diverge from behavior in the gate is\nconfusing. Just use constraints on every devstack run to be consistent.\nUsers of devstack can edit the requirements repo in order to change\nthese constraints locally if necessary.\n\nChange-Id: I843208e2e982eb04931b76f5cb4bd219fbcd70de\n"
    },
    {
      "commit": "cede78748291a8b5ae0dd0dc34c95da4a72fb3ea",
      "tree": "edb95ec50f80d2d72499acfac0438984dce5df39",
      "parents": [
        "f44a024f022d843fd204da6e23b4a98a142c07f3"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Jul 22 13:36:12 2015 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Jul 23 06:46:24 2015 +1000"
      },
      "message": "Add file creation test\n\nEnsure that iniadd is creating files that don\u0027t exist, as it has\nhistorically done.\n\nChange-Id: I2798996f3d46ff1dce410b815a87395f1bf729f9\n"
    },
    {
      "commit": "f44a024f022d843fd204da6e23b4a98a142c07f3",
      "tree": "16578c1561a9793e8cf1be28fe36dd41ad84c325",
      "parents": [
        "b997db602e15b60c68c0f7a99db74b5d2419a85c"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Jul 22 10:34:47 2015 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Jul 23 06:46:24 2015 +1000"
      },
      "message": "Add -sudo option to ini setting options\n\nAdd a -sudo option to allow these functions to operate on root-owned\nfiles.  Test-case is updated, but not enabled by default as we can\u0027t\nexpect test-runner to have sudo access.\n\nChange-Id: I134c3397314c7d9395996eb6c825ecb7e7fdfc69\n"
    },
    {
      "commit": "92884ede5d20a399186c61cf5e003da61838eec4",
      "tree": "ac415994aacf6491373569fce821fae8f2e1ca30",
      "parents": [
        "b5c37243886a2289b0a98a3ec0d2344eb326b59e"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Jul 22 12:16:45 2015 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Jul 23 06:46:24 2015 +1000"
      },
      "message": "ini-config : always reenable xtrace on return\n\nThese return paths doesn\u0027t renable xtrace, so output mysteriously goes\nmissing until the next time it is enabled.\n\nChange-Id: I3a8018dfa9397c07534970c39fba8dc10afcbe41\n"
    },
    {
      "commit": "2d25c9290d163d682ae3958f0e09fede937c0f0f",
      "tree": "5435b2da61aa43cd2772536aa2814fb96beaba87",
      "parents": [
        "05e32fb51ef2c493dd44a40bd9f0ae01822b2874",
        "2ba4a7214c96542987e1c379a28765a242136b12"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Mon Jul 06 18:22:33 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Mon Jul 06 18:22:33 2015 +0000"
      },
      "message": "Merge \"Fixed detection of a project in projects.txt\""
    },
    {
      "commit": "7c838616c98212c808d12c3789cc17ec76cbd878",
      "tree": "70405e7c3651870e51020bf4438770040ce41cd2",
      "parents": [
        "018c50c2e279e73920d71c317fbabfe3a32c9943"
      ],
      "author": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Fri Jul 03 13:28:09 2015 +1200"
      },
      "committer": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Sat Jul 04 09:55:56 2015 +1200"
      },
      "message": "Fix library runs.\n\nLibraries were resulting in two edit-constraints runs:\n - one for the library, which adds a non-editable file path\n - then one for the editable servers, but that fails becuse\n   pkg-resources couldn\u0027t parse the prior entry.\n\nThis is fixed in two parts: the dependent patch which supports parsing\nfile urls that have egg names, and this patch which changes from a\nfile path to a file url with an egg name.\n\nChange-Id: I0f07858e96ea3baf46f8a453e253b9ed29c7f7e2\n"
    },
    {
      "commit": "635a5ba9929e1594aacfc0229663f43898479e2a",
      "tree": "63f67288f2089ff4e5fda36de1d7dc8e3ede0845",
      "parents": [
        "432268b17bff090a8ea8cbbd46c430ddd5be98a1"
      ],
      "author": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Wed Jun 10 08:48:06 2015 +1200"
      },
      "committer": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Thu Jul 02 11:37:22 2015 +1200"
      },
      "message": "constraints file support for devstack.\n\nConstraints files allow a global view of dependencies for devstack\nwithout the side effect that requirements files have of installing\neverything everytime. This is part of the cross project\nrequirements-management spec.\n\nChange-Id: If089d30146629e6cf817edd634e5c2b80f1366dd\n"
    },
    {
      "commit": "2ba4a7214c96542987e1c379a28765a242136b12",
      "tree": "5ee67adf79f53b52bd99e6a96c0c16c6935e88f3",
      "parents": [
        "c782781a4ca5fc2671a6e5d188f68e99e7a656f4"
      ],
      "author": {
        "name": "Ihar Hrachyshka",
        "email": "ihrachys@redhat.com",
        "time": "Fri Jun 26 10:45:44 2015 +0200"
      },
      "committer": {
        "name": "Jeremy Stanley",
        "email": "fungi@yuggoth.org",
        "time": "Wed Jul 01 13:42:14 2015 +0000"
      },
      "message": "Fixed detection of a project in projects.txt\n\nBefore the fix, requirements soft-update was used for projects that are\nin the file.\n\nChange-Id: I095d42521f54b45a6b13837e2f8375fa04532faa\nCloses-Bug: #1469067\n"
    },
    {
      "commit": "7af8a1b9b3180da54e2c9505228ad722db44ca27",
      "tree": "9fce8a371897a33f33e840061773853ef23902ca",
      "parents": [
        "c4067a3cc033eec0d6fa589718e35257c6bcae97"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Jun 24 05:51:54 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Jun 24 05:55:02 2015 -0400"
      },
      "message": "only soft enforce requirements not in projects.txt\n\nWe\u0027re adding the ability to have devstack plugins, which should be\nmuch more free to require new things not in global requirements. Our\nold thinking of locking down all the requirements doesn\u0027t really work\nin a plugin model.\n\nInstead, if the project is in projects.txt, continue with the old\nbehavior. If it is not, do a soft update (update all the requirements\nwe know about, leave the ones we don\u0027t). This was previously the SOFT\nrequirements update mode, but now it will just be the default.\n\nChange-Id: Ic0c6e01a6d7613d712ac9e7e4a378cc3a8ce75e6\n"
    },
    {
      "commit": "40f3e33f734330c32f27882898ab1bb4ab8f3217",
      "tree": "dda0dcc7b877329284f44156b6910d3be78f22b1",
      "parents": [
        "810dc1d6f4b22eee04303e01968c1762a16986e0"
      ],
      "author": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Fri Jun 19 08:04:00 2015 +1200"
      },
      "committer": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Fri Jun 19 08:04:00 2015 +1200"
      },
      "message": "Put requirements repo in a venv.\n\nThis is to prevent any possible contamination of test results from its\npresence.\n\nChange-Id: I5a929854745650cc6a182ffc4d15c50caabdd727\n"
    }
  ],
  "next": "8afbaa1c80d54d7f6591f8f2c1a26c34f60c77e1"
}
