)]}'
{
  "commit": "8a6d158a1d69996542ec0d28b63e83eaf46c5945",
  "tree": "56b8b16716b4d371f59a65c713c503f299511780",
  "parents": [
    "bb5c624209fcaebd60b9572b2cc8c61086e39b57"
  ],
  "author": {
    "name": "Jeff King",
    "email": "peff@peff.net",
    "time": "Wed Oct 29 11:32:37 2025 -0400"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Wed Oct 29 09:17:21 2025 -0700"
  },
  "message": "doc: document backslash in gitignore patterns\n\nBecause gitignore patterns are passed to fnmatch, the handling of\nbackslashes is the same as it is there: it can be used to escape\nmetacharacters. We do reference fnmatch(3) for more details, but it may\nbe friendlier to point out this implication explicitly (especially for\npeople who want to know about backslash handling and search the\ndocumentation for that word). There are also two cases that I\u0027ve seen\nsome other backslash-escaping systems handle differently, so let\u0027s\ndescribe those:\n\n  1. A backslash before any character treats that character literally,\n     even if it\u0027s not otherwise a meta-character. As opposed to\n     including the backslash itself (like \"foo\\bar\" in shell expands to\n     \"foo\\bar\") or forbidding it (\"foo\\zar\" is required to produce a\n     diagnostic in C).\n\n  2. A backslash at the end of the string is an invalid pattern (and not\n     a literal backslash).\n\nThis second one in particular was a point of confusion between our\nimplementation and the one in JGit. Our wildmatch behavior matches what\nPOSIX specifies for fnmatch, so the code and documentation are in line.\nBut let\u0027s add a test to cover this case. Note that the behavior here\ndiffers between wildmatch itself (which is what gitignore will use) and\npathspec matching (which will only turn to wildmatch if a literal match\nfails). So we match \"foo\\\" to \"foo\\\" in pathspecs, but not via\ngitignore.\n\nSigned-off-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5e0964ef4191d95acc0965b82fdfa1de295a6bc3",
      "old_mode": 33188,
      "old_path": "Documentation/gitignore.adoc",
      "new_id": "9fccab4ae8df2325d728d4876ef50822bf4b656a",
      "new_mode": 33188,
      "new_path": "Documentation/gitignore.adoc"
    },
    {
      "type": "modify",
      "old_id": "3da824117c61fd6d390f84ae56d631fe5d0d9071",
      "old_mode": 33261,
      "old_path": "t/t3070-wildmatch.sh",
      "new_id": "655bb1a0f21031a97ff48648f6c50f27790e4019",
      "new_mode": 33261,
      "new_path": "t/t3070-wildmatch.sh"
    }
  ]
}
