)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
