)]}'
{
  "log": [
    {
      "commit": "90be5c0839762d14bdee75d121c3923ed91c8404",
      "tree": "9b7381e33f3cf311919f5372c2a34f6a1f337854",
      "parents": [
        "7965f9fed083f07255d62f2a4a49fb54424356e4"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Oct 29 15:21:24 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Oct 29 15:24:34 2008 -0700"
      },
      "message": "Cache the per-user configuration to avoid duplicate instances\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "7965f9fed083f07255d62f2a4a49fb54424356e4",
      "tree": "60b0eff346743da51bf3f4952bd40623e046c362",
      "parents": [
        "de646819b8e43a906d86a579c68118cad31934cc"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Oct 29 15:20:02 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Oct 29 15:24:34 2008 -0700"
      },
      "message": "Move the Editor configuration out of Manifest\u0027s constructor\n\nThis way we can build more than one Manifest instance in memory\nand not muck around with the Editor configuration each time we\nbuild a new instance.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "de646819b8e43a906d86a579c68118cad31934cc",
      "tree": "2133f50781f6849d3f8de8ae3a95b5a6c1853063",
      "parents": [
        "bd4edc9a6996d666edfa77b6b80615ee7c8ea335"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Oct 29 14:38:12 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Oct 29 14:38:12 2008 -0700"
      },
      "message": "Don\u0027t flip out if there are no template hooks\n\nGit may have been installed without its hooks directory, which\nmeans we won\u0027t have any hooks in a repo created git repository.\nSince we are just deleting the hooks it doesn\u0027t matter.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "bd4edc9a6996d666edfa77b6b80615ee7c8ea335",
      "tree": "fa78fbf11c1b9a44710dafeda73a740e8be7f583",
      "parents": [
        "ce03a401c6fb5a890a3fbf03ab51f70a80370ec1"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 28 16:14:05 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 28 16:14:05 2008 -0700"
      },
      "message": "Stop downloading snapshots as native git:// is faster\n\nDownloading and streaming a tar into Git is slower than just\nletting the native git:// protocol handle the data transfer,\nespecially when there are multiple revisions available and\nGit can perform delta compression across revisions.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "ce03a401c6fb5a890a3fbf03ab51f70a80370ec1",
      "tree": "c575afd365420dda631581dd3efc7a588a8c37a6",
      "parents": [
        "45476c40c7300efe09ee376a8f1bf4488bd25afa"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 28 16:12:03 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 28 16:12:03 2008 -0700"
      },
      "message": "Stop hiding remote missing object errors\n\nHiding error messages from the remote peer is not a good idea,\nas users should be made aware when the remote peer is not a\ncomplete Git repository so they can alert the administrators\nand have the repository corrected.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "45476c40c7300efe09ee376a8f1bf4488bd25afa",
      "tree": "95bfbb9ad38b514145507f6aa59d9a6cdf11e7f8",
      "parents": [
        "16191347205deab1bb255b8395cb72419793210d"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 28 08:46:15 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 28 08:46:15 2008 -0700"
      },
      "message": "wrapper 1.6\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "16191347205deab1bb255b8395cb72419793210d",
      "tree": "29763cd7c84fdb1058b82f3250ef27120f890b3a",
      "parents": [
        "7efd1a5b231d70fc8c1d0986e896e9accb7a22a0"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 28 08:33:34 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 28 08:44:18 2008 -0700"
      },
      "message": "Added missing wait after git-version call in wrapper\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "7efd1a5b231d70fc8c1d0986e896e9accb7a22a0",
      "tree": "601b2deadbc8c59fe310bc18a22ab802fb3e873c",
      "parents": [
        "329c31da7d03b5fd0d68f3ca39a7ff82c600d12b"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 28 08:31:03 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 28 08:44:18 2008 -0700"
      },
      "message": "Remove unused import from gerrit_upload.py\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "329c31da7d03b5fd0d68f3ca39a7ff82c600d12b",
      "tree": "ca6a34b7ac71d5fdbf70aa4a7fdb34315f5a2751",
      "parents": [
        "5cc6679fb84ec887a09895c53a279df821faad49"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Oct 24 09:17:25 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Oct 24 09:17:25 2008 -0700"
      },
      "message": "Repair any mis-directed android-1.0 annotated tags\n\nThe initial open source release of the Android 1.0 platform had\nsome problems with its Perforce-\u003eGit imports.  Google was forced\nto rewrite some history to redirect users onto more stable upstream\nsources and correct errors in the imports.\n\nNot everyone has the correct android-1.0 tags, as some users did\nmanage to fetch the platform early, before the mirror sites crashed\nand the history was rewritten.\n\nThis change is a band-aid to ensure any stale android-1.0 tags are\nget updated to the corrected version.  It should be backed out at\nsome point in the near future, when we can be fairly certain that\neveryone has the correct android-1.0 tags.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "5cc6679fb84ec887a09895c53a279df821faad49",
      "tree": "36c80f9302586c639385084d1970f982b1434006",
      "parents": [
        "632768bc65ae0f1dc9eb9260c9146c42d9965a18"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Oct 23 16:19:27 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Oct 23 16:20:14 2008 -0700"
      },
      "message": "Support user supplied custom .repo/local_manifest.xml files\n\nBy creating a .repo/local_manifest.xml the user can add extra\nprojects into their client space, without touching the main\nmanifest script.\n\nFor example:\n\n  $ cat .repo/local_manifest.xml\n  \u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e\n  \u003cmanifest\u003e\n   \u003cproject path\u003d\"android-build\"\n            name\u003d\"platform/build\"\n            remote\u003d\"korg\"\n            revision\u003d\"android-1.0\" /\u003e\n  \u003c/manifest\u003e\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": "bb0ee8057165a9d54e1e1ab9addb15a2a57ccfc1",
      "tree": "65fd7bcf7757f03a6ff52bc71be36128bcc64197",
      "parents": [
        "02dbb6d120e44ec22cc7051251984cfd618e74ce"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Oct 22 13:02:56 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Oct 22 13:10:29 2008 -0700"
      },
      "message": "Change RPC client to only use Google Accounts for authentication\n\nHosted domain account (such as \"@google.com\" itself) don\u0027t work on the\nGoogle App Engine service unless the user specifically creates their\nown Google Account (https://www.google.com/accounts/NewAccount) with\nthe same email address.\n\nWhen both such accounts exist we must *only* use the Google Account in\nour auth request, as that is all Google App Engine will honor when we\nsend it the session cookie.\n\nHowever, Google has internal servers that may also be running Gerrit\nbased applications.  In those case we must use the hosted auth login\nfor @google.com user accounts, as the internal servers honor only the\nhosted account and not the public Google Account database.\n\nIn the future we may need to add other domains to the \"HOSTED\" list\nif other Gerrit instances are setup on hosted domains and locked to\nonly those domain\u0027s user accounts, similar to how a server that is\ninternal to Google would be setup.  Since this is currently not a\nlikely occurrence I\u0027m not worrying about making it configurable at\nthis juncture.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "02dbb6d120e44ec22cc7051251984cfd618e74ce",
      "tree": "e36cde295fc1f3f69eb67cfe6311ae820cd5e5d2",
      "parents": [
        "7542d664de7a9d42f64a81bc8c0b86bcbb384376"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 21 13:59:08 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 21 13:59:08 2008 -0700"
      },
      "message": "Fix StopIteration exception during repo {sync,status}\n\nIf we run out of entries next() will throw StopIteration.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "7542d664de7a9d42f64a81bc8c0b86bcbb384376",
      "tree": "9a991d3c21b9f38cbd08f3c7d5852db0c3db2b5a",
      "parents": [
        "0734600ce0f24016d190311621ea59649bc92bad"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 21 07:11:36 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 21 07:12:42 2008 -0700"
      },
      "message": "Remove the Python 2.4 dependency and use just \u0027python\u0027\n\nMany Linux distributions are including python2.5 by default, as\nit is the latest stable release of the language.  Using python2.4\n(and asking users to specifically install it) is just cruel and\nunusual punishment.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "0734600ce0f24016d190311621ea59649bc92bad",
      "tree": "178b43053e592c35f8cddc5e948145b7fd421530",
      "parents": [
        "cf31fe9b4fb650b27e19f5d7ee7297e383660caf"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 21 07:09:27 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 21 07:12:36 2008 -0700"
      },
      "message": "Fix \u0027repo sync\u0027 when the remote reflog has only 1 entry\n\nIf the reflog for the upstream branch has only 1 entry in it, as\nthe branch has been updated only once, we can get back the 0{40}\nobject id from `git rev-parse upstream@{1}`, in which case we should\nconsider it to be the same as if upstream@{1} is not defined.\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"
    }
  ]
}
