)]}'
{
  "commit": "a04855bae8d75d22b0c909c7d1febedcd05ba9b1",
  "tree": "b6f96ab383fc925c7a4abb9b62076ffbe7382269",
  "parents": [
    "fdeb89fdeb1db8f8910bc33547dd819065bc4e9d",
    "f0dd042148233ad4681b29f35f3bc3ba3b962474"
  ],
  "author": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Feb 27 13:57:14 2017 -0800"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Mon Feb 27 13:57:14 2017 -0800"
  },
  "message": "Merge branch \u0027bw/attr\u0027\n\nThe gitattributes machinery is being taught to work better in a\nmulti-threaded environment.\n\n* bw/attr: (27 commits)\n  attr: reformat git_attr_set_direction() function\n  attr: push the bare repo check into read_attr()\n  attr: store attribute stack in attr_check structure\n  attr: tighten const correctness with git_attr and match_attr\n  attr: remove maybe-real, maybe-macro from git_attr\n  attr: eliminate global check_all_attr array\n  attr: use hashmap for attribute dictionary\n  attr: change validity check for attribute names to use positive logic\n  attr: pass struct attr_check to collect_some_attrs\n  attr: retire git_check_attrs() API\n  attr: convert git_check_attrs() callers to use the new API\n  attr: convert git_all_attrs() to use \"struct attr_check\"\n  attr: (re)introduce git_check_attr() and struct attr_check\n  attr: rename function and struct related to checking attributes\n  attr.c: outline the future plans by heavily commenting\n  Documentation: fix a typo\n  attr.c: add push_stack() helper\n  attr: support quoting pathname patterns in C style\n  attr.c: plug small leak in parse_attr_line()\n  attr.c: tighten constness around \"git_attr\" structure\n  ...\n",
  "tree_diff": []
}
