)]}'
{
  "commit": "a6023ac0d7ff0c617286e4c423ce0e22e25d2516",
  "tree": "26e79bc15d2e19c6e5217af698e7b4b16796e1ba",
  "parents": [
    "822d83a1429ce4a21cdb4a25404ebc8fbc5b5518"
  ],
  "author": {
    "name": "Alexander Dupuy",
    "email": "alex.dupuy@mac.com",
    "time": "Sun May 10 10:00:54 2015 +0200"
  },
  "committer": {
    "name": "Alexander Dupuy",
    "email": "alex.dupuy@mac.com",
    "time": "Mon May 11 08:52:32 2015 +0200"
  },
  "message": "Implement Markdown trailing space line break preservation\n\nMarkdown uses two or more trailing spaces on a line to indicate a forced\nline break `\u003cbr/\u003e` - these will be preserved for files with a markdown\nextension (default \u003d `.md` or `.markdown`).\n\nAdd `--markdown-linebreak-ext\u003dX,Y` to add extensions (`*` matches any),\nand `--no-markdown-linebreak-ext` to disable this feature.\n\nIf you want to set specific extension `foo` only (and not md/markdown),\nuse `--no-markdown-linebreak-ext --markdown-linebreak-ext\u003dfoo`\n\nTries to prevent --markdown-linebreak-ext from eating filenames as if they were\nextensions by rejecting any with \u0027.\u0027 or \u0027/\u0027 (or even Windows-style \u0027\\\u0027 or \u0027:\u0027)\n\nUpdate README.md to include information on these arguments as well as\narguments added to other hooks\n\nAdd extensive tests using pytest.mark.parametrize\n\ntest that `txt` file is not considered as \u0027txt\u0027 extension\ntest that `.txt` file is not considered as \u0027txt\u0027 extension\n\nThe latter is the (correct) behavior of os.path.splitext(), and an example\nof why it is better to use the libraries than to mangle strings yourself.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b4c7ee8f1540fd355642f912bc90e112233a6340",
      "old_mode": 33188,
      "old_path": "README.md",
      "new_id": "7a919e671eec40f696dddde67e3938f5eaea10e1",
      "new_mode": 33188,
      "new_path": "README.md"
    },
    {
      "type": "modify",
      "old_id": "98dfedac7585e78e5f619d117494b75727e664cd",
      "old_mode": 33188,
      "old_path": "pre_commit_hooks/detect_private_key.py",
      "new_id": "215ad56ae70ed3fa985825658e81b0d5c4771065",
      "new_mode": 33188,
      "new_path": "pre_commit_hooks/detect_private_key.py"
    },
    {
      "type": "modify",
      "old_id": "0642ac02ba956b027d31545bf9baf8f517b6572e",
      "old_mode": 33188,
      "old_path": "pre_commit_hooks/trailing_whitespace_fixer.py",
      "new_id": "c159071908d842942ea09860da4c5dc02deed47a",
      "new_mode": 33188,
      "new_path": "pre_commit_hooks/trailing_whitespace_fixer.py"
    },
    {
      "type": "modify",
      "old_id": "bbd11ba1953ae8a51c59ef5092423597d4f34d7f",
      "old_mode": 33188,
      "old_path": "pylintrc",
      "new_id": "c905a371a864369bcde4b3402e03bed401cd0f67",
      "new_mode": 33188,
      "new_path": "pylintrc"
    },
    {
      "type": "modify",
      "old_id": "e24a722c7bbebf56e815d3cc817b5a45e8a0c4d8",
      "old_mode": 33188,
      "old_path": "tests/trailing_whitespace_fixer_test.py",
      "new_id": "4d56762b32553fb2f1ef2187890edac4a8b5b656",
      "new_mode": 33188,
      "new_path": "tests/trailing_whitespace_fixer_test.py"
    }
  ]
}
