)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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"
    },
    {
      "commit": "9860876f5dbb07826b680143a4e111ad580053fe",
      "tree": "77f0ba9a7222d399565cca1a3db3a071ca9f7979",
      "parents": [
        "60996b1b60c3efb1376b9f0d659acebd05c47f09"
      ],
      "author": {
        "name": "Amrith Kumar",
        "email": "amrith@tesora.com",
        "time": "Wed Apr 08 15:37:58 2015 -0400"
      },
      "committer": {
        "name": "Amrith Kumar",
        "email": "amrith@tesora.com",
        "time": "Wed Apr 08 16:28:34 2015 -0400"
      },
      "message": "perform install_infra sooner in stack.sh\n\nThe install_infra() call needs to be done earlier since\npip_install_gr() depends on it. Also the fact that python module names\nare supposed to be lower case but some use camel case is a problem\n(for example with XenAPI).\n\nChange-Id: I7012d77134fa0d9c746d87e837934e7dcb337e5c\nCloses-Bug: #1441820\n"
    },
    {
      "commit": "60996b1b60c3efb1376b9f0d659acebd05c47f09",
      "tree": "82a570b328fa22b437aa27a10716ae9b5c3da4ff",
      "parents": [
        "d1549d624dea9b00d7aa0f935759c69290e9ea17"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Apr 08 09:06:49 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Apr 08 10:28:17 2015 -0400"
      },
      "message": "introduce pip_install_gr\n\nThis creates a new pip_install_gr that installs from global\nrequirements allowed versions. Now that stable branches are getting\ncapped all of devstack needs to be fixed to do things like this.\n\nChange-Id: I8fd0ef2bfc544ca2576fab09d3018f760b8848fe\n"
    },
    {
      "commit": "41d6f858be8431975762e65db470929c72b8f2a8",
      "tree": "611ecdd011df3c3ab60bfcc71281656f48767d00",
      "parents": [
        "c392fd3b5fd5464d87e514c173e4a5091d412caf"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Mar 25 22:42:46 2015 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Mar 26 15:36:23 2015 -0500"
      },
      "message": "Clean up additional INSTALL_TESTONLY_PACKAGES bits\n\nThe original removal is in https://review.openstack.org/#/c/167669/\n\nChange-Id: I3c59f040523d2cd1453465e80280955218880634\n"
    },
    {
      "commit": "ebdd9ac5b41da372c0276a507451ea9878be7dda",
      "tree": "4d933b332ade8428672ce8b28673691c4ef8d6d7",
      "parents": [
        "4cc060e77c58882f9728c2515e65d205d0e969dd"
      ],
      "author": {
        "name": "Chris Dent",
        "email": "chdent@redhat.com",
        "time": "Wed Mar 04 12:35:14 2015 +0000"
      },
      "committer": {
        "name": "Chris Dent",
        "email": "chdent@redhat.com",
        "time": "Thu Mar 26 14:27:54 2015 +0000"
      },
      "message": "Provide an option to force pip --upgrade\n\nMake it possible for someone to config\n\n  PIP_UPGRADE\u003dTrue\n\nin local.conf and thus force pip_install calls to upgrade. In\nautomated testing this is probably a bad idea, but in manual testing\nor situations where devstack is being used to spin up proof of\nconcepts having the option to use the latest and greatest Python\nmodules is a useful way of exploring the health of the ecosystem.\n\nTo help with visibility of the setting, and section has been added\nin configuration.rst near other similar settings.\n\nChange-Id: I484c954f1e1f05ed02c0b08e8e4a9c18558c05ef\n"
    },
    {
      "commit": "eeb7bda510ad29dce7bfc5eb8aed9b6fe25efea1",
      "tree": "550e2caaef10ce56f5bf96277c3293c05e969ea7",
      "parents": [
        "b23054c4b42b1c4ef8b0cdb642e63eac2a91a3f5"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Mar 25 11:55:32 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Mar 25 11:55:32 2015 -0400"
      },
      "message": "eliminate TEST_ONLY differentiation\n\ndevstack is a development and test environment, but by default we were\nonly installing the runtime dependencies. We should install all the\ntesting required packages as well.\n\nChange-Id: I7c95927b9daad15766aac9d1276b10ca62efb24c\n"
    },
    {
      "commit": "6a83c423fc1d788d9e81b58a8659eca1cb84095d",
      "tree": "60bed3e68a2d7737b50ec20ae711a96459b58695",
      "parents": [
        "1331a828dab91f2e053cb1a4b78b872af00410c1"
      ],
      "author": {
        "name": "Eli Qiao",
        "email": "liyong.qiao@intel.com",
        "time": "Tue Mar 17 16:54:16 2015 +0800"
      },
      "committer": {
        "name": "Eli Qiao",
        "email": "liyong.qiao@intel.com",
        "time": "Tue Mar 17 17:03:29 2015 +0800"
      },
      "message": "Fix pip install error\n\nIf we set mutiple proxy (ip or url), pip install will\ntreat the second proxy as a command.\nAdd quotation marks around proxy.\nexpecially for no_proxy\n\nChange-Id: I38ad3f083ba5155cda0e5e2b8f5df64492b7fecd\n"
    },
    {
      "commit": "cd8824ac04989e625d7f1ae442498383250932a9",
      "tree": "bb31db5fa112b5840df93eb22abf220d1cab8510",
      "parents": [
        "7a678bfcb2726506a6daff3893c962ade4abb96c"
      ],
      "author": {
        "name": "Joe Gordon",
        "email": "joe.gordon0@gmail.com",
        "time": "Wed Mar 04 16:40:19 2015 -0800"
      },
      "committer": {
        "name": "Joe Gordon",
        "email": "joe.gordon0@gmail.com",
        "time": "Fri Mar 06 01:33:31 2015 +0000"
      },
      "message": "Pass PIP_FIND_LINKS through sudo to pip\n\nWe weren\u0027t actually using the wheels since PIP_FIND_LINKS environmental\nvariable was getting lost during the sudo\n\nChange-Id: I4a89a70df63772a16ee5a8c3f1cd86e9c7bb5242\n"
    },
    {
      "commit": "8c2ce6ea724c9123b8cc5660c6ad52aa8ebf9865",
      "tree": "a1cb60d0152a36c76125f04d4565c11d7473d714",
      "parents": [
        "b1d8e8e274f0c220ae19ee3ea1a3b9a533459297"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Feb 18 14:47:54 2015 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Feb 18 20:19:38 2015 -0600"
      },
      "message": "Virtual environment groundwork\n\nIntroduce the tooling to build virtual environments.\n\n* tools/build_venv.sh: build a venv\n* introduce lib/stack to house functionality extracted from stack.sh that\n  is needed in other places, such as Grenade; start with stack_install_service\n  to wrap the venv install mechanics\n* declare PROJECT_VENV array to track where project venvs should be installed\n* create a venv for each project defined in PROJECT_VENV in stack_install_service()\n\nChange-Id: I508588c0e2541b976dd94569d44b61dd2c35c01c\n"
    },
    {
      "commit": "a6de7e962c3293d3a5e5e6ef1ead97c0ea0067f0",
      "tree": "a7d111dfc7fac8a937119e983bbbe2f64d3e6115",
      "parents": [
        "2e9d32baf274fc0bd7edc5fd3b9df3f3fa01e2bd",
        "2b564763aafe6466f42bc5cf2ccc47ddf4169986"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Feb 18 20:59:20 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Feb 18 20:59:20 2015 +0000"
      },
      "message": "Merge \"Teach pip_install() about virtual envs\""
    },
    {
      "commit": "d5ac7852473a8a34ae097c33ed173d640db80379",
      "tree": "a149e49e3aa77709ba7dfbb0fa9a67e960b224c5",
      "parents": [
        "d26da45b98a75b9d61d0a33d216ca15543a7faf2"
      ],
      "author": {
        "name": "Joe Gordon",
        "email": "joe.gordon0@gmail.com",
        "time": "Fri Feb 06 19:29:23 2015 -0800"
      },
      "committer": {
        "name": "Joe Gordon",
        "email": "joe.gordon0@gmail.com",
        "time": "Tue Feb 17 11:48:06 2015 -0800"
      },
      "message": "Add new function get_from_global_requirements\n\nInstead of specifying the version of a library in devstack, use the version from\nglobal-requirements\n\nAdd new function get_from_global_requirements and use it\nwhere it makes sense.\n\nChange-Id: I6b2f062761ac05ef72fc6cc9993bc204faf06fa5\n"
    },
    {
      "commit": "2b564763aafe6466f42bc5cf2ccc47ddf4169986",
      "tree": "134ea203d74a8de02afa9bb7957685df54b24a42",
      "parents": [
        "2a811912c6e8a2f85d4a9ef03694cd29cb5fd1cd"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Feb 11 17:01:02 2015 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Feb 12 12:19:20 2015 -0600"
      },
      "message": "Teach pip_install() about virtual envs\n\nSet PIP_VIRTUAL_ENV to install the package(s) into an existing virtual\nenvironment.  This works by simply using the pip command already\nin the venv, and not using sudo.\n\nChange-Id: I910e1752e58a666174f83b4f97e547851e66e655\n"
    },
    {
      "commit": "490430dbe3b7d9979b4623f2c327bb0a74436401",
      "tree": "527289f426c49bb51234a1e0621a0afe1ffac20e",
      "parents": [
        "a1b82cc1b5a7172c3fdf17d2c3f0725660911ad7"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Jan 30 14:38:35 2015 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Jan 30 14:59:48 2015 -0600"
      },
      "message": "Split functions-common: python functions\n\nMove Python-related functions into inc/python\n\nShould be transparent to all callers as it is sourced from functions-common\n\nChange-Id: I88043830cef9211b4e0baa91bfcc7a92125afa9f\n"
    }
  ]
}
