)]}'
{
  "commit": "3d27b9b005f26b107227fc18b6648df329daee97",
  "tree": "d664bb24e8cc0f825f0907ec2b9af8763fef3cd4",
  "parents": [
    "04a74b6cfa5ef4870263f84ac94a488d9f2ef14a"
  ],
  "author": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Wed Apr 17 15:38:08 2013 -0700"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Wed Apr 17 16:03:56 2013 -0700"
  },
  "message": "date.c: add parse_expiry_date()\n\n\"git reflog --expire\u003dall\" tries to expire reflog entries up to the\ncurrent second, because the approxidate() parser gives the current\ntimestamp for anything it does not understand (and it does not know\nwhat time \"all\" means).  When the user tells us to expire \"all\" (or\nset the expiration time to \"now\"), the user wants to remove all the\nreflog entries (no reflog entry should record future time).\n\nJust set it to ULONG_MAX and to let everything that is older that\ntimestamp expire.\n\nWhile at it, allow \"now\" to be treated the same way for callers that\nparse expiry date timestamp with this function.  Also use an error\nreporting version of approxidate() to report misspelled date.  When\nthe user says e.g. \"--expire\u003dmnoday\" to delete entries two days or\nolder on Wednesday, we wouldn\u0027t want the \"unknown, default to now\"\nlogic to kick in.\n\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b3c9e27bde653bf01acc6126deeb5f508fa0b26e",
      "old_mode": 33188,
      "old_path": "builtin/reflog.c",
      "new_id": "44700f92432adf9545d160e698fd57aa3cc07d29",
      "new_mode": 33188,
      "new_path": "builtin/reflog.c"
    },
    {
      "type": "modify",
      "old_id": "3622e18415ee407d59e6270424d635b5f1df126c",
      "old_mode": 33188,
      "old_path": "cache.h",
      "new_id": "f43f6d94e37803322ea65ef9d7713db18b6f4324",
      "new_mode": 33188,
      "new_path": "cache.h"
    },
    {
      "type": "modify",
      "old_id": "57331ed406e2391e0a2bf327fbb86d3b62012324",
      "old_mode": 33188,
      "old_path": "date.c",
      "new_id": "876d679b1eed24296249e3fd9d9afbdafa22f0ba",
      "new_mode": 33188,
      "new_path": "date.c"
    }
  ]
}
