)]}'
{
  "commit": "d237b698652120f4d859b6f9e12e3aa15aa7b2d5",
  "tree": "007a9736befbfaadfe022fbd99c0ab3d1ced0f3f",
  "parents": [
    "5b23f24881505ae77bf7a43d66663a7f2968b3c1"
  ],
  "author": {
    "name": "Shawn O. Pearce",
    "email": "sop@google.com",
    "time": "Fri Apr 17 18:49:50 2009 -0700"
  },
  "committer": {
    "name": "Shawn O. Pearce",
    "email": "sop@google.com",
    "time": "Fri Apr 17 21:03:41 2009 -0700"
  },
  "message": "Implement git ref reading purely in Python\n\nIts much faster to read the refs from 114 projects when the reader\nis pure Python and just doing file IO than forking 114 git commands\nand parsing their output.\n\nThe reader caches refs based upon file mtimes.  If any single ref\nfile has been modified since the last read, we re-read the entire\nrepository\u0027s ref namespace.  This simplifies the code as we don\u0027t\nneed to worry about shooting down symbolic-refs, but it may cause\nmore IO than is necessary if only one ref gets updated.\n\nThis change drops `repo branches` in Android from 1.658s to 0.206s.\nLikewise, `repo sync` improves dramatically as well.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9851e78bf8cda9b048fb8eb83ee16316bfdc8000",
      "new_mode": 33188,
      "new_path": "git_refs.py"
    },
    {
      "type": "modify",
      "old_id": "311379cac081a2c3fca90bf45822f38b1799ae06",
      "old_mode": 33188,
      "old_path": "project.py",
      "new_id": "086f0d77bf35a73f6bd673b9d34fc8549c8a6277",
      "new_mode": 33188,
      "new_path": "project.py"
    }
  ]
}
