)]}'
{
  "log": [
    {
      "commit": "35f2596c27ae041235b88076888870b8ba2e2c8c",
      "tree": "e404e569a49057d44b88c2cfae7f7f817c566326",
      "parents": [
        "5d40e26201ed87ae8276a77e263b8cbe50598703"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 11 17:03:13 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Nov 12 09:12:17 2008 -0800"
      },
      "message": "Refactor part of GetUploadableBranches to lookup one specific branch\n\nThis way project.GetUploadableBranch(project.CurrentBranch) can tell\nus how (if at all) to upload the currently checked out branch.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "5d40e26201ed87ae8276a77e263b8cbe50598703",
      "tree": "3130b4b5db0466e07ed9fa4e7bb2383dc91954f6",
      "parents": [
        "70939e2f73bf118c89cf4af4988dba807c50a0ce"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Nov 06 11:07:42 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Nov 06 11:23:27 2008 -0800"
      },
      "message": "Treat missing attributes as None when parsing the manifest\n\nSome of our code assumes that a property is None.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "70939e2f73bf118c89cf4af4988dba807c50a0ce",
      "tree": "b1849b9a48572876b35cd621192cbb4c712e816e",
      "parents": [
        "ae6e0949d187c35d79dbc0b21788fdbb2c65bf78"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Nov 06 11:07:14 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Nov 06 11:23:08 2008 -0800"
      },
      "message": "Add \u003cadd-remote to-project\u003d\"...\"\u003e to inject additional remotes\n\nThis way users can add forks they know about to an existing project\nthat was already declared in the primary manifest.  This is mostly\nuseful with the Linux kernel project, where multiple forks is quite\ncommon for the main upstream tree (e.g. Linus\u0027 tree), a platform\narchitecture tree (e.g. ARM) and a device specific tree (e.g. the\nmsm7k tree used by Android).\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "ae6e0949d187c35d79dbc0b21788fdbb2c65bf78",
      "tree": "7a825c0e8cb24f0df512f62f4e44970026641dda",
      "parents": [
        "339ba9f6f70b1733f89a5ff89d5f155389a04094"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Nov 06 10:25:35 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Nov 06 11:23:06 2008 -0800"
      },
      "message": "Add \u003cremote project-name\u003d\"...\"\u003e attribute within projects\n\nBy setting a project-name on a remote nested within a project forks\nof a project like the Linux kernel can be easily handled by fetching\nall relevant forks into the same client side project under different\nremote names.  Developers can create branches off different remotes\nusing `git checkout --track -b $myname $remote/$branch` and later\n`repo upload` automatically redirects to the proper fork project\nin the code review server.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "339ba9f6f70b1733f89a5ff89d5f155389a04094",
      "tree": "be37abf6ef01588a1c894513a6febb651642b8db",
      "parents": [
        "70cd4ab2708eaae7d96d7e8b0a3f88850c163543"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Nov 06 09:52:51 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Nov 06 09:52:51 2008 -0800"
      },
      "message": "Use remote.*.projectname to indicate the target project for upload\n\nThis way \"forks\" of a project, e.g. the linux kernel, can be setup to\nuse different destination projects in the review server by creating\ndifferent remotes in the client side Git repository.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "70cd4ab2708eaae7d96d7e8b0a3f88850c163543",
      "tree": "fe973a5bbed05d4fb81019a3c43f7660ff89bc2b",
      "parents": [
        "e284ad1d1a2c6fa0e0ac800e87b2607f9bda339e"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Nov 06 08:48:44 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Nov 06 08:48:44 2008 -0800"
      },
      "message": "Add some short documentation about the local manifest\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": "3e5481999d5f853e19ee5caaaaa968fc4b5176ab",
      "tree": "fd6c97f1abd78525dc26b4eb2b8bc12027b7f93b",
      "parents": [
        "d3c388391e11aff0b26ecf19c8cb668a9629ef5a"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 04 11:19:36 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 04 11:19:36 2008 -0800"
      },
      "message": "Add a basic outline of the repo manifest file format\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "d3c388391e11aff0b26ecf19c8cb668a9629ef5a",
      "tree": "0b25adaa167e99f06fd38e1da8dea82c65252ae7",
      "parents": [
        "2450a2987afcf3d01a4d43fffe590b02880d9aa7"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 04 10:40:43 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 04 10:49:04 2008 -0800"
      },
      "message": "Update proto_client to notify the user when auth cookies are accessed\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "2450a2987afcf3d01a4d43fffe590b02880d9aa7",
      "tree": "adcfcf649c387da978bc1ddf22f0883ce984c679",
      "parents": [
        "f5c25a68d832f7eed55f939f97098071b20f753a"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 04 08:22:07 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 04 09:45:59 2008 -0800"
      },
      "message": "Assume the manifest branch matches the branch name in Git\n\nWhatever branch name we checked the manifest out from is the name\nwe want to reflect throughout the rest of the projects, e.g. within\nthe special \"m/\" remote space.\n\nThis reduces the difference between different branches within the\nmanifest file.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "f5c25a68d832f7eed55f939f97098071b20f753a",
      "tree": "981c72da9567548971a71e8b85d39b4ecfabb6a8",
      "parents": [
        "9fa44db94bfabcf43160316660801a2c1db2dbb9"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 04 08:11:53 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 04 09:45:59 2008 -0800"
      },
      "message": "Cleanup stale manifest migration code from manifest.py\n\nPrior to open-sourcing repo we had manifests in two different\nlayouts; one where the manifest was a straight-up git clone, and\none where the manifest was our bare repository with symlink work\ntree format (identical to what our projects use).  Only the latter\nform is created or used by repo at this point, so the transition\ncode to handle the straight-up git clone is not necessary.\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": "438ee1cad98ac32509718976e63c36a449bfb679",
      "tree": "9627a7fc84e5aab01a2ece8eae6c0ac045e20a46",
      "parents": [
        "23d7781c0bac53b24f4598104e8ba38310e8d100"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Nov 03 09:59:36 2008 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Nov 03 09:59:36 2008 -0800"
      },
      "message": "Catch symlink creation failures and report a better error\n\nSome users have noticed that repo doesn\u0027t work on VFAT, as we\nrequire a POSIX filesystem with POSIX symlink support.  Catching the\nOSError during our symlink creation and raising a GitError with a\nmore descriptive message will help users to troubleshoot and fix\ntheir own installation problems.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "23d7781c0bac53b24f4598104e8ba38310e8d100",
      "tree": "b3b7f729746c96225f12177c111b3429f2da86a4",
      "parents": [
        "a54c527ae941a3bbf8b3ec54249ab12c3d6bf78b"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Oct 30 11:06:57 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Oct 30 11:06:57 2008 -0700"
      },
      "message": "Don\u0027t print \"Already up-to-date\" during repo sync\n\nIf we are already up-to-date we just want to display no output.\nThis means we have to avoid calling \"git merge\" if there aren\u0027t\ncommits to be merged into the working directory.\n\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "a54c527ae941a3bbf8b3ec54249ab12c3d6bf78b",
      "tree": "ed70807cabe8bd010277cd0a1d976a3d726f5f70",
      "parents": [
        "df830f12389984adeeba04659615b9fc230f2db3"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Oct 30 11:03:00 2008 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Oct 30 11:03:00 2008 -0700"
      },
      "message": "Fast-forward a fully merged topic branch during \u0027repo sync\u0027\n\nInstead of trying to rebase the changes on a topic branch that\nhas been fully merged into the upstream branch we track, we should\njust fast-forward the topic branch to the new upstream revision.\nThis way the branch doesn\u0027t try to rewrite commits that are already\nmerged in the upstream.\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": "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"
    }
  ]
}
