)]}'
{
  "commit": "b0eb744604391c94ec505f846604df1a07a166b1",
  "tree": "899c28c01837932929ad73b0ca3cf7980751c5a3",
  "parents": [
    "45cc76524bc29d856340736a9de8d0889b17bc13"
  ],
  "author": {
    "name": "Shawn Pearce",
    "email": "spearce@spearce.org",
    "time": "Sun Nov 29 12:04:03 2015 -0800"
  },
  "committer": {
    "name": "Shawn Pearce",
    "email": "spearce@spearce.org",
    "time": "Sun Nov 29 18:56:49 2015 -0800"
  },
  "message": "Delay locating .gitattributes until requested\n\nInstead of checking every entry for .gitattributes only look for the\nentry on request by TreeWalk.  This avoids impacting uses like RevWalk\nfiltering history.\n\nWhen the attrs is requested skip to the start of the tree and look for\n.gitattributes until either it is found, or it is impossible to be\npresent.  Due to the sorting rules of tree entries .gitattributes\nshould be among the first or second entries in the tree so very few\nentries will need to be considered.\n\nWaiting to find the .gitattributes file by native ordering may miss\nattrs for files like .config, which sorts before .gitattributes.\nStarting from the front of the tree on demand ensures the attributes\nare parsed as early as necessary to process any entry in the tree.\n\nDue to TreeWalk recursively processing up the tree of iterators we\ncannot just reset the current CanonicalTreeParser to the start as\nparent parsers share the same path buffer as their children.\nResetting a parent to look for .gitattributes may overwrite path\nbuffer data used by a child iterator.  Work around this by building a\nnew temporary CanonicalTreeParser instance.\n\nChange-Id: Ife950253b687be325340d27e9915c9a40df2641c\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "52da69ef5252c6fdff459b3af3bb2e6645f90e87",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/CanonicalTreeParserTest.java",
      "new_id": "f5e97c2dc25a23a289633a30eab4aaf7961a85a1",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/CanonicalTreeParserTest.java"
    },
    {
      "type": "modify",
      "old_id": "aa5f32a8703b9ee85073036174656edf579c68c5",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/treewalk/AbstractTreeIterator.java",
      "new_id": "5e71889574984ffda3d1b1c370bb48d8c5db8264",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/treewalk/AbstractTreeIterator.java"
    },
    {
      "type": "modify",
      "old_id": "c24efe20aadb27ff4f4980442bc62ba864a5e5f8",
      "old_mode": 33188,
      "old_path": "org.eclipse.jgit/src/org/eclipse/jgit/treewalk/CanonicalTreeParser.java",
      "new_id": "c038f0772534bba54ed53121b0a99ee27eb1ec54",
      "new_mode": 33188,
      "new_path": "org.eclipse.jgit/src/org/eclipse/jgit/treewalk/CanonicalTreeParser.java"
    }
  ]
}
