)]}'
{
  "commit": "30b1c7ad9d64695a65c23f922e6ffd2fd35660da",
  "tree": "513f58dfd862fd8198ccf6fdccfffde83db897b2",
  "parents": [
    "2d2118b814c11f509e1aa76cb07110f7231668dc"
  ],
  "author": {
    "name": "Benno Evers",
    "email": "benno@bmevers.de",
    "time": "Wed Feb 26 18:48:53 2020 +0100"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Wed Feb 26 12:14:12 2020 -0800"
  },
  "message": "describe: don\u0027t abort too early when searching tags\n\nWhen searching the commit graph for tag candidates, `git-describe`\nwill stop as soon as there is only one active branch left and\nit already found an annotated tag as a candidate.\n\nThis works well as long as all branches eventually connect back\nto a common root, but if the tags are found across branches\nwith no common ancestor\n\n                  B\n                  o----.\n                        \\\n          o-----o---o----x\n          A\n\nit can happen that the search on one branch terminates prematurely\nbecause a tag was found on another, independent branch. This scenario\nisn\u0027t quite as obscure as it sounds, since cloning with a limited\ndepth often introduces many independent \"dead ends\" into the commit\ngraph.\n\nThe help text of `git-describe` states pretty clearly that when\ndescribing a commit D, the number appended to the emitted tag X should\ncorrespond to the number of commits found by `git log X..D`.\n\nThus, this commit modifies the stopping condition to only abort\nthe search when only one branch is left to search *and* all current\nbest candidates are descendants from that branch.\n\nFor repositories with a single root, this condition is always\ntrue: When the search is reduced to a single active branch, the\ncurrent commit must be an ancestor of *all* tag candidates. This\nmeans that in the common case, this change will have no negative\nperformance impact since the same number of commits as before will\nbe traversed.\n\nSigned-off-by: Benno Evers \u003cbenno@bmevers.de\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b6df81d8d0e80e9665ae8f8afcf3cb03d1ae688c",
      "old_mode": 33188,
      "old_path": "builtin/describe.c",
      "new_id": "420f4c6401b6204bb422325ed0c08d713b2dfcda",
      "new_mode": 33188,
      "new_path": "builtin/describe.c"
    },
    {
      "type": "modify",
      "old_id": "09c50f3f0492acd4a44dcee8a67d4b3ee67fe581",
      "old_mode": 33261,
      "old_path": "t/t6120-describe.sh",
      "new_id": "34502e3a505443d02a57ccc241e178feeffd1ce5",
      "new_mode": 33261,
      "new_path": "t/t6120-describe.sh"
    }
  ]
}
