)]}'
{
  "log": [
    {
      "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": "b8e250232ec55b946d2fd7e4237f12632408bdcc",
      "tree": "0f5001c7caeb6c2f4fddb552c8b4aa84a85d69aa",
      "parents": [
        "b17fecf7d8c1a0c562ac7d8fc3a8d642f6392ac6"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Feb 21 16:14:29 2014 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Feb 26 09:31:15 2014 +1100"
      },
      "message": "Add end-of-file checks to bash8\n\nAdd two end-of-file checks to bash8.  Firstly, alert if heredoc hasn\u0027t\nfinished.  Some heredocs were done like:\n\n---\nsudo bash -c \"cat \u003c\u003cEOF \u003e foo\n...\nEOF\"\n---\n\n(A better way to do this is \"cat \u003c\u003cEOF | sudo tee ...\" as it retains\nthe usual heredoc layout in the code).\n\nThe trailing quote was throwing the matching in bash8 off and it kept\nappending the next file as if it was still part of the heredoc.  To\navoid this, we check if we\u0027re still in a heredoc when we start a new\nfile; if so raise an error and reset the heredoc status fresh.  We\ntrack the state of the previous file, line and lineno so we can give a\ngood error.\n\n---\nE012: heredoc did not end before EOF: \u0027cat \u003c\u003cEOF\u0027\n - lib/trove: L221\n---\n\nThis includes fixes for the existing problem heredocs.\n\nA similar EOF check is to ensure the previous file ended with a\nnewline.\n\n---\nE004: file did not end with a newline: \u0027$MY_XTRACE\u0027\n - lib/neutron_plugins/embrane: L40\n---\n\nThis requires only one fix\n\nChange-Id: I5e547d87b3921fc7ce6588c28f074e5c9f489c1f\n"
    },
    {
      "commit": "b93ee25b64de5d587c2e0889a9ce689c92aaa0f9",
      "tree": "0912d6ed212e22b0dbce87e9cc521d41f4fd06c5",
      "parents": [
        "d7e38ebd057219fdf55e69b63c9b929e629b8e74"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Sun Feb 23 20:41:07 2014 -0500"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Sun Feb 23 20:41:07 2014 -0500"
      },
      "message": "make bash8 take a -v flag\n\nthis ensures that we actually know we are processing all the files\nwe believe we are.\n\nChange-Id: I8e99b5f9dc987c946586475f374f7040ca63a478\n"
    },
    {
      "commit": "86a8e9767912ae957cbbf6ea20a08106011a7728",
      "tree": "77530bbe5b02c94c8e5aac0f9cf77dd86b087e1f",
      "parents": [
        "16dd8b3ed94d5cd217d22a26c18dca52bfca115e"
      ],
      "author": {
        "name": "Chmouel Boudjnah",
        "email": "chmouel@enovance.com",
        "time": "Tue Feb 04 15:20:15 2014 +0100"
      },
      "committer": {
        "name": "Chmouel Boudjnah",
        "email": "chmouel@enovance.com",
        "time": "Wed Feb 05 07:52:54 2014 +0100"
      },
      "message": "Add while/until to the for/do rule\n\nLike \u0027for/do\u0027 check that the while/until operator are on\nthe same line with the do.\n\nFixes some pep8 error along the way.\n\nChange-Id: I440afe60691263365bf35310bf4212d94f30c339\n"
    },
    {
      "commit": "16dd8b3ed94d5cd217d22a26c18dca52bfca115e",
      "tree": "62994b309b39fc5d4920808f506e763feb3b6f07",
      "parents": [
        "e38cad092ff96dc0178a19fe6f33f13db99eebb0"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Mon Feb 03 09:10:54 2014 +0900"
      },
      "committer": {
        "name": "Chmouel Boudjnah",
        "email": "chmouel@enovance.com",
        "time": "Wed Feb 05 07:52:54 2014 +0100"
      },
      "message": "introduce if/then \u0026 for/do rules\n\nwe mostly have a consistent style on if/then \u0026 for/do in devstack,\nexcept when we don\u0027t. This attempts to build a set of rules to\nenforce this.\n\nBecause there are times when lines are legitimately long, and there\nis a continuation, this starts off ignoring if and for loops with\ncontinuations. But for short versions, we should enforce this.\n\nChanges to make devstack pass are included. The fact that the\ncleanup patch was so small is pretty solid reason that this is\nactually the style we\u0027ve all agreed to.\n\nPart of a git stash from hong kong that I finally cleaned up.\n\nChange-Id: I6376d7afd59cc5ebba9ed69e5ee784a3d5934a10\n"
    },
    {
      "commit": "0656e12d6819f6dee671dd6200b2d0895e716c2c",
      "tree": "33861ca96d895d03b8093648ed2f32e5abc1785f",
      "parents": [
        "daa0ce2f052eeeae2ee0b2dc1265279e4528f880"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Mon Feb 03 08:49:30 2014 +0900"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean.dague@samsung.com",
        "time": "Tue Feb 04 05:32:04 2014 +0900"
      },
      "message": "add ability to ignore rules in bash8\n\nChange-Id: Ia6472f4bb251bf3e9846e08e30b2f9ea30ea1c03\n"
    },
    {
      "commit": "02d7fe13bb714c3c8c28fbe16ecbeac472a80094",
      "tree": "0d8d4228acc6602db1f01cb7ae477de38b08d4d0",
      "parents": [
        "b83c365cf540261c9455a41f4f96aa3c0695fa9c"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sdague@linux.vnet.ibm.com",
        "time": "Tue Oct 22 11:31:21 2013 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sdague@linux.vnet.ibm.com",
        "time": "Tue Oct 22 13:05:48 2013 -0400"
      },
      "message": "add support for heredoc folding of lines\n\nthis change in the parser allows for us to have heredocs folded\ninto logical lines.\n\nChange-Id: I51ebe6cd7b89b5f7194e947896f20b6750e972e3\n"
    },
    {
      "commit": "4fb255cf41d367cd8cc16a0e2d090f1c0733aa84",
      "tree": "10029a36bd27074d5987c4fa6c5780f113091c15",
      "parents": [
        "67f7da2de299f4f9ab58718aafce336012035cd8"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sdague@linux.vnet.ibm.com",
        "time": "Mon Oct 14 14:07:00 2013 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sdague@linux.vnet.ibm.com",
        "time": "Mon Oct 14 16:18:39 2013 -0400"
      },
      "message": "add bash8 tool (like pep8, but way hackier)\n\nunlike our python code, we have no automatic style checking for\nbash. For the most part, it\u0027s not a big deal, but errant whitespace\nor incorrect indenting is sometimes annoying to have to -1 people\u0027s\npatches for. Instead of constantly picking it up in manual review\nmaybe we can do better.\n\nThis is an uber hacky script which could be used to do just that.\n\n   ./tools/bash8.py file1 file2 file3 ...\n\nAnd it will show issues found with the files at hand. Lightly\ntested in the existing devstack tree, it exposes a few issues that\nwe might want to think about.\n\nThis should be python 3 compatible, and includes argparse to provide\na basic \u0027-h\u0027 support to explain how the command should be run.\n\nChange-Id: I5009fa5852595c2953a548e430e5e1ce06ae94e0\n"
    }
  ]
}
