)]}'
{
  "commit": "244ea1b5e49081530e0ba5c717db1fdbe2bda73e",
  "tree": "3eedc89a9c46e10287f70645a3e4c8c796326895",
  "parents": [
    "034667a458057ef1e571973a38ebbdf0045a63e9"
  ],
  "author": {
    "name": "Ævar Arnfjörð Bjarmason",
    "email": "avarab@gmail.com",
    "time": "Mon Mar 27 11:16:55 2017 +0000"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Mar 27 10:45:44 2017 -0700"
  },
  "message": "rev-parse: match @{upstream}, @{u} and @{push} case-insensitively\n\nChange the revision parsing logic to match @{upstream}, @{u} \u0026 @{push}\ncase-insensitively.\n\nBefore this change supplying anything except the lower-case forms\nemits an \"unknown revision or path not in the working tree\"\nerror. This change makes upper-case \u0026 mixed-case versions equivalent\nto the lower-case versions.\n\nThe use-case for this is being able to hold the shift key down while\ntyping @{u} on certain keyboard layouts, which makes the sequence\neasier to type, and reduces cases where git throws an error at the\nuser where it could do what he means instead.\n\nThese suffixes now join various other suffixes \u0026 special syntax\ndocumented in gitrevisions(7) that matches case-insensitively. A table\nshowing the status of the various forms documented there before \u0026\nafter this patch is shown below. The key for the table is:\n\n - CI  \u003d Case Insensitive\n - CIP \u003d Case Insensitive Possible (without ambiguities)\n - AG  \u003d Accepts Garbage (.e.g. @{./.4.minutes./.})\n\nBefore this change:\n\n    |----------------+-----+------+-----|\n    | What?          | CI? | CIP? | AG? |\n    |----------------+-----+------+-----|\n    | @{\u003cdate\u003e}      | Y   | Y    | Y   |\n    | @{upstream}    | N   | Y    | N   |\n    | @{push}        | N   | Y    | N   |\n    |----------------+-----+------+-----|\n\nAfter it:\n\n    |----------------+-----+------+-----|\n    | What?          | CI? | CIP? | AG? |\n    |----------------+-----+------+-----|\n    | @{\u003cdate\u003e}      | Y   | Y    | Y   |\n    | @{upstream}    | Y   | Y    | N   |\n    | @{push}        | Y   | Y    | N   |\n    |----------------+-----+------+-----|\n\nThe ^{\u003ctype\u003e} suffix is not made case-insensitive, because other\nplaces that take \u003ctype\u003e like \"cat-file -t \u003ctype\u003e\" do want them case\nsensitively (after all we never declared that type names are case\ninsensitive). Allowing case-insensitive typename only with this syntax\nwill make the resulting Git as a whole inconsistent.\n\nThis change was independently authored to scratch a longtime itch, but\nwhen I was about to submit it I discovered that a similar patch had\nbeen submitted unsuccessfully before by Conrad Irwin in August 2011 as\n\"rev-parse: Allow @{U} as a synonym for\n@{u}\" (\u003c1313287071-7851-1-git-send-email-conrad.irwin@gmail.com\u003e).\n\nThe tests for this patch are more exhaustive than in the 2011\nsubmission. The starting point for them was to first change the code\nto only support upper-case versions of the existing words, seeing what\nbroke, and amending the breaking tests to check upper case \u0026 mixed\ncase as appropriate, and where not redundant to other similar\ntests. The implementation itself is equivalent.\n\nSigned-off-by: Ævar Arnfjörð Bjarmason \u003cavarab@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ba11b9c95e3a6efef461e5cadc4834ce232896b1",
      "old_mode": 33188,
      "old_path": "Documentation/revisions.txt",
      "new_id": "75d211f1a8b3e727fd6d8f87f22d8a3d1b0d361b",
      "new_mode": 33188,
      "new_path": "Documentation/revisions.txt"
    },
    {
      "type": "modify",
      "old_id": "cda9e49b12e7128dd22a8ccbaff437cb7db34d92",
      "old_mode": 33188,
      "old_path": "sha1_name.c",
      "new_id": "d9d1b2fce8dddfe51c3e23b4b524e6eed4028b86",
      "new_mode": 33188,
      "new_path": "sha1_name.c"
    },
    {
      "type": "modify",
      "old_id": "46ef1f22dca14423ecff8da45d608a8885f23dba",
      "old_mode": 33261,
      "old_path": "t/t1507-rev-parse-upstream.sh",
      "new_id": "b23c4e3fab604f957ec6359eae75400dd1e53174",
      "new_mode": 33261,
      "new_path": "t/t1507-rev-parse-upstream.sh"
    },
    {
      "type": "modify",
      "old_id": "623a32aa6e323d11267cb89af62d42c325a4dd75",
      "old_mode": 33261,
      "old_path": "t/t1514-rev-parse-push.sh",
      "new_id": "788cc91e452ce02af1c068b8c7b0bb1aa88ae395",
      "new_mode": 33261,
      "new_path": "t/t1514-rev-parse-push.sh"
    }
  ]
}
