)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "fa3e8412864a92715c296c6ed5e3828dd4bb2205",
      "tree": "5c7c78afbd70df860a8fd6d8b07b62e7e2ba8846",
      "parents": [
        "9b64bbf06eab19534e58a1b7af1757e427e6b3b6"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Apr 17 11:53:40 2015 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Apr 17 13:23:25 2015 +1000"
      },
      "message": "Create config file in merge_config_file\n\nChange If132a94e53545d9134859aa508da7b9819ede2f8 introduced a small\nregression; it added an \"inidelete\" which looks in the config file to\ndelete rows.\n\nHowever, at least for the test-case, the config file isn\u0027t created\nyet.  The end result is that the test fails but we don\u0027t notice.\n\n 2015-04-17 00:55:03.169 | merge_config_file test-multiline: sed: can\u0027t read test-multiline.conf: No such file or directory\n 2015-04-17 00:55:03.195 | OK\n\nSo fix this up by creating the config-file if it isn\u0027t there.\n\nAlso, add \"-e\" to the test file so we catch things like this in the\nfuture.\n\nChange-Id: I43a4ecc247f19cccf51d5931dfb687adbd23d6b1\n"
    },
    {
      "commit": "bf2ad7015d068f9a85c01813cea0aa79143b1d0f",
      "tree": "ab1a91e8e13a882ee4dab1a70141c31133a5815b",
      "parents": [
        "924079b8905669a646cfa328d6bf52e56b79acdc"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Mar 09 15:16:10 2015 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Mar 09 22:52:19 2015 -0500"
      },
      "message": "Move configuration functions into inc/*\n\n* config/INI functions from functions-common to to inc/ini-config\n* local.conf meta-config functions from lib/config to inc/meta-config\n\nChange-Id: I00fab724075a693529273878875cfd292d00b18a\n"
    },
    {
      "commit": "1f65fd64ce2f4ed32a706f9bcb28c2ee0cf51e5b",
      "tree": "17da92dbb44093a59992333a3351cb5850983386",
      "parents": [
        "bfdddebc28e088ce9449feac8740901b82cc1c9b"
      ],
      "author": {
        "name": "Doug Wiegley",
        "email": "dougw@a10networks.com",
        "time": "Sat Dec 13 11:56:16 2014 -0700"
      },
      "committer": {
        "name": "Doug Wiegley",
        "email": "dougw@a10networks.com",
        "time": "Sun Dec 14 20:50:00 2014 -0700"
      },
      "message": "Clear multi-line sections before adding lines\n\nWith multiline support for local.conf, the first line is created with\niniset, which will set *all* previous lines to the same thing, and then\nsubsequent lines will be added. Modify the multiline support to first\nclear existing lines from the section.\n\nThis causes fatal errors with neutron.conf, which defines drivers with a bunch\nof service_provider\u003d options, and the current code ends up with the first\ndriver defined in local.conf being present twice.\n\nChange-Id: If132a94e53545d9134859aa508da7b9819ede2f8\n"
    },
    {
      "commit": "e263c82e48a431e502bd6baceb6dfcfdc1750cbb",
      "tree": "5ca592e668dedb4debc6c7170f3abf37cc4bc0c6",
      "parents": [
        "2f8e08b5728f4272b415b1c0aab8ff62eae29b06"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Fri Dec 05 14:25:28 2014 -0500"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Dec 10 11:28:05 2014 -0500"
      },
      "message": "add shebang lines to all lib files\n\nWith gerrit 2.8, and the new change screen, this will trigger syntax\nhighlighting in gerrit. Thus making reviewing code a lot nicer.\n\nChange-Id: Id238748417ffab53e02d59413dba66f61e724383\n"
    },
    {
      "commit": "f3bf8b6cc0dc94684a3bbecc4cc1e2169506f804",
      "tree": "2bbc4cc3bbeef0641dfd7aeaff81e3c770d547e3",
      "parents": [
        "6fe32059de58964c8f089977539262f288df4601"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 29 21:53:56 2014 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 29 22:12:17 2014 +1100"
      },
      "message": "Revert \"Single quote iniset argument in merge_config_file\"\n\nThis reverts commit e2c9fee8ed846aba124a2fc1bba245790ed7ba90.\n\nWe have decided that we don\u0027t want to support the json-style argument\nas described by bug#1374118 (see thread at [1]).\n\nThis restores the old behavior of sending the argument in\ndouble-quotes so environment variables get expanded.  As a bonus,\ntests for this are added.\n\n[1] http://lists.openstack.org/pipermail/openstack-dev/2014-October/049341.html\n\nChange-Id: I9fc99f3716cc53366907878adb00ae6cf3898f14\nCloses-Bug:#1386413\n"
    },
    {
      "commit": "751ad1aadf8447c2b6945b6ae4ab73bf71a244ca",
      "tree": "dd29652859f3a425f8a7f2853149c157d743f6f4",
      "parents": [
        "ddfbacef9fd0bd64b38674524f7829b42ed08bbd"
      ],
      "author": {
        "name": "Robert Li",
        "email": "baoli@cisco.com",
        "time": "Wed Oct 15 21:40:53 2014 -0400"
      },
      "committer": {
        "name": "Robert Li",
        "email": "baoli@cisco.com",
        "time": "Wed Oct 15 21:44:31 2014 -0400"
      },
      "message": "Allow multi-line config items in meta-section of local.conf\n\nIt would behave such as the contents from each meta-section in\nlocal.conf is copied to the destination files. One exception is the multiline\noptions not grouped together. In that case, the contents will be grouped\ntogether in its destination config file.\n\nCheck tests/test_config.sh for examples.\n\nThis was originally committed in https://review.openstack.org/128805.\nBut the original change used AWK syntax that is not supported in AWK\n3.1.8, and caused syntax error on servers with that AWK version. This\npatch makes the necessary change so that it\u0027s compatible with AWK\n3.1.8.\n\nChange-Id: Id1e1fe01f05bd0f19ea6e89c4f4c0f8be695dfce\nPartial-Bug: #1374118\n"
    },
    {
      "commit": "a7eb07a3e22eb0362b28cec4bd289201a9adf699",
      "tree": "f71ea7688ba146a393e4e17acfecf2592a486cef",
      "parents": [
        "e9c70ab4097cd8d1991a893811dbd862ee001f10"
      ],
      "author": {
        "name": "Kevin Benton",
        "email": "blak111@gmail.com",
        "time": "Tue Oct 14 04:35:59 2014 -0700"
      },
      "committer": {
        "name": "Kevin Benton",
        "email": "blak111@gmail.com",
        "time": "Tue Oct 14 04:38:56 2014 -0700"
      },
      "message": "Revert \"Allow multi-line config items in meta-section of local.conf\"\n\nThis reverts commit 6ff21acf4c4d4ef08bbef419ba582cade4da8da7.\n\nThis commit has broken config options with colons in them.\nThe following is a sample configuration that no longer works:\n\n[[post-config|/etc/neutron/plugins/ml2/ml2_conf.ini]]\n[restproxy]\nserver_ssl\u003dFalse\nservers\u003d10.211.1.9:80\nserver_ssl\u003dFalse\n\nWith the above config and the code present that this reverts,\nthe \u0027servers\u0027 option will come out blank.\n\nChange-Id: I328852d2d941605051a1bf5eaf0f7674191f8c48\n"
    },
    {
      "commit": "6ff21acf4c4d4ef08bbef419ba582cade4da8da7",
      "tree": "b5acb9e70c03cb15be733339b742f3bf9d10ae87",
      "parents": [
        "cc87c2871dc436b2134f60e9fa4663723a094ebd"
      ],
      "author": {
        "name": "Robert Li",
        "email": "baoli@cisco.com",
        "time": "Fri Oct 10 12:43:05 2014 -0400"
      },
      "committer": {
        "name": "Robert Li",
        "email": "baoli@cisco.com",
        "time": "Fri Oct 10 12:53:24 2014 -0400"
      },
      "message": "Allow multi-line config items in meta-section of local.conf\n\nIt would behave such as the contents from each meta-section in\nlocal.conf is copied to the destination files. One exception is the multiline\noptions not grouped together. In that case, the contents will be grouped\ntogether in its destination config file.\n\nCheck tests/test_config.sh for examples.\n\nChange-Id: I8c046b558eeb98ed221f6f1a59182d4179956ced\nPartial-Bug: #1374118\n"
    },
    {
      "commit": "cc87c2871dc436b2134f60e9fa4663723a094ebd",
      "tree": "253024468ea6f45620386034ba09b0fa654043ee",
      "parents": [
        "284492cc1194bb2f156f860d35b5a1a46ac5b179"
      ],
      "author": {
        "name": "Fergal Mc Carthy",
        "email": "fergal.mccarthy@hp.com",
        "time": "Thu Oct 09 16:16:42 2014 -0400"
      },
      "committer": {
        "name": "Robert Li",
        "email": "baoli@cisco.com",
        "time": "Fri Oct 10 08:25:38 2014 -0400"
      },
      "message": "local.conf processing doesn\u0027t handle \u0027\u003d\u0027 in values\n\nWhen attempting to add a libvirt section with a volume_drivers entry\nto $NOVA_CONF, via a post-config block in the local.conf file, I\nencountered problems; the value for this attribute takes the form\n\n    driver\u003dpython.import.path.to.driver\n\nbut the value actually populated in the $NOVA_CONF was truncated at the\nequals.\n\nTaking the iscsi driver setting specified in the official nova.conf\ndocumentation as an example, if I have the following in my local.conf\nfile:\n\n[[post-config|$NOVA_CONF]]\n[libvirt]\nvolume_drivers \u003d iscsi\u003dnova.virt.libvirt.volume.LibvirtISCSIVolumeDriver\n\nI will see that the generated $NOVA_CONF has the following:\n\n[libvirt]\nvolume_driver \u003d iscsi\n\nThis occurs because the existing handling for a post-config setion, as\nimplemented in merge_config_file(), splits the line on the equals sign,\nand then uses the first and seconds elements of the resulting array as\nattribute name and value respectively.\n\nHowever when an equals occurs as part of the value this results in the\nvalue being truncated at the first equals in the value.\n\nThe fix I\u0027ve implemented, based upon review feedback, extracts the\ncontents of $0 before the first equals as the attr name, and extracts\nthe remainder after the equals as the value. Then it strips the leading\nand trailing whitespaces from both as appropriate.\n\nI\u0027ve also added test5 to tests/test_config.sh to test for, and verify,\ncorrect operation when this scenario is encountered.  Similarly I\u0027ve\nadded test6 to ensure that trailing spaces in values are stripped\ncorrectly.\n\nChange-Id: Id0cb1e6e1cece21bc5dbf427c4d756af86fbd927\nCloses-Bug: #1374482\n"
    },
    {
      "commit": "e2c9fee8ed846aba124a2fc1bba245790ed7ba90",
      "tree": "589865dd5959c3e0f9645dd1282c2a6dd4ee93d3",
      "parents": [
        "690e3c25742f47fd2a42d6407ffa30bc99288dc0"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Sep 26 09:42:11 2014 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Oct 07 12:16:00 2014 +1100"
      },
      "message": "Single quote iniset argument in merge_config_file\n\nIf we don\u0027t single quote the extracted argument to iniset we drop any\nquotes from the source.  Add a simple test-case for this.\n\nPartial-bug: #1374118\n\nChange-Id: If2f47b64b11015e727a011c7e5f6e8ad378b90eb\n"
    },
    {
      "commit": "b1e3d0f222da5e3edd68dd92020962beb1155e1e",
      "tree": "e44c9c6e84e8baf3459040264e85e889f3afcdf5",
      "parents": [
        "b939caea45e2b43f36a831837821ad466451f7ed"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Jul 25 14:57:54 2014 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Tue Aug 19 19:14:04 2014 -0500"
      },
      "message": "Clean up local variable usage - Remainder\n\nMinor cleanups in a couple ofplaces:\n* Config funtions\n* Stackforge\n* TLS\n\nCombined a couple of smaller changesets that are loosly related\n\nChange-Id: Ifa16f2e4c0eca0ef3401c0dfdc4f3d91809021a5\n"
    },
    {
      "commit": "410f5c0016a9d3b1fbd42b95ce1402a1c614e3d3",
      "tree": "51b01c296832b71b71aac47f6ef3969d57163ab9",
      "parents": [
        "4fbb8137af8c3e0e5805db7337651048f11b6bb2"
      ],
      "author": {
        "name": "Ryota MIBU",
        "email": "r-mibu@cq.jp.nec.com",
        "time": "Fri Apr 04 02:00:31 2014 +0900"
      },
      "committer": {
        "name": "Ryota MIBU",
        "email": "r-mibu@cq.jp.nec.com",
        "time": "Tue Jun 17 15:43:07 2014 +0900"
      },
      "message": "Fix unsubstituted filename creation\n\nSince merge_config_file() tries to create an unsubstituted config file,\nstack.sh fails due to permission denied in the file creation when you\nuse \u0027[[post-config|/$Q_PLUGIN_CONF_FILE]]\u0027 and the file does not exist.\n\nThis patch deletes unnecessary \u0027touch\u0027 command, because the file will\nbe made by \u0027iniset\u0027 function in the next command line with evaled\nstring from \u0027configfile\u0027.\n\nThis patch also fixes merge_config_group() to use evaled \u0027configfile\u0027\nwhen it checks the directory of the config file exists.\n\nChange-Id: I608847a34143b5c6a1708c180186dd88a32dd44b\nCloses-bug: #1294213\n"
    },
    {
      "commit": "aee18c749b0e3a1a3a6907a33db76ae83b8d41d9",
      "tree": "01a8ab5abb9867986f3e848918abd9e749b691cd",
      "parents": [
        "0ed4af02da0bd4a0f757dd8c2156913e6c7a724c"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Feb 21 15:35:08 2014 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Feb 28 07:59:03 2014 +1100"
      },
      "message": "Enforce function declaration format in bash8\n\nCheck that function calls look like ^function foo {$ in bash8, and fix\nall existing failures of that check.  Add a note to HACKING.rst\n\nChange-Id: Ic19eecb39e0b20273d1bcd551a42fe400d54e938\n"
    },
    {
      "commit": "bff001456cc5a804f752722d1c406bbb880dd542",
      "tree": "4c79cb3be96203c7c6bd1dabfbe8587e7feade67",
      "parents": [
        "03af3f180251e19eff2cdab317e3019d8af75e58"
      ],
      "author": {
        "name": "Isaku Yamahata",
        "email": "isaku.yamahata@intel.com",
        "time": "Fri Dec 20 11:55:08 2013 +0900"
      },
      "committer": {
        "name": "Isaku Yamahata",
        "email": "isaku.yamahata@intel.com",
        "time": "Fri Dec 20 12:02:39 2013 +0900"
      },
      "message": "config: get_meta_section() misunderstands the beginning of metasection\n\nFor example, the line, \"if [[ -n $no_proxy ]]; then\" is misparsed\nas the beginning of metasection because get_meta_section() misses\nescaping of \"|\" unlike get_meta_section_files().\nThis patch adds necessary escape as \"|\" -\u003e \"\\|\".\n\nChange-Id: Ic14b2ac167037c4f5db89492f0e8a4c5b13c7b6d\nCloses-Bug: #1262960\n"
    },
    {
      "commit": "2ac8b3f3c2ebe586802d7789cf152b13fe0d0497",
      "tree": "118837bd091932efab16e3fd59ec1e5f1824c6f9",
      "parents": [
        "df8410c387034bec1b82c8f9d9fd949967f7080b"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Dec 04 17:20:28 2013 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Dec 09 10:30:02 2013 -0600"
      },
      "message": "Fix a couple of INI whitespace bugs\n\n* iniset() bails if no section or option (attribute) is supplied\n* merge_config_file() properly skips lines with only whitespace\n\n* Also split the ini-tests into their own script\n\nBug 1257954\n\nChange-Id: Ie31c5bd0df8dfed129fbcf1e37228aaf25e9305d\n"
    },
    {
      "commit": "537d4025c511d9b162726bb5c972da72028573ed",
      "tree": "f5e9e3e9d545225b41ca4678b834aab01f12618a",
      "parents": [
        "8d3beb673cee45db73617f84b92df7b588db0411"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sdague@linux.vnet.ibm.com",
        "time": "Tue Oct 22 07:43:22 2013 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sdague@linux.vnet.ibm.com",
        "time": "Tue Oct 22 12:59:22 2013 -0400"
      },
      "message": "whitespace cleanup on functions \u0026 lib/config\n\nfix some of the bash8 issues found in functions and lib/config,\npart of the long march towards fixing all the bash8 issues.\n\nChange-Id: Ia131f64870acb0f9d196fe1a9a45d633abb6fc4d\n"
    },
    {
      "commit": "893e66360caf3bcf0578d4541b3c17d089c33b02",
      "tree": "c91bd45ede20b9739c5dd39bec08d8ee32937af5",
      "parents": [
        "7ab1f22c606ae55883ac47298c810062965a1527"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Sep 13 15:05:51 2013 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Oct 11 11:41:58 2013 -0500"
      },
      "message": "Add meta-config via local.conf\n\nThis defines a new local.conf file that is designed to take the place of all\nof the \u0027pass-through\u0027[1] configuration options that have been defined in DevStack.\n\n* new local.conf file can contain multiple config file settings to be\n  merged in to existing project config files\n* localrc can be embedded into local.conf and will auto-extract if\n  localrc does not exist\n* Adds functions get_meta_section(), get_meta_section_files(),\n  merge_config_file() and merge_config_group()\n* Adds EXTRA_OPTS, EXTRA_BAREMETAL_OPTS, Q_DHCP_EXTRA_DEFAULT_OPTS and\n  Q_SRV_EXTRA_DEFAULT_OPTS to the deprecated warning list at the end of stack.sh\n\n[1] Pass-through options are those that do not configure or change DevStack\u0027s behaviour\nbut simply set a value in a project config file.  This includes most of the EXTRA_XXX_OPTS\nconfiguration variables.\n\nChange-Id: I367cadc86116621e9574ac203aafdab483d810d3\n"
    }
  ]
}
