)]}'
{
  "commit": "30d00c395e3fb9f104a3f4a85f06a039c989cd8d",
  "tree": "8c587e5e49d288a58f2b5fe95a93e1df3bcf9be0",
  "parents": [
    "7c42e390a37a11b1f7a77f5f07c261a8f930663a"
  ],
  "author": {
    "name": "Jonathan Nieder",
    "email": "jrnieder@gmail.com",
    "time": "Sat Jun 12 11:31:18 2010 -0500"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Sun Jun 13 09:15:09 2010 -0700"
  },
  "message": "grep: refactor grep_objects loop into its own function\n\nSimplify cmd_grep by splitting off the loop that finds matches in a\nlist of trees.  So now the main part of cmd_grep looks like:\n\n\tif (!use_index) {\n\t\tint hit \u003d grep_directory(\u0026opt, paths);\n\t\tif (use_threads)\n\t\t\thit |\u003d wait_all();\n\t\treturn !hit;\n\t}\n\tif (!list.nr) {\n\t\tif (!cached)\n\t\t\tsetup_work_tree();\n\t\tint hit \u003d grep_cache(\u0026opt, paths, cached);\n\t\tif (use_threads)\n\t\t\thit |\u003d wait_all;\n\t\treturn !hit;\n\t}\n\thit \u003d grep_objects(\u0026opt, path, \u0026list);\n\tif (use_threads)\n\t\thit |\u003d wait_all();\n\treturn !hit;\n\nand is ripe for further refactoring.\n\nSigned-off-by: Jonathan Nieder \u003cjrnieder@gmail.com\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b194ea3cea531f3a6c81d6d27b5b3028641ba9ce",
      "old_mode": 33188,
      "old_path": "builtin/grep.c",
      "new_id": "5b8879f7b3d5440f18734ad03b196a6238964ec2",
      "new_mode": 33188,
      "new_path": "builtin/grep.c"
    }
  ]
}
