)]}'
{
  "commit": "7f1ccfbb7bb29195e53fcc374a648379f5f53d3a",
  "tree": "1bd13675e42ba771a5c26343508cfa62831edcfa",
  "parents": [
    "eceeb1b1f5edb0f42e690bffdf81828abd8ea7fe"
  ],
  "author": {
    "name": "Andrew Wheeler",
    "email": "andrew@igmo.org",
    "time": "Fri Jun 17 16:51:07 2016 -0500"
  },
  "committer": {
    "name": "Andrew Wheeler",
    "email": "andrew@igmo.org",
    "time": "Tue Oct 11 14:10:34 2016 -0500"
  },
  "message": "sync: Fix semaphore release bug that causes thread \u0027leaks\u0027\n\nWhen repo syncs a manifest that utilizes multiple branches\nin the same project, then the sync will use an extra\nthread for each \"duplicate\".  For example, if\nthe manifest includes the project \"foo\" and \"bar\"\ntwice, then \"repo sync -jN\" will fetch with N+2 threads.\n\nThis is caused by _FetchHelper() releasing the thread semaphore\nobject each time it\u0027s called, even though _FetchProjectList()\nmay call this function multiple times within the scope of a\nsingle thread.\n\nFix by moving the thread semaphore release to\n_FetchProjectList(), which is only called once per thread\ninstance.\n\nChange-Id: I1da78b145e09524d40457db5ca5c37d315432bd8\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7ba9ebfc83f7234af80b20a99d3780767ad99d15",
      "old_mode": 33188,
      "old_path": "subcmds/sync.py",
      "new_id": "bbb166c0d893093096ce80e93bc48f4bac6e9348",
      "new_mode": 33188,
      "new_path": "subcmds/sync.py"
    }
  ]
}
