)]}'
{
  "log": [
    {
      "commit": "588eb4129d34ea58fd40438eb1c6edd1a9f9a2d0",
      "tree": "b040aef13d23173489fecfcc0704a1212eae75e7",
      "parents": [
        "701718a844a5efc9932cd28870057ac779a49e92"
      ],
      "author": {
        "name": "Attila Fazekas",
        "email": "afazekas@redhat.com",
        "time": "Thu Dec 20 10:57:16 2012 +0100"
      },
      "committer": {
        "name": "Attila Fazekas",
        "email": "afazekas@redhat.com",
        "time": "Thu Dec 20 11:00:42 2012 +0100"
      },
      "message": "Fix iniset and his friends\n\n* In python the white spaces are part of the section name\n* Handle options with empty value\n* Support paths with white spaces\n\nChange-Id: I69a584608853cfdb8b7dce1e24d929216ef2fc41\n"
    },
    {
      "commit": "00011c0847a9972b78051954e272f54e9d07ef51",
      "tree": "d700284b823a9464196dd59f96b2f45dba4a20ec",
      "parents": [
        "e5f8d1228a139ae13da5f2fbdfd09b3b43fd52fd"
      ],
      "author": {
        "name": "Vincent Untz",
        "email": "vuntz@suse.com",
        "time": "Thu Dec 06 09:56:32 2012 +0100"
      },
      "committer": {
        "name": "Vincent Untz",
        "email": "vuntz@suse.com",
        "time": "Fri Dec 07 09:06:07 2012 +0100"
      },
      "message": "Add is_fedora and exit_distro_not_supported functions\n\nBetween is_fedora, is_ubuntu and is_suse, we can make the code a bit\nsimpler to read. We also use exit_distro_not_supported to identify\nplaces where we need implementation details for new distros.\n\nAs \"/sbin/service --skip-redirect\" is Fedora-specific, guard this with a\nis_fedora test too.\n\nChange-Id: Ic77c0697ed9be0dbb5df8e73da93463e76025f0c\n"
    },
    {
      "commit": "e83356217b48308b3a4dc975940c79a22e159238",
      "tree": "e3f2becea6bcd4acf1d3b1f7e8ea5043e6d022e3",
      "parents": [
        "140b58ba1938090174a4e2733792e12da4c155e0"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Tue Nov 27 17:00:11 2012 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Tue Nov 27 17:00:16 2012 -0600"
      },
      "message": "Fix ini functions to handle spaces in section names\n\nThis allows section names to look like:\n\n[ default ]\n\nOpenSSL is the primary offender for this usage.\n\nChange-Id: If5c711107e73cebab9d4a26ca02a7ce572224377\n"
    },
    {
      "commit": "71ebc6ff65e6ae3982a7e8a7ecf9ff80fd18d6bb",
      "tree": "67c928b32f58d7eaef0d1c75a32790c3dc33100d",
      "parents": [
        "c132625d1dcdc4d8ea824c0efb2b7428ab07341f"
      ],
      "author": {
        "name": "Vincent Untz",
        "email": "vuntz@suse.com",
        "time": "Tue Jun 12 13:45:15 2012 +0200"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Sun Sep 09 17:40:19 2012 -0500"
      },
      "message": "Add is_package_installed function to know if a package is installed\n\nThis helps reduce the distro-dependent code in stack.sh, and also fixes\nthe bug where \"rpm -qa | grep sudo\" will work if gnome-sudoku is\ninstalled.\n\nRebased\n\nChange-Id: Ib1330b29b915b41d9724197edd791f0d4e0fe373\n"
    },
    {
      "commit": "f04178fd12731a58c899c309ad43f55d339909c5",
      "tree": "0183e5361383370cd5b0c104ece6b45731379f50",
      "parents": [
        "08bc3048b10b7dbe62b38109274b0cd32a460de9"
      ],
      "author": {
        "name": "Doug Hellmann",
        "email": "doug.hellmann@dreamhost.com",
        "time": "Thu Jul 05 17:10:03 2012 -0400"
      },
      "committer": {
        "name": "Doug Hellmann",
        "email": "doug.hellmann@dreamhost.com",
        "time": "Fri Jul 06 15:52:06 2012 -0400"
      },
      "message": "add functions to manipulate ENABLED_SERVICES\n\nEditing ENABLED_SERVICES directly can get tricky when\nthe user wants to disable something. This patch includes\ntwo new functions for adding or removing services\nsafely, and a third (for completeness) to clear the\nsettings entirely before adding a minimal set of\nservices.\n\nIt also moves the logic for dealing with \"negated\"\nservices into a function so it can be tested and\napplied by the new functions for manipulating\nENABLED_SERVICES.\n\nChange-Id: I88f205f3666b86e6f0b6a94e0ec32a26c4bc6873\nSigned-off-by: Doug Hellmann \u003cdoug.hellmann@dreamhost.com\u003e\n"
    },
    {
      "commit": "bf3923174e40b7931963bcba455d837e0ec864e3",
      "tree": "7a7ceef651ae7a152e598e4921f7b6dc03cba952",
      "parents": [
        "ef352b51c5b8840c70c396196d3a9c155a40fd02"
      ],
      "author": {
        "name": "Vincent Untz",
        "email": "vuntz@suse.com",
        "time": "Wed Jun 13 11:26:31 2012 +0200"
      },
      "committer": {
        "name": "Vincent Untz",
        "email": "vuntz@suse.com",
        "time": "Thu Jun 14 15:52:44 2012 +0200"
      },
      "message": "Remove test.ini when done with it during tests\n\nThe file is created in the tests, and so should also be removed.\n\nChange-Id: I8c087cc5cc71ac80b7c4974e2a69a747a929bedf\n"
    },
    {
      "commit": "09e636e435ed15302e3960affef0a450fa7accf6",
      "tree": "27416092e0e4e26238ee076b6fdef4c283e41374",
      "parents": [
        "e474403d5e950bc275916e752075ed0976c62128"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Mar 19 16:31:12 2012 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Apr 05 18:10:13 2012 -0500"
      },
      "message": "B) Use keystone config files from source; move to /etc/keystone\n\n* Put all config files in /etc/keystone\n* keystone.conf rewritten\n* logging.conf.sample rewritten to logging.conf\n* default_catalog.templates copied from devstack/files\n* iniset() now properly adds options that do not previously exist\n\nFixed to re-configure the catalog templated backend; sql is the\ndefault in trunk now but DevStack needs a bit more work before\nit can use it.\n\nChange-Id: Ic7060ef897e47495cd08ca3786e49fdebadf6723\n"
    },
    {
      "commit": "13dc5ccd13a636dcde03324ef7586728caa59db2",
      "tree": "79cd8122870a48a5d1a16c0baed521fe815c1043",
      "parents": [
        "60df29a234a03bb6b94c030c1661dbc8d1421156"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Tue Mar 27 14:50:45 2012 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Mar 29 20:35:04 2012 -0500"
      },
      "message": "A) Add/move functions to \u0027functions\u0027 file\n\nAdd ini*() and tests\nAdd GetOSVersion()\nAdd install_package(), yum_install()\nAdd *_service()\n\nRebased\n\nChange-Id: I570dba5ed4d2b988cdd1771cf6bed0aaf8e0fe27\n"
    },
    {
      "commit": "27e326995aaddf9e34cdf54a56f0ed02fc04bfcc",
      "tree": "9abba1609d309b887f2960db9c00c92fb2f7bc0a",
      "parents": [
        "09407d90a841c05d83f82b588af0769161326a4d"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Mar 16 16:16:56 2012 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Mar 19 10:06:15 2012 -0500"
      },
      "message": "Simplify die_if_error\n\n* Replace die_if_error() with the simpler die()\n* Attempt to clean up unnecessary trace output\n* Formatting cleanups on all exercise scripts\n\nChange-Id: I72a542b3a59ee9bf12bee6bcc605edd7579205e0\n"
    },
    {
      "commit": "489bd2a62b5949665bc7c4a05a52d27a987e0489",
      "tree": "baed5bdd9d9f3bdba8d1325125f61f7a72ddc56a",
      "parents": [
        "4807df8e5bc0e5e78536ecea37a0ca7621720524"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Mar 02 10:44:29 2012 -0600"
      },
      "committer": {
        "name": "Jesse Andrews",
        "email": "anotherjesse@gmail.com",
        "time": "Fri Mar 02 17:55:37 2012 -0800"
      },
      "message": "Improve exercise robustness\n\n* Test returns and exit codes on most command invocations\n* Add start and end banners to make output easier to find in\n  long log files\n* Adds die_if_error(), die_if_not_set() and is_set() to functions\n* Add some function tests\n\nFixes bug 944593\n\nChange-Id: I55e2962c5fec9aad237b674732b1e922ad37a62e\n"
    }
  ]
}
