)]}'
{
  "log": [
    {
      "commit": "be0e8ac232de862d287927c4d735cf30f040cf42",
      "tree": "bd967fd652ed0da2cd967a66fe5f239780d61120",
      "parents": [
        "47c1a63a07ebd67efac00ca9e0d877633aea5881"
      ],
      "author": {
        "name": "Jeff Bailey",
        "email": "jeffbailey@google.com",
        "time": "Wed Jan 21 19:05:15 2009 -0500"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Mar 02 19:32:28 2009 -0800"
      },
      "message": "Export additional environment variables to repo forall:\n\nREPO_PATH is the path relative the the root of the client.\n\nREPO_REMOTE is the name of the remote system from the manifest.\n\nREPO_LREV is the name of the revision from the manifest, but\ntranslated to something the local repository knows.\n\nREPO_RREV is the name of the revision from the manifest.\n\nThis allows us to do commands like:\n\n  repo forall -c \u0027echo \"(cd $REPO_PATH \u0026\u0026 git checkout `git rev-parse HEAD`)\"\u0027\n"
    },
    {
      "commit": "47c1a63a07ebd67efac00ca9e0d877633aea5881",
      "tree": "1d52cf3c114a4389a0ec79102604aa8ca6afdde7",
      "parents": [
        "559b846b17a5b720c1247d07e292150466f27f96"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Mar 02 18:24:23 2009 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Mar 02 18:24:23 2009 -0800"
      },
      "message": "Add \u0027repo version\u0027 to describe what code we are running\n\nI meant to have this in here, so clients can more easily report\nwhat version of repo they are running.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "a6df7d284cc008cc2f21092f5fdd4e32ed28500e",
      "tree": "b3c0970115668d068c8b34768484b60511fd11aa",
      "parents": [
        "67092448c290ce6bd3f05abc17f4f4d53e4c91bb"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Dec 12 08:04:07 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Dec 12 08:04:07 2008 -0800"
      },
      "message": "Describe upload --replace in upload\u0027s help text\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "67092448c290ce6bd3f05abc17f4f4d53e4c91bb",
      "tree": "bcb2fc65b934d3e6904286bf69fb0b8e2f52b9ea",
      "parents": [
        "e92ceebde0034ad045e12b8241045d701383e681"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Dec 12 08:01:12 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Dec 12 08:01:12 2008 -0800"
      },
      "message": "Don\u0027t accept multiple commits for the same change in upload --replace\n\nGerrit won\u0027t permit more than one commit using the same change\nnumber during a replacement request, so we should error out if\nthe user has asked for this in their upload edit script.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "e92ceebde0034ad045e12b8241045d701383e681",
      "tree": "aa604c3a12d8e7908823a40f877699188f927d15",
      "parents": [
        "03eaf07ec6aa7e99a0444ac1ec708b2a5f7cbbf5"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Nov 24 15:51:25 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Nov 24 15:51:25 2008 -0800"
      },
      "message": "Fix upload --replace after it was broken when --review,--cc was added\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "2896a79120fe1de65472736f756c47b558b44db1",
      "tree": "73a105ae2e3138575b82e9840a69c8b2eca0dd1e",
      "parents": [
        "8c6eef4713db36a2063dd5a68b3d37a5e4276508"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Mon Nov 17 16:56:36 2008 -0500"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed Nov 19 11:55:06 2008 -0500"
      },
      "message": "Add --review and --cc flags to repo upload, so you can\nassign reviewers when you upload changes.\n"
    },
    {
      "commit": "c99883fee990a1baa7e0bf5f854c7485b7d0f0d9",
      "tree": "870cfd73b1fc2faf53da6d613ae820984695b305",
      "parents": [
        "ec18b4bac4f3c0760c26e83b8ade01ad1c815a9b"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 11 17:12:43 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Nov 12 09:12:19 2008 -0800"
      },
      "message": "Teach \u0027repo upload --replace\u0027 how to add replacement patch sets\n\nUsers are prompted with the list of known changes we are about\nto upload, and they can fill out the current change numbers for\nany changes which already exist in the data store.  For each of\nthose changes the change number and commit id is sent as part of\nthe upload request, so Gerrit can insert the new commit as a new\npatch set of the existing change, rather than make a new change.\n\nThis facility permits developers to replace a patch so they can\naddress comments made on a prior version of the same change.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "e284ad1d1a2c6fa0e0ac800e87b2607f9bda339e",
      "tree": "fcf35ac784ec2e13c78ee3882ccb1fec0ad3d049",
      "parents": [
        "3e5481999d5f853e19ee5caaaaa968fc4b5176ab"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 04 07:37:10 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Nov 05 18:08:32 2008 -0800"
      },
      "message": "Add \u0027repo init --mirror\u0027 to download a complete forrest\n\nThe mirror option downloads a complete forrest (as described by the\nmanifest) and creates a replica of the remote repositories rather\nthan a client working directory.  This permits other clients to\nsync off the mirror site.\n\nA mirror can be positioned in a \"DMZ\", where the mirror executes\n\"repo sync\" to obtain changes from the external upstream and\nclients inside the protected zone operate off the mirror only,\nand therefore do not require direct git:// access to the external\nupstream repositories.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "9fa44db94bfabcf43160316660801a2c1db2dbb9",
      "tree": "4a8ffcba60cfd6c02e88c9f401a66d4cab1b18b0",
      "parents": [
        "c9ef744c7b5f6bcab446cf0a0bc9cc1b016dd5f8"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Nov 03 11:24:59 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Nov 03 11:24:59 2008 -0800"
      },
      "message": "Introduce \u0027repo abandon \u003cbranchname\u003e\u0027 as an alias for \u0027git branch -D\u0027\n\nThis destroys a local development branch, removing all history\nof that branch from ever existing.  If the branch is currently\nchecked out we move back to the upstream revision.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "c9ef744c7b5f6bcab446cf0a0bc9cc1b016dd5f8",
      "tree": "ff1bd7309698ef0dd312daf205512b1fa96d3e8d",
      "parents": [
        "438ee1cad98ac32509718976e63c36a449bfb679"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Nov 03 10:32:09 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Nov 03 11:00:44 2008 -0800"
      },
      "message": "Install a default pre-auto-gc hook in all repositories\n\nThis hook is evaluated by `git gc --auto` to determine if it is a\ngood idea to execute a GC at this time, or defer it to some later\ndate.  When working on a laptop its a good idea to avoid GC if you\nare on battery power as the extra CPU and disk IO would consume a\ndecent amount of the charge.\n\nThe hook is the standard sample hook from git.git contrib/hooks,\nlast modified in git.git by 84ed4c5d117d72f02cc918e413b9861a9d2846d7.\nI added the GPLv2 header to the script to ensure the license notice\nis clear, as it does not match repo\u0027s own APLv2 license.\n\nWe only update hooks during initial repository creation or on\na repo sync.  This way we don\u0027t incur huge overheads from the\nhook stat operations during \"repo status\" or even the normal\n\"repo sync\" cases.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "df830f12389984adeeba04659615b9fc230f2db3",
      "tree": "ea5857656f63f9b375dbb9851e8801062570c24d",
      "parents": [
        "90be5c0839762d14bdee75d121c3923ed91c8404"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Oct 30 09:21:43 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Oct 30 09:21:43 2008 -0700"
      },
      "message": "Remove import_tar, import_zip and the \u003csnapshot\u003e elements\n\nNow that repo relies only on the git data stream (as it is much\nfaster to download through) we don\u0027t really need to be parsing the\n\u003csnapshot\u003e elements within manifest.  Its a lot of complex code to\nconvert the tar (or zip) through to a fast import stream, and we\njust aren\u0027t calling it anymore.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "632768bc65ae0f1dc9eb9260c9146c42d9965a18",
      "tree": "f8fc564a40e5886c74062d6be751ca4c2769721c",
      "parents": [
        "0758d2f1d61288c83282749d2b36958d2c289e7f"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Oct 23 11:58:52 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Oct 23 14:43:28 2008 -0700"
      },
      "message": "Teach repo how to download changes to the local checkout\n\nNow `repo download . 1402` would download the change numbered 1402\ninto the current project and check it out for the user, using a\ndetached HEAD.  `repo sync .` would back out of the change and\nreturn to the upstream version.\n\nMultiple projects can be fetched at once by listing them out on\nthe command line as different arguments.\n\nIndividual patch sets can be selected by adding a \u0027/n\u0027 to indicate\nthe n-th patch set should be downloaded instead of the default of\npatch set 1.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "0758d2f1d61288c83282749d2b36958d2c289e7f",
      "tree": "484a67366aeb84d83147eeec2ba4fd459dbf0879",
      "parents": [
        "bb0ee8057165a9d54e1e1ab9addb15a2a57ccfc1"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Oct 22 13:13:40 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Oct 22 13:13:40 2008 -0700"
      },
      "message": "Show which user account each change was uploaded under\n\nThis way users are well aware of which account we used when the\nuploads are complete, so they can be certain to sign into the web\napplication with that user identity.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "cf31fe9b4fb650b27e19f5d7ee7297e383660caf",
      "tree": "d04ca6a45d579dca5e5469606c48c405aee68f4b",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
