)]}'
{
  "log": [
    {
      "commit": "ccd218cd8f6eeb4dab94b22cec6812d7abb7c814",
      "tree": "5897d64dbc22eb4c39c7a9f4cfaeb4a36200f33d",
      "parents": [
        "dd6542268a59834ecff573de974d788f11af775d"
      ],
      "author": {
        "name": "Kwanhong Lee",
        "email": "kwanhong.lee@windriver.com",
        "time": "Mon Feb 17 13:07:32 2014 +0900"
      },
      "committer": {
        "name": "Kwanhong Lee",
        "email": "kwanhong.lee@windriver.com",
        "time": "Thu Feb 20 11:07:23 2014 +0900"
      },
      "message": "Fix to mirror manifest when --mirror is given\n\nCommit 8d201 \"repo: Support multiple branches for the same project.\"\n(Change id is I5e2f4e1a7abb56f9d3f310fa6fd0c17019330ecd) caused missing\nmirroring manifest repository when \u0027repo sync\u0027 after \u0027repo init --mirror\u0027.\n\nWhen the function _AddMetaProjectMirror() is called to add two of\nmeta projects - git-repo itself and manifest repository to mirror,\nit didn\u0027t add them into self._paths which has list of projects to be\nsync\u0027ed by \u0027repo sync\u0027.\n\nIn addition, because member var of Project \u0027relpath\u0027 is used as a key\nof self._paths, it should be set with proper value other than None.\nSince this is only for meta projects which are not described in manifest\nxml, \u0027relpath\u0027 is name of the projects.\n\nChange-Id: Icc3b9e6739a78114ec70bf54fe645f79df972686\nSigned-off-by: Kwanhong Lee \u003ckwanhong.lee@windriver.com\u003e\n"
    },
    {
      "commit": "dd6542268a59834ecff573de974d788f11af775d",
      "tree": "e014028b17f04c230bb8de690d701c2b10a1d93e",
      "parents": [
        "baca5f7e88e07c86f402ae7423bb3171a33688e3"
      ],
      "author": {
        "name": "Julien Campergue",
        "email": "julien.campergue@parrot.com",
        "time": "Thu Jan 09 16:21:37 2014 +0100"
      },
      "committer": {
        "name": "Julien Campergue",
        "email": "julien.campergue@parrot.com",
        "time": "Mon Feb 17 11:20:11 2014 +0000"
      },
      "message": "Add the \"diffmanifests\" command\n\nThis command allows a deeper diff between two manifest projects.\nIn addition to changed projects, it displays the logs of the\ncommits between both revisions for each project.\n\nChange-Id: I86d30602cfbc654f8c84db2be5d8a30cb90f1398\nSigned-off-by: Julien Campergue \u003cjulien.campergue@parrot.com\u003e\n"
    },
    {
      "commit": "baca5f7e88e07c86f402ae7423bb3171a33688e3",
      "tree": "dbb0edae6f8d08c2314a5595ad59ec467faf7d54",
      "parents": [
        "565480588d2bff4205b437862505e77382189811",
        "1829101e285cf7956d045cf7a04a8adb7f4c0109"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon Feb 17 07:56:59 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 17 07:57:00 2014 +0000"
      },
      "message": "Merge \"Add error message for download -c conflicts\""
    },
    {
      "commit": "565480588d2bff4205b437862505e77382189811",
      "tree": "caf6d315bb10bcdbc10e84dfae62ab755bcaa014",
      "parents": [
        "1966133f8e82971f2e247a8579735a3b2f19301d"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Feb 11 18:44:58 2014 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Feb 12 09:11:00 2014 -0800"
      },
      "message": "Check for existence of refs upon initial fetch\n\nWhen we do an initial fetch and have not specified any branch etc,\nthe following fetch command will not error:\ngit fetch origin --tags +refs/heads/*:refs/remotes/origin/*\n\nIn this change we make sure something got fetched and if not we report\nan error.\n\nThis fixes the bug that occurs when we init using a bad manifest url and\nthen are unable to init again (because a manifest project has been\ninited with no manifest).\n\nChange-Id: I6f8aaefc83a1837beb10b1ac90bea96dc8e61156\n"
    },
    {
      "commit": "1829101e285cf7956d045cf7a04a8adb7f4c0109",
      "tree": "ab68a895f67489ee207b4cb340f7010d75c34bb0",
      "parents": [
        "1966133f8e82971f2e247a8579735a3b2f19301d"
      ],
      "author": {
        "name": "Rob Ward",
        "email": "robert.ward114@googlemail.com",
        "time": "Sun Feb 02 11:42:05 2014 +0000"
      },
      "committer": {
        "name": "Rob Ward",
        "email": "robert.ward114@googlemail.com",
        "time": "Tue Feb 11 18:19:04 2014 +0000"
      },
      "message": "Add error message for download -c conflicts\n\nCurrently if you run repo download -c on a change and the cherry-pick\nruns into a merge conflict a Traceback is produced:\n\nrob@rob-i5-lm ~/Programming/repo_test/repo1 $ repo download -c repo1 3/1\nFrom ssh://rob-i5-lm:29418/repo1\n * branch            refs/changes/03/3/1 -\u003e FETCH_HEAD\nerror: could not apply 0c8b474... 2\nhint: after resolving the conflicts, mark the corrected paths\nhint: with \u0027git add \u003cpaths\u003e\u0027 or \u0027git rm \u003cpaths\u003e\u0027\nhint: and commit the result with \u0027git commit\u0027\nTraceback (most recent call last):\n  File \"/home/rob/Programming/git-repo/main.py\", line 408, in \u003cmodule\u003e\n    _Main(sys.argv[1:])\n  File \"/home/rob/Programming/git-repo/main.py\", line 384, in _Main\n    result \u003d repo._Run(argv) or 0\n  File \"/home/rob/Programming/git-repo/main.py\", line 143, in _Run\n    result \u003d cmd.Execute(copts, cargs)\n  File \"/home/rob/Programming/git-repo/subcmds/download.py\", line 90, in Execute\n    project._CherryPick(dl.commit)\n  File \"/home/rob/Programming/git-repo/project.py\", line 1943, in _CherryPick\n    raise GitError(\u0027%s cherry-pick %s \u0027 % (self.name, rev))\nerror.GitError: repo1 cherry-pick 0c8b4740f876f8f8372bbaed430f02b6ba8b1898\n\nThis amount of error message is confusing to users and has the side effect\nof the git message telling you the actual issue being ignored.\n\nThis change introduces a message stating that the cherry-pick couldn\u0027t\nbe completed removing the Traceback.\n\nTo reproduce the issue create a change that causes a conflict with one currently\nin review and use repo download -c to cherry-pick the conflicting change.\n\nChange-Id: I8ddf4e0c8ad9bd04b1af5360313f67cc053f7d6a\n"
    },
    {
      "commit": "1966133f8e82971f2e247a8579735a3b2f19301d",
      "tree": "c136d423bef7583d2c096cee0fe33d46ff3eb67c",
      "parents": [
        "f1027e23b4e59e6d67899562bbd24d3d0d82a9fc",
        "2cd38a0bf83cc7c7cc5eb59dffc3d7868cf6d452"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Feb 10 22:42:30 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 10 22:42:31 2014 +0000"
      },
      "message": "Merge \"Stop appending \u0027p/\u0027 to review urls\""
    },
    {
      "commit": "f1027e23b4e59e6d67899562bbd24d3d0d82a9fc",
      "tree": "db0de3353de1a92af0c3439c4dd58302d58f6e01",
      "parents": [
        "1b46cc9b6d366a34a37dd475730574979ff9b739",
        "1242e60bdd250dd31f49a181dd326af96427f300"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Feb 05 00:58:52 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 05 00:58:53 2014 +0000"
      },
      "message": "Merge \"Implement Kerberos HTTP authentication handler\""
    },
    {
      "commit": "2cd38a0bf83cc7c7cc5eb59dffc3d7868cf6d452",
      "tree": "4f66b6832b19d1998d994fae2a65af1203e45477",
      "parents": [
        "1b46cc9b6d366a34a37dd475730574979ff9b739"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Feb 04 15:32:29 2014 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Feb 04 15:32:29 2014 -0800"
      },
      "message": "Stop appending \u0027p/\u0027 to review urls\n\nGerrit no longer requires \u0027p/\u0027, and this causes unexpected behavior.\nIn this change we stop appending \u0027p/\u0027 to the urls.\n\nChange-Id: I72c13bf838f4112086141959fb1af249f9213ce6\n"
    },
    {
      "commit": "1b46cc9b6d366a34a37dd475730574979ff9b739",
      "tree": "45d1ba1152bd4cc49929bce9d05d8dd097442ca7",
      "parents": [
        "2d0f508648a1e7c073bc897b645a43ee37ff2a40",
        "143d8a72495a17f8f2454fffdcc4d2599709fec5"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Feb 04 21:19:07 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 04 21:19:07 2014 +0000"
      },
      "message": "Merge \"Changes to support sso: repositories for upload\""
    },
    {
      "commit": "1242e60bdd250dd31f49a181dd326af96427f300",
      "tree": "2763d80fb63960c934965606ea2e436e6cfd8777",
      "parents": [
        "5db69f3f6616ea199a7840f0602b988f8d5504b9"
      ],
      "author": {
        "name": "Carlos Aguado",
        "email": "caguadosa@gmail.com",
        "time": "Mon Feb 03 13:48:47 2014 +0100"
      },
      "committer": {
        "name": "Carlos Aguado",
        "email": "caguadosa@gmail.com",
        "time": "Tue Feb 04 09:22:42 2014 +0100"
      },
      "message": "Implement Kerberos HTTP authentication handler\n\nThis commit implements a Kerberos HTTP authentication handler. It\nuses credentials from a local cache to perform an HTTP authentication\nnegotiation using the GSSAPI.\n\nThe purpose of this handler is to allow the use Kerberos authentication\nto access review endpoints without the need to transmit the user\npassword.\n\nChange-Id: Id2c3fc91a58b15a3e83e4bd9ca87203fa3d647c8\n"
    },
    {
      "commit": "2d0f508648a1e7c073bc897b645a43ee37ff2a40",
      "tree": "3733b3c81b59e0bb5e3c93770233476f2ff2bb73",
      "parents": [
        "5db69f3f6616ea199a7840f0602b988f8d5504b9"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Jan 31 15:03:51 2014 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Jan 31 16:06:31 2014 -0800"
      },
      "message": "Fix persistent-https relative url resolving\n\nPreviously, we would remove \u0027persistent-\u0027 then tack it on at the end\nif it had been previously found.  However, this would ignore urljoin\u0027s\ndecision on whether or not the second path was relative.  Instead, we\nwere always assuming it was relative and that we didn\u0027t want to use\na different absolute url with a different protocol.\n\nThis change handles persistent-https:// in the same way we handled the\nabsense of an explicit protocol.  The only difference is that this time\ninstead of temporarily replacing it with \u0027gopher://\u0027, we use \u0027wais://\u0027.\n\nChange-Id: I6e8ad1eb4b911931a991481717f1ade01315db2a\n"
    },
    {
      "commit": "143d8a72495a17f8f2454fffdcc4d2599709fec5",
      "tree": "275c993143ac9f8cc0f354be84f1cfbd49e37571",
      "parents": [
        "5db69f3f6616ea199a7840f0602b988f8d5504b9"
      ],
      "author": {
        "name": "Steve Pucci",
        "email": "spucci@google.com",
        "time": "Thu Jan 30 09:45:53 2014 -0800"
      },
      "committer": {
        "name": "Steve Pucci",
        "email": "spucci@google.com",
        "time": "Fri Jan 31 07:39:44 2014 -0800"
      },
      "message": "Changes to support sso: repositories for upload\n\nChange-Id: Iddf90d52f700a1f6462abe76d4f4a367ebb6d603\n"
    },
    {
      "commit": "5db69f3f6616ea199a7840f0602b988f8d5504b9",
      "tree": "cdf4cacdba2b88edc5605161cba4db2903e4d719",
      "parents": [
        "ff0a3c8f80339960623acf76ec2bb6c1ad61c352"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Jan 30 16:00:35 2014 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Jan 30 16:00:35 2014 -0800"
      },
      "message": "Update the version number on the repo launcher\n\nThe repo launcher version needs to be updated so some users can take\nadvantage of the more robust version number parsing.\n\nChange-Id: Ibcd8036363311528db82db2b252357ffd21eb59b\n"
    },
    {
      "commit": "ff0a3c8f80339960623acf76ec2bb6c1ad61c352",
      "tree": "da428ef023417f9716f6aa6ce980a7777ed1d78c",
      "parents": [
        "094cdbe090a18c35fdcfb463435d793cc0239e83"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Jan 30 14:46:03 2014 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Jan 30 15:18:56 2014 -0800"
      },
      "message": "Share git version parsing code with wrapper module\n\n\u0027repo\u0027 and \u0027git_command.py\u0027 had their own git version parsing code.\nThis change shares that code between the modules.  DRY is good.\n\nChange-Id: Ic896d2dc08353644bd4ced57e15a91284d97d54a\n"
    },
    {
      "commit": "094cdbe090a18c35fdcfb463435d793cc0239e83",
      "tree": "e664b3febe4d8da1161b9e8e8ecc3a825b42aaa1",
      "parents": [
        "148a84de0ca7f828564f80cbe2bace33f295e65f"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Jan 30 15:09:59 2014 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Jan 30 15:17:09 2014 -0800"
      },
      "message": "Add wrapper module\n\nThis takes the wrapper importing code from main.py and moves it into\nits own module so that other modules may import it without causing\ncircular imports with main.py.\n\nChange-Id: I9402950573933ed6f14ce0bfb600f74f32727705\n"
    },
    {
      "commit": "148a84de0ca7f828564f80cbe2bace33f295e65f",
      "tree": "26d6a66127019a80a952f2d5b0574d59a8c71be3",
      "parents": [
        "1c5da49e6c0c2dd6a5f0ba6e5b57ecb783c27eea"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Jan 30 13:53:55 2014 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Jan 30 13:53:55 2014 -0800"
      },
      "message": "Respect version hyphenation\n\nThe last change regarding version parsing lost handling of version\nhyphenation, this restores that.  In otherwords,\n1.1.1-otherstuff is parsed as (1,1,1) instead of (1,1,0)\n\nChange-Id: I3753944e92095606653835ed2bd090b9301c7194\n"
    },
    {
      "commit": "1c5da49e6c0c2dd6a5f0ba6e5b57ecb783c27eea",
      "tree": "e2969c9777a1bf3227c1a49165eb1b16cb55eff8",
      "parents": [
        "b8433dfd2f078617b724e4dc4f709330cc90f1e7"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Jan 30 13:09:08 2014 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Jan 30 13:26:50 2014 -0800"
      },
      "message": "Handle release candidates in git version parsing\n\nRight now repo chokes on git versions like \"1.9.rc1\".  This change\ntreats \u0027rc*\u0027 as a \u00270\u0027.\n\nChange-Id: I612b7b431675ba7415bf70640a673e48dbb00a90\n"
    },
    {
      "commit": "b8433dfd2f078617b724e4dc4f709330cc90f1e7",
      "tree": "8fe84460fcde55ed6d37d54d3ffab3116263134b",
      "parents": [
        "f2fe2d9b865f0122589d329d356644a80233c770"
      ],
      "author": {
        "name": "David James",
        "email": "davidjames@google.com",
        "time": "Thu Jan 30 10:11:17 2014 -0800"
      },
      "committer": {
        "name": "David James",
        "email": "davidjames@google.com",
        "time": "Thu Jan 30 10:14:54 2014 -0800"
      },
      "message": "repo: Fix \u0027remove-project\u0027 regression with multiple projects.\n\nIn CL:50715, I updated repo to handle multiple projects, but the\nremove-projects code path was not updated accordingly. Update it.\n\nChange-Id: Icd681d45ce857467b584bca0d2fdcbf24ec6e8db\n"
    },
    {
      "commit": "f2fe2d9b865f0122589d329d356644a80233c770",
      "tree": "5c111489118204fbef44bf065b854e84ded390dc",
      "parents": [
        "c9877c7cf677bc3db18e9003271dfd72383aa9f7"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Jan 29 13:53:43 2014 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Jan 29 13:57:22 2014 -0800"
      },
      "message": "Properly iterate through values\n\nthe value of Manifest.projects has changed from being the dictionary\nto the values of the dictionary.  Here we handle this change\ncorrectly on a PostRepoUpgrade.\n\nFrom a `git diff v1.12.7 -- manifest_xml.py`:\n+  @property\n   def projects(self):\n     self._Load()\n-    return self._projects\n+    return self._paths.values()\n\nself._paths does contain the projects according to this line of\nmanifest_xml.py:\n484      self._paths[project.relpath] \u003d project\n\nChange-Id: I141f8d5468ee10dfb08f99ba434004a307fed810\n"
    },
    {
      "commit": "c9877c7cf677bc3db18e9003271dfd72383aa9f7",
      "tree": "2fe37c556e7c92d8e7a0809ad3ec3a8242e3b750",
      "parents": [
        "f1f1137d619dfffe23fd15b8754d067fe1e353b8",
        "69e04d89538e4a253efe7d9f4fd1f1ae70f8f62c"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Jan 29 21:12:33 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 29 21:12:34 2014 +0000"
      },
      "message": "Merge \"Only fetch current branch on shallow clients\""
    },
    {
      "commit": "69e04d89538e4a253efe7d9f4fd1f1ae70f8f62c",
      "tree": "c6149053b8bf088bd751eee7118568cc64103e97",
      "parents": [
        "12fd10c20115046dcd2fbe468a45e566f38ffbc9"
      ],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Wed Jan 29 12:48:54 2014 -0800"
      },
      "committer": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Wed Jan 29 12:48:54 2014 -0800"
      },
      "message": "Only fetch current branch on shallow clients\n\nFetching a new branch on a shallow client may download the entire\nproject history, as the depth parameter is not passed to git\nfetch. Force the fetch to only download the current branch.\n\nChange-Id: Ie17ce8eb5e3487c24d90b2cae8227319dea482c8\n"
    },
    {
      "commit": "f1f1137d619dfffe23fd15b8754d067fe1e353b8",
      "tree": "60f10a782ac29a83c64f71ce41db9baa9d1d93d6",
      "parents": [
        "f77ef2edb097280d39b420655bcc465bfb73de3c",
        "011d4f426c21a745387e62e6d67ddd73cd6ef44e"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Jan 14 00:41:35 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 14 00:41:35 2014 +0000"
      },
      "message": "Merge \"Don\u0027t backtrace when current branch is not uploadable.\""
    },
    {
      "commit": "f77ef2edb097280d39b420655bcc465bfb73de3c",
      "tree": "04286247ef05e980095dfd3c05ee467c3ddb3dda",
      "parents": [
        "e695338e21080d3cbe20935db572e4cd0c7a620c",
        "719757d6a8670660c3c7d2490457ff7064241422"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Jan 10 02:50:52 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 10 02:50:53 2014 +0000"
      },
      "message": "Merge \"hooks/pre-auto-gc: fix AC detection on OSX Maverick\""
    },
    {
      "commit": "e695338e21080d3cbe20935db572e4cd0c7a620c",
      "tree": "cc525f53929fa4ea24f108d24545c68c7c6cb5ba",
      "parents": [
        "bd80f7eedd5a74f6c5fad745091dcda53a6415bf",
        "8d20116038ff78b22069dd4e993b5819775f03d1"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Jan 10 01:20:12 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 10 01:20:13 2014 +0000"
      },
      "message": "Merge \"repo: Support multiple branches for the same project.\""
    },
    {
      "commit": "bd80f7eedd5a74f6c5fad745091dcda53a6415bf",
      "tree": "102f5d2113a84288ca86cbda42473af32f70b3e1",
      "parents": [
        "bf79c6618e4f51467e1d8e73915a541df660a060",
        "672cc499b9dce9c18ecd9dfc81fd18094535dc49"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Jan 09 02:11:09 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 09 02:11:10 2014 +0000"
      },
      "message": "Merge \"Canonicalize project hooks path before use\""
    },
    {
      "commit": "bf79c6618e4f51467e1d8e73915a541df660a060",
      "tree": "0a27f673b1bccdd9fac1478e078dedd4a629aa7a",
      "parents": [
        "f045d49a71b64b854589c8821d8bf220c6ed9fd3"
      ],
      "author": {
        "name": "David James",
        "email": "davidjames@google.com",
        "time": "Thu Dec 26 14:20:13 2013 -0800"
      },
      "committer": {
        "name": "David James",
        "email": "davidjames@google.com",
        "time": "Thu Dec 26 14:59:00 2013 -0800"
      },
      "message": "Fix os.mkdir race condition.\n\nThis code checks whether a dir exists before creating it. In between the\ncheck and the mkdir call, it is possible that another process will have\ncreated the directory. We have seen this bug occur many times in\npractice during our \u0027repo init\u0027 tests.\n\nChange-Id: Ia47d39955739aa38fd303f4e90be7b4c50d9d4ba\n"
    },
    {
      "commit": "f045d49a71b64b854589c8821d8bf220c6ed9fd3",
      "tree": "b4facc31b41327b5478b12e9213b4f4179ebb171",
      "parents": [
        "53d6a7b8955e9377cc0a12206be357e7936621b1",
        "335f5ef4ad25a85c69fe6d8c848c5d1d447e22c8"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Dec 18 17:44:58 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 18 17:44:59 2013 +0000"
      },
      "message": "Merge \"Add --archive option to init to sync using git archive\""
    },
    {
      "commit": "719757d6a8670660c3c7d2490457ff7064241422",
      "tree": "0b8eb0af9d5e096ecfb2487a133dedd86015a2d1",
      "parents": [
        "53d6a7b8955e9377cc0a12206be357e7936621b1"
      ],
      "author": {
        "name": "Pawit Pornkitprasan",
        "email": "p.pawit@gmail.com",
        "time": "Tue Dec 17 09:43:27 2013 +0700"
      },
      "committer": {
        "name": "Pawit Pornkitprasan",
        "email": "p.pawit@gmail.com",
        "time": "Tue Dec 17 09:48:20 2013 +0700"
      },
      "message": "hooks/pre-auto-gc: fix AC detection on OSX Maverick\n\nThe output of pmset has been changed to \"Now drawing from \u0027AC Power\u0027\"\n\nChange-Id: Id425d3bcd6a28656736a6d2c3096623a3ec053cc\n"
    },
    {
      "commit": "011d4f426c21a745387e62e6d67ddd73cd6ef44e",
      "tree": "a2f54bbc268e84c7207f1aa87110c7db1c8a548d",
      "parents": [
        "53d6a7b8955e9377cc0a12206be357e7936621b1"
      ],
      "author": {
        "name": "Warren Turkal",
        "email": "wt@ooyala.com",
        "time": "Wed Nov 27 16:20:57 2013 -0800"
      },
      "committer": {
        "name": "Warren Turkal",
        "email": "wt@ooyala.com",
        "time": "Wed Dec 11 23:24:01 2013 -0800"
      },
      "message": "Don\u0027t backtrace when current branch is not uploadable.\n\nThe backtrace currently occurs when one uses the \"--cbr\" argument with\nthe repo upload subcommand if the current branch is not tracking an\nupstream branch. There may be other cases that would backtrace as well,\nbut this is the only one I found so far.\n\nChange-Id: Ie712fbb0ce3e7fe3b72769fca89cc4c0e3d2fce0\n"
    },
    {
      "commit": "53d6a7b8955e9377cc0a12206be357e7936621b1",
      "tree": "1a7728eff318e82dd3dd3f06c6d927712fc789e5",
      "parents": [
        "61df418c599a0359b33b8a65a12660023fc37a2a"
      ],
      "author": {
        "name": "Warren Turkal",
        "email": "wt@ooyala.com",
        "time": "Tue Dec 10 15:30:03 2013 -0800"
      },
      "committer": {
        "name": "Warren Turkal",
        "email": "wt@ooyala.com",
        "time": "Tue Dec 10 15:30:03 2013 -0800"
      },
      "message": "Fix error in xml manifest doc.\n\nThe docs on the annotations say that zero or more may exist as a child\nof a project, so that means that a \"*\" instead of a \"?\" should be used.\n\nChange-Id: Iff855d003dfb05cd980f285a237332914e1dad70\n"
    },
    {
      "commit": "335f5ef4ad25a85c69fe6d8c848c5d1d447e22c8",
      "tree": "6a64a34ce5063d8d255c7840e167db2484e68c9a",
      "parents": [
        "61df418c599a0359b33b8a65a12660023fc37a2a"
      ],
      "author": {
        "name": "Julien Campergue",
        "email": "julien.campergue@parrot.com",
        "time": "Wed Oct 16 11:02:35 2013 +0200"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Dec 10 08:27:07 2013 +0000"
      },
      "message": "Add --archive option to init to sync using git archive\n\nThis significantly reduces sync time and used brandwidth as only\na tar of each project\u0027s revision is checked out, but git is not\naccessible from projects anymore.\n\nThis is relevant when git is not needed in projects but sync\nspeed/brandwidth may be important like on CI servers when building\nseveral versions from scratch regularly for example.\n\nArchive is not supported over http/https.\n\nChange-Id: I48c3c7de2cd5a1faec33e295fcdafbc7807d0e4d\nSigned-off-by: Julien Campergue \u003cjulien.campergue@parrot.com\u003e\n"
    },
    {
      "commit": "672cc499b9dce9c18ecd9dfc81fd18094535dc49",
      "tree": "fabd598df21d7062baec16bf66a1fca505a968f7",
      "parents": [
        "4534120628a8e3a7f82063757bbcb02107dd14d8"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Wed Nov 27 11:17:13 2013 -0800"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Tue Dec 03 09:02:16 2013 -0800"
      },
      "message": "Canonicalize project hooks path before use\n\nIf the top-level .repo directory is moved somewhere else (e.g. a\ndifferent drive) and replaced with a symlink, _InitHooks() will create\nbroken symlinks. Resolving symlinks before computing the relative path\nfor the symlink keeps the path within the repo tree, so the tree can\nbe moved anywhere.\n\nChange-Id: Ifa5c07869e3477186ddd2c255c6c607f547bc1fe\n"
    },
    {
      "commit": "61df418c599a0359b33b8a65a12660023fc37a2a",
      "tree": "854d4d6d52d50ed765c11eca281e74b5b1a8d3b8",
      "parents": [
        "4534120628a8e3a7f82063757bbcb02107dd14d8"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Nov 29 19:17:23 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Nov 29 19:17:23 2013 +0900"
      },
      "message": "Update the commit-msg hook to the version from Gerrit 2.6\n\nChange-Id: Iaf21ba8d2ceea58973dbc56f0b4ece54500cd997\n"
    },
    {
      "commit": "4534120628a8e3a7f82063757bbcb02107dd14d8",
      "tree": "00a2db8cd8e57988a060ef76b0e5ceac54ab8709",
      "parents": [
        "cbc0798f67b56b96f2bb6eac701b019d9bfd5e19",
        "5d6cb80b8fb67f287c2f2401c55b340b3ac2fd93"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Nov 22 10:25:34 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 22 10:25:35 2013 +0000"
      },
      "message": "Merge \"Allow using repo with python3\""
    },
    {
      "commit": "cbc0798f67b56b96f2bb6eac701b019d9bfd5e19",
      "tree": "eab6ab897c7a87ae493767830d5de8d5354f65e1",
      "parents": [
        "d5a5b19efd2291914bcb861d527ae74e620a9d37"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Nov 21 10:38:03 2013 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Nov 21 10:38:03 2013 -0800"
      },
      "message": "Fix print of git-remote-persistent-https error\n\nIf git-remote-persistent-https fails, we use an iter() and then\nsubsequently a .read() on stderr.  Python doesn\u0027t like this and\ngives the following error message:\nValueError: Mixing iteration and read methods would lose data\n\nThis change removes the use of iter() to avoid the issue.\n\nChange-Id: I980659b83229e2a559c20dcc7b116f8d2476abd5\n"
    },
    {
      "commit": "d5a5b19efd2291914bcb861d527ae74e620a9d37",
      "tree": "9a1f10516792d6973449cab97f1f28ccfd655e7a",
      "parents": [
        "0eb35cbe5096128e4a760aca6842ecdbea5baf1a"
      ],
      "author": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Thu Nov 21 19:15:30 2013 +0530"
      },
      "committer": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Thu Nov 21 19:16:08 2013 +0530"
      },
      "message": "Remove trailing whitespace\n\nChange-Id: I56bcb559431277d40070fa33c580c6c3525ff9bc\n"
    },
    {
      "commit": "5d6cb80b8fb67f287c2f2401c55b340b3ac2fd93",
      "tree": "e14009287b8cf5612beb2076ebfbb747ec42b52f",
      "parents": [
        "0eb35cbe5096128e4a760aca6842ecdbea5baf1a"
      ],
      "author": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Thu Nov 21 13:42:39 2013 +0530"
      },
      "committer": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Thu Nov 21 18:44:52 2013 +0530"
      },
      "message": "Allow using repo with python3\n\n* Switching from python2 to python3 in the same workspace isn\u0027t\n  currently supported, due to a change in the pickle version (which\n  isn\u0027t supported by python2)\n* Basic functionality does work with python3, however not everything\n  is expected to\n\nChange-Id: I4256b5a9861562d0260b503f972c1569190182aa\n"
    },
    {
      "commit": "0eb35cbe5096128e4a760aca6842ecdbea5baf1a",
      "tree": "6134f979145140346b3eeeacfd12cbd6572f32d3",
      "parents": [
        "ce201a5311c2fe90dce479ee12c078cd26ccc0c4"
      ],
      "author": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Tue Nov 19 18:46:29 2013 +0530"
      },
      "committer": {
        "name": "Chirayu Desai",
        "email": "chirayudesai1@gmail.com",
        "time": "Thu Nov 21 06:03:22 2013 +0000"
      },
      "message": "Fix some python3 encoding issues\n\n* Add .decode(\u0027utf-8\u0027) where needed\n* Add \u0027b\u0027 to `open` where needed, and remove where unnecessary\n\nChange-Id: I0f03ecf9ed1a78e3b2f15f9469deb9aaab698657"
    },
    {
      "commit": "ce201a5311c2fe90dce479ee12c078cd26ccc0c4",
      "tree": "df5cde7fb813c47ff5c488d62fce1e92900db871",
      "parents": [
        "12fd10c20115046dcd2fbe468a45e566f38ffbc9"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Oct 16 14:42:42 2013 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Oct 16 14:42:42 2013 -0700"
      },
      "message": "Fix a small whitespace consistency issue\n\nChange-Id: Ie98c79833ca5e7ef71666489135f7491223f779c\n"
    },
    {
      "commit": "12fd10c20115046dcd2fbe468a45e566f38ffbc9",
      "tree": "071b7878cdcf5ff17b094c8158cf0654efbba1fd",
      "parents": [
        "fbd3f2a10bf4ddd1f001543c6262c6866a84f0a1",
        "a17d7af4d9dd9165935a26a9971faed2c05bc278"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Oct 16 21:41:33 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 16 21:41:33 2013 +0000"
      },
      "message": "Merge \"Dan\u0027t accessing attr of None (`manifest` subcmd)\""
    },
    {
      "commit": "a17d7af4d9dd9165935a26a9971faed2c05bc278",
      "tree": "0ce989ff6a876bf78100f00bbf0ed9d6f1e1830e",
      "parents": [
        "37128b6f709410763f85d112a1a3e6f9e42e1338"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Oct 16 14:38:09 2013 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Oct 16 14:38:09 2013 -0700"
      },
      "message": "Dan\u0027t accessing attr of None (`manifest` subcmd)\n\nIf d.remote is None, this code failed for obvious reasons.  This is a\nsimple fix.\n\nChange-Id: I413756121e444111f1e3c7dc8bc8032467946c13\n"
    },
    {
      "commit": "fbd3f2a10bf4ddd1f001543c6262c6866a84f0a1",
      "tree": "998e83b44047d48430711b3a918905a2b04dd45b",
      "parents": [
        "37128b6f709410763f85d112a1a3e6f9e42e1338"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Oct 15 12:59:00 2013 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Oct 15 12:59:00 2013 -0700"
      },
      "message": "Only check merge destination if it isn\u0027t None\n\nChange-Id: Ifb1dcd07142933489e93a1f4f03e38289087b609\n"
    },
    {
      "commit": "37128b6f709410763f85d112a1a3e6f9e42e1338",
      "tree": "b87eceeed61ef08a77e6ded4989ad46cff2ce0b0",
      "parents": [
        "143b4cc992b3602b56f1904c4a030a933b01ccc1"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Oct 15 10:48:40 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Oct 15 10:48:40 2013 +0900"
      },
      "message": "Fix indentation\n\ngit-repo uses 2 space indentation.  A couple of recent changes\nintroduced 4 space indentation in some modules.\n\nChange-Id: Ia4250157c1824c1b5e7d555068c4608f995be9da\n"
    },
    {
      "commit": "143b4cc992b3602b56f1904c4a030a933b01ccc1",
      "tree": "7f2835fb313998e33394aad72dbe05b72a4204b7",
      "parents": [
        "53263d873d16220d3b77302dc98cc35c4a5558ef",
        "7487992bd33d5cbf314d234c13a085c56200b33e"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Oct 15 01:40:07 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 15 01:40:08 2013 +0000"
      },
      "message": "Merge \"Better handling of duplicate default\""
    },
    {
      "commit": "8d20116038ff78b22069dd4e993b5819775f03d1",
      "tree": "4c7ec381f2452d3ae4ed5332230a8d7a61e6ec2b",
      "parents": [
        "b25ea555c39cd500740acb74fa9f1dab71588266"
      ],
      "author": {
        "name": "David James",
        "email": "davidjames@google.com",
        "time": "Fri Oct 11 17:03:19 2013 -0700"
      },
      "committer": {
        "name": "David James",
        "email": "davidjames@google.com",
        "time": "Mon Oct 14 15:34:32 2013 -0700"
      },
      "message": "repo: Support multiple branches for the same project.\n\nIt is often useful to be able to include the same project more than\nonce, but with different branches and placed in different paths in the\nworkspace. Add this feature.\n\nThis CL adds the concept of an object directory. The object directory\nstores objects that can be shared amongst several working trees. For\nnewly synced repositories, we set up the git repo now to share its\nobjects with an object repo.\n\nEach worktree for a given repo shares objects, but has an independent\nset of references and branches. This ensures that repo only has to\nupdate the objects once; however the references for each worktree are\nupdated separately. Storing the references separately is needed to\nensure that commits to a branch on one worktree will not change the\nHEAD commits of the others.\n\nOne nice side effect of sharing objects between different worktrees is\nthat you can easily cherry-pick changes between the two worktrees\nwithout needing to fetch them.\n\nBug: Issue 141\nChange-Id: I5e2f4e1a7abb56f9d3f310fa6fd0c17019330ecd\n"
    },
    {
      "commit": "53263d873d16220d3b77302dc98cc35c4a5558ef",
      "tree": "7391f540301bdc112ae88f04cfe49a3f378f274d",
      "parents": [
        "b25ea555c39cd500740acb74fa9f1dab71588266",
        "3a2a59eb87b58a4b5a26349434db322846cb6b57"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Oct 10 18:42:59 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 10 18:42:59 2013 +0000"
      },
      "message": "Merge \"repo: use explicit Python executable to run main.py\""
    },
    {
      "commit": "7487992bd33d5cbf314d234c13a085c56200b33e",
      "tree": "51cace1031fb93f10ae6fe2c7dc0bc4e897539ab",
      "parents": [
        "e76efdd7b342577c40aa271fa5ded9d66a783a9b"
      ],
      "author": {
        "name": "Julien Campergue",
        "email": "julien.campergue@parrot.com",
        "time": "Wed Oct 09 14:38:46 2013 +0200"
      },
      "committer": {
        "name": "Julien Campergue",
        "email": "julien.campergue@parrot.com",
        "time": "Thu Oct 10 18:14:27 2013 +0200"
      },
      "message": "Better handling of duplicate default\n\nCurrently, an error is raised if more than one default is defined.\n\nWhen including another manifest, it is likely that a default has\nbeen defined in both manifests.\n\nDon\u0027t raise an error if all the defaults defined have the same\nattributes.\n\nChange-Id: I2603020687e2ba04c2c62c3268ee375279b34a08\nSigned-off-by: Julien Campergue \u003cjulien.campergue@parrot.com\u003e\n"
    },
    {
      "commit": "b25ea555c39cd500740acb74fa9f1dab71588266",
      "tree": "582f1552132c86f08b8934d81b59a8d743619cd7",
      "parents": [
        "3bfd72158c11583213037ddfe5224c2038288383",
        "1e7ab2a63f7ec53aa649015dff8d46ad2501d993"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Oct 10 16:08:42 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 10 16:08:42 2013 +0000"
      },
      "message": "Merge \"Respect remote aliases\""
    },
    {
      "commit": "3bfd72158c11583213037ddfe5224c2038288383",
      "tree": "7065b7e5d905aac5e1474c2b2069629a0d52c86e",
      "parents": [
        "59b31cb6e02b68450f2a5f96bdeffc2a7452d98c"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Sep 30 15:54:38 2013 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Oct 10 09:06:38 2013 -0700"
      },
      "message": "Don\u0027t upload when dest branch is not merge branch\n\nExample:\n- `repo init -b master` / sync a project\n- In one project: `git checkout -b work origin/branch-thats-not-master`\n- make some changes, `git commit`\n- `repo upload .`\n- Upload will now be skipped with a warning instead of being uploaded to\n  master\n\nChange-Id: I990b36217b75fe3c8b4d776e7fefa1c7d9ab7282\n"
    },
    {
      "commit": "59b31cb6e02b68450f2a5f96bdeffc2a7452d98c",
      "tree": "fa64d25f4b75ac03909a0fc90dddcc4d232c6627",
      "parents": [
        "e76efdd7b342577c40aa271fa5ded9d66a783a9b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Oct 08 23:10:52 2013 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Oct 08 23:14:29 2013 -0700"
      },
      "message": "don\u0027t pass project revision to UploadForReview\n\nPassing a project revisionExpr to UploadForReview will cause it to\ntry to push to refs/for/\u003csha\u003e if the revision points to a sha\ninstead of a branch.  Pass None for dest_branch if no destination\nbranch has been specified, which will cause UploadForReview to\nupload to the merge branch.\n\nThere is room for further improvement, the user prompts will\nstill print \"Upload project \u003cproject\u003e to remote branch \u003csha\u003e\",\nand then upload to the merge branch and not the sha, but that\nis the same behavior that was in 1.12.2.\n\nChange-Id: I06c510336ae67ff7e68b5b69e929693179d15c0b\n"
    },
    {
      "commit": "1e7ab2a63f7ec53aa649015dff8d46ad2501d993",
      "tree": "511ced99493616dc55231a95885f670407becd3a",
      "parents": [
        "e76efdd7b342577c40aa271fa5ded9d66a783a9b"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Oct 08 17:26:57 2013 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Oct 08 17:26:57 2013 -0700"
      },
      "message": "Respect remote aliases\n\nPreviously, change I7150e449341ed8655d398956a095261978d95870\nhad broken alias support in order to fix the manifest command to keep\nit from spitting projects that point to an alias that wasn\u0027t recorded.\nThis commit reverts that commit and instead solves the issue more\ncorrectly, outputting the alias in the remote node of the manifest and\nrespecting that alias when outputting the list of projects.\n\nChange-Id: I941fc4adb7121d2e61cedc5838e80d3918c977c3\n"
    },
    {
      "commit": "e76efdd7b342577c40aa271fa5ded9d66a783a9b",
      "tree": "0dbd051a05bd41dabe8ad110d14f7e4f7a62f9dc",
      "parents": [
        "730ce4c3c2128b489176513253c1f30b378c694c",
        "edd0151a2682bac1dfd27aae1f66e58d40dcf0a8"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Sep 27 17:28:44 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 27 17:28:45 2013 +0000"
      },
      "message": "Merge \"Accept all UTF-8 committer names\""
    },
    {
      "commit": "730ce4c3c2128b489176513253c1f30b378c694c",
      "tree": "05a4bb374c18199cbe5a0d2f4f24644a21a332fc",
      "parents": [
        "745a39ba3dca7699ac057887e79deeb47e2bf8a5",
        "5e0ee145759b4a197bea347ad77e1ad1609efd32"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Sep 27 17:28:07 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 27 17:28:08 2013 +0000"
      },
      "message": "Merge \"Do not use print_function from __future__\""
    },
    {
      "commit": "745a39ba3dca7699ac057887e79deeb47e2bf8a5",
      "tree": "03681b89e5e20230249468002e208622eb92a02e",
      "parents": [
        "efc986c5081fc9a504b698672d955300a99f24bb"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Jun 05 13:16:18 2013 -0700"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Sep 27 19:15:34 2013 +0900"
      },
      "message": "Assume http upload if ssh_info cannot be parsed\n\nWhen uploading a change for review, we sometimes request /ssh_info to\nget the correct port number for uploading via ssh (regardless of\nwhether or not we intend to upload over ssh).\n\nIf we have trouble accessing /ssh_info (for authentication reasons,\netc), we now press on under the assumption that we will upload via http\ninstead of aborting.\n\nChange-Id: Ica6bbeac1279e89424a903529649b7f4af0b6937\n"
    },
    {
      "commit": "efc986c5081fc9a504b698672d955300a99f24bb",
      "tree": "8aa6ca5b14668fac22bdbc0230fc092ca2f6d71a",
      "parents": [
        "70df18944a667329ec894a1df1e77381c5b0c09a",
        "351fe2c793437e1d8a0b222f8478c74cf60ae034"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Sep 27 02:24:39 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 27 02:24:39 2013 +0000"
      },
      "message": "Merge changes I4b77af22,Ib5bc2de5\n\n* changes:\n  Sync: Improved error message when manifest server RPC call fails\n  Sync: Print name of manifest server used for smart sync/smart tag\n"
    },
    {
      "commit": "edd0151a2682bac1dfd27aae1f66e58d40dcf0a8",
      "tree": "222d256eed627946f07faf185db20d705cb8a790",
      "parents": [
        "70df18944a667329ec894a1df1e77381c5b0c09a"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Sep 26 12:59:58 2013 -0700"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Sep 27 00:35:35 2013 +0000"
      },
      "message": "Accept all UTF-8 committer names\n\nChange-Id: I7d9d49a8bacf2dc332614d26cdfcc905be7a5290\n"
    },
    {
      "commit": "5e0ee145759b4a197bea347ad77e1ad1609efd32",
      "tree": "d02a14fc378797d50140fb80f22c6e0e88d5544c",
      "parents": [
        "70df18944a667329ec894a1df1e77381c5b0c09a"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Sep 26 15:50:49 2013 -0700"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Sep 27 09:32:02 2013 +0900"
      },
      "message": "Do not use print_function from __future__\n\nPython 2.4 and 2.5 do not have a print_function available, so we need a\ncompatible print function for displaying an error message when the user\nhas an older version of Python.\n\nChange-Id: I54d7297be98bb53970e873b36c6605e6dad386c3\n"
    },
    {
      "commit": "70df18944a667329ec894a1df1e77381c5b0c09a",
      "tree": "faff1670b73fb87ec417f79ff0cf2309274bb23e",
      "parents": [
        "b6a16e6390b12b019a7e5e297639e41310375c93",
        "0836a22d38f4fa29d3cbc543fcd7a42813ec052d"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Sep 26 16:30:01 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 26 16:30:02 2013 +0000"
      },
      "message": "Merge \"Wait for git-remote-persistent-https -print_config to exit\""
    },
    {
      "commit": "0836a22d38f4fa29d3cbc543fcd7a42813ec052d",
      "tree": "c7baceadf54c9021ccc729180fab8c41b49990eb",
      "parents": [
        "bc0308478bc98d9b14d0b8f79ad030f474adcc6f"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Wed Sep 25 17:46:01 2013 -0700"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Wed Sep 25 17:46:01 2013 -0700"
      },
      "message": "Wait for git-remote-persistent-https -print_config to exit\n\nChange-Id: I5ab96e7c8575682217d440ddc52ecfdc8c35f179\n"
    },
    {
      "commit": "b6a16e6390b12b019a7e5e297639e41310375c93",
      "tree": "1b792452702a63627789129637d00b47d888b32d",
      "parents": [
        "bc0308478bc98d9b14d0b8f79ad030f474adcc6f"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Sep 25 15:06:09 2013 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Sep 25 15:07:22 2013 -0700"
      },
      "message": "Give the node _Default class a destBranchExpr\n\nThis is to avoid the following AttributeError:\n\nline 681, in _ParseProject\nAttributeError: \u0027_Default\u0027 object has no attribute \u0027destBranchExpr\u0027\n\nChange-Id: Ia9f7e2cce1409d22d71bc8a74b33edf2b27702ca\n"
    },
    {
      "commit": "351fe2c793437e1d8a0b222f8478c74cf60ae034",
      "tree": "9eb3b9ada1de282765919e083c49f06295a42f30",
      "parents": [
        "fb99c719390196e35c27f30f875c1b796c307585"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Sep 25 17:54:26 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Sep 25 19:12:13 2013 +0900"
      },
      "message": "Sync: Improved error message when manifest server RPC call fails\n\nWhen the RPC call fails, the error message returned by the server\nis printed, but it is not obvious that this is caused by RPC call\nfailure.\n\nPrefix the error message with a descriptive message that explains\nwhat went wrong.\n\nChange-Id: I4b77af22aacc2e9843c4df9d06bf54e41d9692ff\n"
    },
    {
      "commit": "fb99c719390196e35c27f30f875c1b796c307585",
      "tree": "2dbe72ac9fed4f4b2376e029c6268993d5f74a8c",
      "parents": [
        "bc0308478bc98d9b14d0b8f79ad030f474adcc6f"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Sep 25 11:09:34 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Sep 25 19:12:06 2013 +0900"
      },
      "message": "Sync: Print name of manifest server used for smart sync/smart tag\n\nWhen syncing using smart sync or smart tag mode, print the url of\nthe manifest server that is being used.\n\nThis is useful in organisations that have multiple manifest servers\nused in different manifest branches.\n\nChange-Id: Ib5bc2de5af6f4a942d0ef735c65cbc0721059a61\n"
    },
    {
      "commit": "3a2a59eb87b58a4b5a26349434db322846cb6b57",
      "tree": "cb8da8261bd7efe57a00c2488fc9ece582062b9c",
      "parents": [
        "45d21685b93f80b67239849b2d2cfe6b217e335a"
      ],
      "author": {
        "name": "anatoly techtonik",
        "email": "techtonik@gmail.com",
        "time": "Sat Sep 21 19:29:10 2013 +0300"
      },
      "committer": {
        "name": "anatoly techtonik",
        "email": "techtonik@gmail.com",
        "time": "Sat Sep 21 20:03:57 2013 +0300"
      },
      "message": "repo: use explicit Python executable to run main.py\n\nSmall step to support non-POSIX platforms.\n\nChange-Id: I3bdb9c82c2dfbacb1da328caaa1a406ab91ad675\n"
    },
    {
      "commit": "bc0308478bc98d9b14d0b8f79ad030f474adcc6f",
      "tree": "d9f79e138ab9e4ec19282ebfa11f20ea8ecdc854",
      "parents": [
        "610d3c4e46471c8db555026969bb3e2eb75102f0"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Jul 01 11:05:32 2013 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Jul 01 11:22:01 2013 -0700"
      },
      "message": "Update gpg key for cco3@android.com\n\ncco3@android.com has a new gpg key, so this needs to be updated in the\nrepo scripts so that he can sign updates.\n\nChange-Id: I9f058263b35bd027502d6e3b814d7aeb801a1e6e\n"
    },
    {
      "commit": "610d3c4e46471c8db555026969bb3e2eb75102f0",
      "tree": "379579d96906f0f71538defffa24a0d28b72b189",
      "parents": [
        "033a7e91de4e15c7da96f4ab21454c5f6e3b2fb6"
      ],
      "author": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Mon Jun 24 14:02:12 2013 +0530"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Jun 28 00:29:11 2013 +0000"
      },
      "message": "upload: fix display of destination branch for SingleBranch\n\nThe command `repo upload --cbr -D \u003csome branch\u003e` will display\nthe default revision, and not the actual destination branch.\n\nFix that and display the branch to which the change will be\nuploaded to.\n\nChange-Id: I712ed0871c819dce6774c47254dac4efec4532e0\n"
    },
    {
      "commit": "033a7e91de4e15c7da96f4ab21454c5f6e3b2fb6",
      "tree": "24ce7b17792615dff6a2cf8546448a88ab9d1d21",
      "parents": [
        "854f2b6ef4f9ea1c304b2e77d552b930b28e7053"
      ],
      "author": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Thu Jun 13 21:14:48 2013 +0530"
      },
      "committer": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Thu Jun 13 21:14:48 2013 +0530"
      },
      "message": "DownloadPatchSet: fetch the change only, and nothing else.\n\n* Previously, it would run `git fetch \u003cremote.name\u003e \u003cchange refspec\u003e\n  \u003cremote.fetch\u003e, which would fetch all the branches, even if \u0027sync-c\u0027\n  was set to true in the manifest.\n* Fix that, since all it needs to fetch is the change that was asked\n  for, and nothing else.\n* For some more info, refer to the discussion on:\n  I42a9d419b51f5da03f20a640ea68993cda4b6500\n\nChange-Id: Ibc801695d56fc16e56f999e0f61393f54461785f\n"
    },
    {
      "commit": "854f2b6ef4f9ea1c304b2e77d552b930b28e7053",
      "tree": "17c26004548ed39b2cfee350a63fe283148b445a",
      "parents": [
        "db2ad9dfce438dae14fed0a62b37f0028ee98ad1",
        "a892b1006b5b7193262f3783b9678e2c76978a9b"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Jun 11 13:58:47 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 11 13:58:47 2013 +0000"
      },
      "message": "Merge \"sync: assign manifest_name earlier\""
    },
    {
      "commit": "a892b1006b5b7193262f3783b9678e2c76978a9b",
      "tree": "b5834be69d2578788a314e269f684bc86d8d8e6b",
      "parents": [
        "ef668c92c2c87c45df02bf1609a89e4479bbb30c"
      ],
      "author": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Tue Jun 11 14:18:46 2013 +0530"
      },
      "committer": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Tue Jun 11 14:18:58 2013 +0530"
      },
      "message": "sync: assign manifest_name earlier\n\n* manifest_name was never set if opt.smart_sync or opt.smart_tag is used.\n* Set it earlier, so that the code handles it correctly when it is None.\n* An UnboundLocalError is raised if running `repo sync` without any options:\n  local variable \u0027manifest_name\u0027 referenced before assignment\n* This fixes the above regression caused by commit\n  53a6c5d93a8ba708208826dab64c55fe97f06d0b\n\nChange-Id: I57086670f3589beea8461ce0344f6ec47ab85b7b\n"
    },
    {
      "commit": "db2ad9dfce438dae14fed0a62b37f0028ee98ad1",
      "tree": "6f2dc2aef2456c75759cfe9c845a9d4064ff8bc3",
      "parents": [
        "ef668c92c2c87c45df02bf1609a89e4479bbb30c"
      ],
      "author": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Tue Jun 11 13:42:25 2013 +0530"
      },
      "committer": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Tue Jun 11 08:21:10 2013 +0000"
      },
      "message": "Fix urllib.parse (urlparse) handling\n\nRevert \"Fix \"\u0027module\u0027 object is not callable\" error\", and fix it properly.\n\n* The urlparse module is renamed to urllib.parse in Python 3.\n* This commit fixes the code to use \"urllib.parse.urlparse\"\n  instead of creating a new module urlib and setting\n  urlib.parse to urlparse.urlparse.\n* Fixes an AttributeError:\n  \u0027function\u0027 object has no attribute \u0027uses_relative\u0027\n\nThis reverts commit cd51f17c643370e6199216462c1be36f04d57291.\n\nChange-Id: I48490b20ecd19cf5a6edd835506ea5a467d556ac\n"
    },
    {
      "commit": "ef668c92c2c87c45df02bf1609a89e4479bbb30c",
      "tree": "039f3a11ed6bb9be775a4c242132628a58aa529b",
      "parents": [
        "65b162b32fccee038ea331ea47706c4c2ef52692",
        "691a75936d517f05aaa4a5b0f477d9af5f301b6f"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Jun 10 14:35:13 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 10 14:35:13 2013 +0000"
      },
      "message": "Merge \"Fix a few issues with dest-branch and multiples\""
    },
    {
      "commit": "65b162b32fccee038ea331ea47706c4c2ef52692",
      "tree": "080bc21551d03b899dadd480c8be8833a82237de",
      "parents": [
        "53a6c5d93a8ba708208826dab64c55fe97f06d0b",
        "cd51f17c643370e6199216462c1be36f04d57291"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Jun 10 14:31:30 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 10 14:31:30 2013 +0000"
      },
      "message": "Merge \"Fix \"\u0027module\u0027 object is not callable\" error\""
    },
    {
      "commit": "cd51f17c643370e6199216462c1be36f04d57291",
      "tree": "8ab1624ac46d6adbac6ca3c25d3d716aff251776",
      "parents": [
        "c2791e85f322bb7d5007ee7e673134d5fa2ed662"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Jun 06 19:06:16 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Sat Jun 08 14:50:41 2013 +0900"
      },
      "message": "Fix \"\u0027module\u0027 object is not callable\" error\n\nIn a couple of files the urlparse method was not being set up\ncorrectly for python \u003c 3 and this resulted in an error being\nthrown when trying to call it.\n\nChange-Id: I4d2040ac77101e4e228ee225862f365ae3d96cec\n"
    },
    {
      "commit": "53a6c5d93a8ba708208826dab64c55fe97f06d0b",
      "tree": "3500926383ccb256d6d2f76939fc160db80c0665",
      "parents": [
        "c2791e85f322bb7d5007ee7e673134d5fa2ed662"
      ],
      "author": {
        "name": "Victor Boivie",
        "email": "victor.boivie@sonymobile.com",
        "time": "Tue Mar 19 12:20:52 2013 +0100"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Sat Jun 08 14:31:58 2013 +0900"
      },
      "message": "Degrade: Fix smart sync/smart tag\n\nThis was broken in b2bd91c, which updated the manifest after it had\nbeen overridden, which made it fall back to the original file (and\nnot the one from the manifest server).\n\nThis builds on 0766900 and overrides the manifest by the one\ndownloaded from the manifest server completely.\n\nChange-Id: Ic3972390a68919b614616631d99c9e7a63c0e0db\n"
    },
    {
      "commit": "c2791e85f322bb7d5007ee7e673134d5fa2ed662",
      "tree": "9b50df24eac7bfafed0e247b4928d504d560c227",
      "parents": [
        "74c1f3d5e6ce819797795a2931cc32a9ed5535cb",
        "5bca9fcdd9dfe4fd31fffe332579f982738b5997"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Jun 05 15:54:48 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 05 15:54:48 2013 +0000"
      },
      "message": "Merge \"Print project name for -p on mirror clients\""
    },
    {
      "commit": "5bca9fcdd9dfe4fd31fffe332579f982738b5997",
      "tree": "0a10638609166ab4dc5a8d03b2cede472db3e908",
      "parents": [
        "710d4b03911bc6fc0b313af56e81b957ccae2348"
      ],
      "author": {
        "name": "Jorge Gonzalez",
        "email": "gjorge@google.com",
        "time": "Mon Jun 03 12:00:06 2013 -0700"
      },
      "committer": {
        "name": "Jorge Gonzalez",
        "email": "gjorge@google.com",
        "time": "Mon Jun 03 17:52:01 2013 -0700"
      },
      "message": "Print project name for -p on mirror clients\n\nIt doesn\u0027t make sense to print the relpath, since there\u0027s nothing\nchecked out there and the dir shouldn\u0027t even exist.\n\nChange-Id: Id43631a8e0895929d3a5ad4ca8c2dc9e3d233e70\n"
    },
    {
      "commit": "74c1f3d5e6ce819797795a2931cc32a9ed5535cb",
      "tree": "6fb625b630c36318fbfbdf815efecb1a4801459f",
      "parents": [
        "91f3ba5a3f6e3c76577b94c0a6c31974d5a3f077"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Mon Jun 03 15:05:07 2013 -0700"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Tue Jun 04 00:12:15 2013 +0000"
      },
      "message": "Read cookie file from git-remote-persistent-https if applicable\n\ngit-remote-persistent-https proxy implementations may pass cookie file\nconfiguration to git-remote-https. When fetching bundles for\npersistent-http(s) URLs, use the -print_config flag (if supported) to\nextract this information from the proxy binary and pass it to curl,\noverriding http.cookiefile from .gitconfig.\n\nThis adds a few ms overhead per clone.bundle fetch, which should be\nacceptable since it happens only on the initial clone, which takes\nmuch longer anyway.\n\nChange-Id: I03be8ebaf8d3005855d33998cd8ecd412e8ec287\n"
    },
    {
      "commit": "91f3ba5a3f6e3c76577b94c0a6c31974d5a3f077",
      "tree": "f24f107433374a5ae8264af2dbfbf01b59703dc8",
      "parents": [
        "710d4b03911bc6fc0b313af56e81b957ccae2348"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Mon Jun 03 12:15:23 2013 -0700"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Tue Jun 04 00:12:01 2013 +0000"
      },
      "message": "Ensure clone.bundle files have proper header\n\nServer auth middleware may return a 200 from a clone.bundle request\nthat is not a bundle file, but instead a login or access denied page.\nInstead of just checking the file size, actually check the first few\nbytes of the file to ensure it is a bundle file before proceeding.\n\nChange-Id: Icea07567c568a24fd838e5cf974c58f9e4abd7c0\n"
    },
    {
      "commit": "691a75936d517f05aaa4a5b0f477d9af5f301b6f",
      "tree": "ee61b4dcb91aeb0ea2d60fa720aa037faed7e585",
      "parents": [
        "a1f77d92c65028a55202062594cb379b6503bf60"
      ],
      "author": {
        "name": "Bryan Jacobs",
        "email": "bryanrj@gmail.com",
        "time": "Fri May 31 15:45:28 2013 -0400"
      },
      "committer": {
        "name": "Bryan Jacobs",
        "email": "bryanrj@gmail.com",
        "time": "Mon Jun 03 10:39:43 2013 -0400"
      },
      "message": "Fix a few issues with dest-branch and multiples\n\nThis fixes dest-branch display with \u003e1 branch being uploaded to at\nonce, and correctly handles setting the target branch in that case.\n\nChange-Id: If5e9c7ece02cc0d903e2cb377485ebea73a07107\n"
    },
    {
      "commit": "710d4b03911bc6fc0b313af56e81b957ccae2348",
      "tree": "ddeea9c2f86363e48d3ca4e53a868a27bd7a39f6",
      "parents": [
        "a1f77d92c65028a55202062594cb379b6503bf60"
      ],
      "author": {
        "name": "Bryan Jacobs",
        "email": "bryanrj@gmail.com",
        "time": "Fri May 31 15:28:05 2013 -0400"
      },
      "committer": {
        "name": "Bryan Jacobs",
        "email": "bryanrj@gmail.com",
        "time": "Sun Jun 02 19:13:18 2013 -0400"
      },
      "message": "Fix a bug in repo upload --cbr\n\nrepo upload --cbr bailed out if some branches did not have\nmodifications when it is used.\n\nChange-Id: I35f264ff7d77bb4bf8f26b4c3faffa184920b6c5\n"
    },
    {
      "commit": "a1f77d92c65028a55202062594cb379b6503bf60",
      "tree": "afacb5f228f4bf005afd044fce188714bf39a8dc",
      "parents": [
        "f609f91b72c0b90026da0eefcc0f52f12840971b",
        "ecf8f2b7c8e68ee78c5a90ecd8a9b48e73195b80"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue May 28 16:56:59 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 28 16:56:59 2013 +0000"
      },
      "message": "Merge \"Handle HTTPException when attempting to get ssh_info\""
    },
    {
      "commit": "ecf8f2b7c8e68ee78c5a90ecd8a9b48e73195b80",
      "tree": "58a1e2c6e9e1c4ea6d8147414dab358a24d45c14",
      "parents": [
        "59bbb580e34bbc5dce76dacaad9ff94f21fa396f"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri May 24 12:12:23 2013 +0900"
      },
      "committer": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Sat May 25 08:07:52 2013 +0530"
      },
      "message": "Handle HTTPException when attempting to get ssh_info\n\nThe call to `urlopen` can raise `HTTPException`, but this is not\ncaught which results in a python Traceback.\n\nAdd handling of the exception.  Because `HTTPException` and its\nderived classes do not have any message, print the name of the\nexception in the error message instead.\n\nChange-Id: Ic90fb4cc0e92702375cd976d4a03876c8ce8bffc\n"
    },
    {
      "commit": "f609f91b72c0b90026da0eefcc0f52f12840971b",
      "tree": "819e244e52279d7b232df5e17727a9a828ddda66",
      "parents": [
        "59bbb580e34bbc5dce76dacaad9ff94f21fa396f"
      ],
      "author": {
        "name": "Bryan Jacobs",
        "email": "bryanrj@gmail.com",
        "time": "Mon May 06 13:36:24 2013 -0400"
      },
      "committer": {
        "name": "Bryan Jacobs",
        "email": "bryanrj@gmail.com",
        "time": "Fri May 24 12:17:22 2013 -0400"
      },
      "message": "Send reviews to a different branch from fetch\n\nThis adds the ability to have reviews pushed to a different branch\nfrom the one on which changes are based. This is useful for \"gateway\"\nsystems without smartsync.\n\nChange-Id: I3a8a0fabcaf6055e62d3fb55f89c944e2f81569f\n"
    },
    {
      "commit": "59bbb580e34bbc5dce76dacaad9ff94f21fa396f",
      "tree": "4d19216215edc174851baa10a00a3bccba9d4e45",
      "parents": [
        "da45e5d8848246cddbce80ff56786bd7330ba5af"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri May 17 10:49:33 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu May 23 07:28:53 2013 +0000"
      },
      "message": "Move Python version checking to a separate module\n\nAdd a new module with methods for checking the Python version.\n\nInstead of handling Python3 imports with try...except blocks, first\ncheck the python version and then import the relevant modules.  This\nmakes the code a bit cleaner and will result in less diff when/if we\nremove support for Python \u003c 3 later.\n\nUse the same mechanism to handle `input` vs. `raw_input` and add\nsuppression of pylint warnings caused by redefinition of the built-in\nmethod `input`.\n\nChange-Id: Ia403e525b88d77640a741ac50382146e7d635924\nAlso-by: Chirayu Desai \u003ccdesai@cyanogenmod.org\u003e\nSigned-off-by: Chirayu Desai \u003ccdesai@cyanogenmod.org\u003e\n"
    },
    {
      "commit": "da45e5d8848246cddbce80ff56786bd7330ba5af",
      "tree": "661979f3b1f5f3a4612280fd3c92e7f3b1847c50",
      "parents": [
        "0826c0749f9597be07171fed63160dcb1718e35c"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed May 15 17:34:45 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu May 16 09:32:18 2013 +0900"
      },
      "message": "Remove unused show_smart option on list and info commands\n\nChange-Id: Idf0e161a0b0cc23a5a3ee44d18cb797162cfdd7b\n"
    },
    {
      "commit": "0826c0749f9597be07171fed63160dcb1718e35c",
      "tree": "0183f9f6c77af43cdd874e5e9de9395c6e43c251",
      "parents": [
        "2b30e3aabafa43c224cb6d57dc232d78b28a4901",
        "de50d81c918ff8aa84ac2d2f2c64a0c42d94f0a3"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed May 15 23:48:44 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 15 23:48:44 2013 +0000"
      },
      "message": "Merge \"Disable warning about locally disabling pylint warnings\""
    },
    {
      "commit": "de50d81c918ff8aa84ac2d2f2c64a0c42d94f0a3",
      "tree": "5a2ce2447044e9c43e902c98c999519f557a3449",
      "parents": [
        "793f90cdc0cffc3ade6acdc544e315fbd54cbb0b"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed May 15 17:31:49 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed May 15 18:06:06 2013 +0900"
      },
      "message": "Disable warning about locally disabling pylint warnings\n\nSeveral files have local suppression of pylint warnings.  We don\u0027t\nneed these to be reported; code review should catch any unnecessary\nsuppressions.\n\nChange-Id: Ie71ba3e910714ef3fe44554a71bb62519d0a891d\n"
    },
    {
      "commit": "2b30e3aabafa43c224cb6d57dc232d78b28a4901",
      "tree": "ba6fe5ee439091371977cd3db36b32b41c6b4e9d",
      "parents": [
        "793f90cdc0cffc3ade6acdc544e315fbd54cbb0b"
      ],
      "author": {
        "name": "Victor Boivie",
        "email": "victor.boivie@sonymobile.com",
        "time": "Fri Oct 05 12:37:58 2012 +0200"
      },
      "committer": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Sun May 12 17:49:28 2013 +0530"
      },
      "message": "Use reference also for manifest git\n\nWhen running \u0027repo init --reference\u003d\u003cmirror\u003e\u0027, the mirror will be\nused for all projects except the manifest project. This is because\nthe _InitGitDir function uses the \u0027repo.reference\u0027 git config\nvalue specified in the manifest git, which has no effect when\ncreating the manifest git as that value will be set after the git\nhas been successfully cloned.\n\nInformation about where the manifest git is located on the server\nis only known when performing the \u0027repo init\u0027, so that information\nhas to be provided when cloning the git in order for it to set up\na proper mapping.\n\nChange-Id: I47a2c8b3267a4065965058718ce1def4ecb34d5a\nSigned-off-by: Chirayu Desai \u003ccdesai@cyanogenmod.org\u003e\n"
    },
    {
      "commit": "793f90cdc0cffc3ade6acdc544e315fbd54cbb0b",
      "tree": "f3abdcd9e71536fdc170a398e527a020e2323d18",
      "parents": [
        "d503352b14b45f80c0fb1f6f49637ad0fe732112",
        "a0444584cbcb663dc2c403a7a3b418576685de41"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu May 09 08:36:11 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 09 08:36:12 2013 +0000"
      },
      "message": "Merge \"Re-initialise repos git hooks when updating the forest\""
    },
    {
      "commit": "d503352b14b45f80c0fb1f6f49637ad0fe732112",
      "tree": "0045e8aded2f13a6caf169b77db63e2bf5441835",
      "parents": [
        "b5267f9ad2d0d7872610c8989f11471187fd92d2",
        "2f992cba3238ff9a849c02fbf9a423e234deab16"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed May 08 18:40:57 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 08 18:40:57 2013 +0000"
      },
      "message": "Merge \"Repo should not fetch tags for shallow projects\""
    },
    {
      "commit": "2f992cba3238ff9a849c02fbf9a423e234deab16",
      "tree": "57abf164400926fc4410058366db0fb7a97d88c4",
      "parents": [
        "45401230cf2b071562617da02ab751468e9aaf8d"
      ],
      "author": {
        "name": "Jimmie Wester",
        "email": "jimmie.wester@stericsson.com",
        "time": "Fri Dec 07 12:49:51 2012 +0100"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed May 08 06:54:10 2013 +0100"
      },
      "message": "Repo should not fetch tags for shallow projects\n\nFetching all tags for a shallow git results in an\ninconstent git and forces git to fetch more than\nthe depth specified.\n\nThis change teaches repo not to fetch any tags in a\nrepository initialised with the depth option.\n\nChange-Id: I557ead9f88fa0d6a19b1cb55b23bba1100fcb8f2\nSigned-off-by: Patrik Ryd \u003cpatrik.ryd@stericsson.com\u003e\n"
    },
    {
      "commit": "b5267f9ad2d0d7872610c8989f11471187fd92d2",
      "tree": "56b9cb916894acbecb270141bf21bd5bd1a46f4a",
      "parents": [
        "45401230cf2b071562617da02ab751468e9aaf8d"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon May 06 07:52:52 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed May 08 06:37:15 2013 +0100"
      },
      "message": "stage: replace filter on lambda with list comprehension\n\nTo fix the pylint warning:\n\n  W0110: map/filter on lambda could be replaced by comprehension\n\nChange-Id: Ib914b42992bb2fbfe888a68fb7b05a7695565b63\n"
    },
    {
      "commit": "45401230cf2b071562617da02ab751468e9aaf8d",
      "tree": "d4b82c3d033b017a98c00e0129d5563e6031d261",
      "parents": [
        "56f4eea26c703992d0a27fd99b7083593f209677",
        "84c4d3c345352650fce4dbc2df27c4977f9d969e"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue May 07 20:08:12 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 07 20:08:13 2013 +0000"
      },
      "message": "Merge \"Optimise regex pattern compilation in FindProjects\""
    },
    {
      "commit": "56f4eea26c703992d0a27fd99b7083593f209677",
      "tree": "a243ae9bde5cdd794eb81ff7498ee36291faf179",
      "parents": [
        "f385d0ca09cf5076d602b6d585c1f06e84b757fe"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Sat May 04 21:40:56 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Sat May 04 21:40:56 2013 +0900"
      },
      "message": "Disable pylint warnings about similar lines in multiple files\n\nWhen running pylint over the entire code base, it reports the\nwarning:\n\n  R0801:  Similar lines in 2 files\n\nfor several pairs of files.\n\nThe code referred to is boilerplate code related to imports and\nerror handling.  It is not practical to change the code to avoid\nthe warnings, so simply disable them in the config.\n\nChange-Id: Ie685fdf1cab60fb8f1503be560166a14058698d8\n"
    },
    {
      "commit": "f385d0ca09cf5076d602b6d585c1f06e84b757fe",
      "tree": "aef8aa8cd2b18dda2e608130d7340db47c234241",
      "parents": [
        "a8864fba9fd21f412cd0e2c6e072deeb204049bb"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri May 03 22:01:41 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri May 03 22:10:26 2013 +0900"
      },
      "message": "Disable warnings related to imports in pylint config\n\nThere are several modules that have imports to support various\nversions of Python.  Pylint reports the following errors when\nrun in a version of Python that does not have the module or the\nmethod/class in the module.\n\n  F0401: Unable to import \u0027module\u0027\n  E0611: No name \u0027name\u0027 in module \u0027module\u0027\n\nDisable these warnings to reduce the noise on the output.\n\nChange-Id: I97e7e2698bccb1e501a45a0869f97f90d54adfb7\n"
    },
    {
      "commit": "84c4d3c345352650fce4dbc2df27c4977f9d969e",
      "tree": "32dd4d3775e2cefd1a42a11dcb781c73ab442c1f",
      "parents": [
        "a8864fba9fd21f412cd0e2c6e072deeb204049bb"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Apr 30 10:57:37 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Apr 30 11:12:01 2013 +0900"
      },
      "message": "Optimise regex pattern compilation in FindProjects\n\nMake a list of compiled patterns once, and then iterate over that\nper project, instead of compiling the patterns again on every project.\n\nChange-Id: I91ec430d3060ec76d5e6b61facf6b13e343c90a7\n"
    },
    {
      "commit": "a8864fba9fd21f412cd0e2c6e072deeb204049bb",
      "tree": "70008b8438542ff08fc9c5883e1b35f15c12b1c8",
      "parents": [
        "275e4b727a68cbf32c686d80736772c843771d98"
      ],
      "author": {
        "name": "Zhiguang Li",
        "email": "muzili@gmail.com",
        "time": "Fri Mar 15 10:32:10 2013 +0800"
      },
      "committer": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Mon Apr 29 16:19:26 2013 +0530"
      },
      "message": "Add regex support for subcommand forall\n\nFilter the project list based on regex or wildcard matching\nof strings, then we can handle subset of all projects.\n\nChange-Id: Ib6c23aec79e7d981f7b6a5eb0ae93c44effec467\nSigned-off-by: Zhiguang Li \u003cmuzili@gmail.com\u003e\n"
    },
    {
      "commit": "275e4b727a68cbf32c686d80736772c843771d98",
      "tree": "0c0de68dabfbc6081b613724d498ab00868ae986",
      "parents": [
        "c4c01f914c7cdfa997be60ea97cd487d63333a04",
        "9d5bf60d3ce18441d43deb6ad9cec931b94e10b6"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Sat Apr 20 05:11:05 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 20 05:11:05 2013 +0000"
      },
      "message": "Merge \"Set correct name in PyDev and Eclipse project config\""
    },
    {
      "commit": "c4c01f914c7cdfa997be60ea97cd487d63333a04",
      "tree": "c7063f88ab55998187c907807364ce7f4444cc4a",
      "parents": [
        "51813dfed1528307c46707bc38b4db33b87bb36e",
        "217ea7d2747e3098009afe0b389fc4b45f55ea5a"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Apr 19 15:31:28 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 19 15:31:29 2013 +0000"
      },
      "message": "Merge \"Some fixes for supporting python3\""
    },
    {
      "commit": "9d5bf60d3ce18441d43deb6ad9cec931b94e10b6",
      "tree": "92260add56caee1254d0573e26c486947731cc8b",
      "parents": [
        "fef4ae74e26efecf5c803793351b6c843eab4970"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Apr 18 10:57:46 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Apr 19 09:35:43 2013 +0900"
      },
      "message": "Set correct name in PyDev and Eclipse project config\n\nThe name of the project is shown as \"repo\" in the project list in\nthe Eclipse workspace.\n\nThis change renames it to \"git-repo\" to match the name of the git\nrepository.\n\nThe existing project in Eclipse must be removed (it is not necessary\nto delete project contents on disk) and re-imported for the change to\ntake effect.\n\nChange-Id: I2ac022d22f46e5361dfe49c0dbcad482aaefe628\n"
    },
    {
      "commit": "217ea7d2747e3098009afe0b389fc4b45f55ea5a",
      "tree": "4ea2663a01fb22002ec6cd6ede9cb3babd89a692",
      "parents": [
        "fef4ae74e26efecf5c803793351b6c843eab4970"
      ],
      "author": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Fri Mar 01 19:14:38 2013 +0530"
      },
      "committer": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Thu Apr 18 21:35:49 2013 +0530"
      },
      "message": "Some fixes for supporting python3\n\n* Fix imports.\n* Use python3 syntax.\n* Wrap map() calls with list().\n* Use list() only wherever needed.\n  (Thanks Conley!)\n* Fix dictionary iteration methods\n  (s/iteritems/items/).\n* Make use of sorted() in appropriate places\n* Use iterators directly in the loop.\n* Don\u0027t use .keys() wherever it isn\u0027t needed.\n* Use sys.maxsize instead of sys.maxint\n\nTODO:\n* Make repo work fully with python3. :)\n\nSome of this was done by the \u00272to3\u0027 tool [1], by\napplying the needed fixes in a way that doesn\u0027t\nbreak compatibility with python2.\n\nLinks:\n[1]: http://docs.python.org/2/library/2to3.html\n\nChange-Id: Ibdf3bf9a530d716db905733cb9bfef83a48820f7\nSigned-off-by: Chirayu Desai \u003ccdesai@cyanogenmod.org\u003e\n"
    }
  ],
  "next": "51813dfed1528307c46707bc38b4db33b87bb36e"
}
