)]}'
{
  "log": [
    {
      "commit": "1d947b30342163b723c96db563967323535fef45",
      "tree": "b6b02d02df01792b356b9e50ceeaadcaf3a2e8c5",
      "parents": [
        "2d113f35460051823ea54d61c5c939565518f969"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Oct 25 12:23:11 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Oct 30 10:28:20 2012 +0900"
      },
      "message": "Even more coding style cleanup\n\nFixing some more pylint warnings:\n\nW1401: Anomalous backslash in string\nW0623: Redefining name \u0027name\u0027 from outer scope\nW0702: No exception type(s) specified\nE0102: name: function already defined line n\n\nChange-Id: I5afcdb4771ce210390a79981937806e30900a93c\n"
    },
    {
      "commit": "8a68ff96057ec58e524a3e41a2d8dca7b5d016bc",
      "tree": "22f6971e8d3c4a90d11d3704602d073a852328b4",
      "parents": [
        "e3b1c45aebed329cbc9ad172b1d8e812cf208117"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon Sep 24 12:15:13 2012 +0900"
      },
      "committer": {
        "name": "Gustaf Lundh",
        "email": "gustaf.lundh@sonymobile.com",
        "time": "Tue Oct 09 12:45:30 2012 +0200"
      },
      "message": "Coding style cleanup\n\nFix the following issues reported by pylint:\n\nC0321: More than one statement on a single line\nW0622: Redefining built-in \u0027name\u0027\nW0612: Unused variable \u0027name\u0027\nW0613: Unused argument \u0027name\u0027\nW0102: Dangerous default value \u0027value\u0027 as argument\nW0105: String statement has no effect\n\nAlso fixed a few cases of inconsistent indentation.\n\nChange-Id: Ie0db839e7c57d576cff12d8c055fe87030d00744\n"
    },
    {
      "commit": "e15c65abc25cd1d5d77ec6815a3c011b9f57ddac",
      "tree": "43bd95e2e83abcd88c5d05b6a65393877c51028b",
      "parents": [
        "daa851f6cd9edb3851a3884fd2864f0f3dc583b2"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Aug 22 10:46:11 2012 +0900"
      },
      "committer": {
        "name": "Gustaf Lundh",
        "email": "gustaf.lundh@sonymobile.com",
        "time": "Thu Aug 23 12:15:26 2012 +0200"
      },
      "message": "Remove unused imports\n\nThere are several imports that are not used.  Remove them.\n\nChange-Id: I2ac3be66827bd68d3faedcef7d6bbf30ea01d3f2\n"
    },
    {
      "commit": "cc14fa9820a4c9fb7a403bbe1264856c6437bf96",
      "tree": "dfbd9b5de0c190815ea07f1b3f8e46b7acf14d7a",
      "parents": [
        "3ce2a6b46bb368f000d25782e24d701f68f32659"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 29 12:32:56 2011 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 29 14:43:04 2011 -0800"
      },
      "message": "Improve error handling when reading loose refs\n\nWhen repo is trying to figure out branches the repository has by\ntraversing refs/heads, add exception handling for readline.\n\nChange-Id: If3b2a3720c6496f52f629aa9a2539f186d6ec882\n"
    },
    {
      "commit": "76ca9f8145f367f83df19981da4dd934fdda471b",
      "tree": "d6c095928fd2b1131972206b3c3f498843a736a6",
      "parents": [
        "accc56d82b902e7c7a22401db710958fcb1c7b58"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Sat Apr 18 14:48:03 2009 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Sat Apr 18 14:48:03 2009 -0700"
      },
      "message": "Make usage of open safer by setting binary mode and closing fds\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "ad3193a0e587073dee0edef46bdf24f6c6e09779",
      "tree": "84ed1894e6f590455ee361beb049c1c271c4e0e7",
      "parents": [
        "b81ac9e65444d0f54d2b6dd24d20b74945c9a36a"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Sat Apr 18 09:54:51 2009 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Sat Apr 18 09:54:51 2009 -0700"
      },
      "message": "Fix `repo --trace` to show ref and config loads\n\nThe value of the varible TRACE was copied during the import, which\nhappens before the --trace option can be processed.  So instead we\nnow use a function to determine if the value is set, as the function\ncan be safely copied early during import.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "b81ac9e65444d0f54d2b6dd24d20b74945c9a36a",
      "tree": "717c5afa16ee88c9b409ce298c95d6f150118775",
      "parents": [
        "0f3dd233ecaf8d145ddb33a5ef1b8d3d71ade476"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Apr 17 20:44:26 2009 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Apr 17 21:03:45 2009 -0700"
      },
      "message": "Enable tracing of ref scans and config unpickling\n\nThese are not as expensive as spawning a git command, but they are\nnot free either.  We want to keep track of how many times we wind\nup calling them on any particular operation.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "0f3dd233ecaf8d145ddb33a5ef1b8d3d71ade476",
      "tree": "327212154350ab031cbd64e39c8ef93cbd9bb6b5",
      "parents": [
        "c12c360f89d4d1cc0a0ad80c4ea0785f84be1848"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Apr 17 20:32:44 2009 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Apr 17 21:03:45 2009 -0700"
      },
      "message": "Avoid unnecessary git symbolic-ref calls during repo sync\n\nIf the m/BRANCH ref is already pointing at the value set in the\nmanifest there is no reason to set it again.  Leave it alone,\nthus saving a full fork+exec call.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "fbcde472cadfc8319016faca90cb5b57f7a00ee4",
      "tree": "ee0b2eb641c2874f5d150d0e5b1556778e308b42",
      "parents": [
        "d237b698652120f4d859b6f9e12e3aa15aa7b2d5"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Apr 17 20:58:02 2009 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Apr 17 21:03:45 2009 -0700"
      },
      "message": "Improve repo sync performance by avoid git forks\n\nBy resolving the current HEAD and the manifest revision using pure\nPython, we can in the common case of \"no changes\" avoid a lot of\ngit operations and directly jump out of the local sync method.\n\nThis reduces the no-op `repo sync -l` time for Android\u0027s 114 projects\nfrom more than 6s to under 0.8s.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "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"
    }
  ]
}
