)]}'
{
  "commit": "43a4e17fbb54a9a3f3bca7ea0fd6eb675d1c71bb",
  "tree": "9789d9e5587007d6cfd37d29dfed2c346507541b",
  "parents": [
    "5289ca399aaa2d30278232a5bc92f015b31cbe17"
  ],
  "author": {
    "name": "Martin Fick",
    "email": "mfick@codeaurora.org",
    "time": "Thu May 31 14:14:56 2012 -0600"
  },
  "committer": {
    "name": "Martin Fick",
    "email": "mfick@codeaurora.org",
    "time": "Thu Jun 14 18:24:17 2012 -0600"
  },
  "message": "Add an exponentially rolling garbage collection script\n\ngit-exproll is a git garbage collection script aimed\nspecifically at reducing exccessive garbage collection and\nparticularly large packfile churn for Gerrit installations.\n\nExcessive garbage collection on \"dormant\" repos is wasteful\nof both CPU and disk IO.  Large packfile churn can lead to\nheavy RAM and FS usage on Gerrit servers when the Gerrit\nprocess continues to hold open the old delete packfiles.\nThis situation is most detrimental when jgit is configured\nwith large caching parameters.  Aside from these downsides,\nrunning git gc often can be very beneficial to performance\non servers.  This script attempts to implement a git gc\npolicy which avoids the downsides mentioned above so that\ngit gc can be comfortably run very regularly.\n\ngit-exproll.sh uses keep files to manage which files will\nget repacked.  It also uses timestamps on the repos to\ndetect dormant repos to avoid repacking them at all.  The\nprimary packfile objective is to keep around a series of\npackfiles with sizes spaced out exponentially from each\nother, and to roll smaller packfiles into larger ones once\nthe smaller ones have grown.  This strategy attempts to\nbalance disk space usage with avoiding rewriting large\npackfiles most of the time.\n\nThe exponential packing objective above does not save a\nlarge amount of time or CPU, but it does prevent the\npackfile churn.  Depending on repo usage, however the\ndormant repo detection and avoidance can result in a very\nlarge time savings.\n\nChange-Id: I5e8c3cc02f6ca382d34f62af2cf12a9cb8ffd21e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9526d9ff78f2433b679def18b8dce43888415158",
      "new_mode": 33188,
      "new_path": "contrib/git-exproll.sh"
    }
  ]
}
