)]}'
{
  "log": [
    {
      "commit": "093fdb6587bba081c4d34eb9ea500149b1090280",
      "tree": "a8edab76db87f3ff70536e01b11bc5c034a0729e",
      "parents": [
        "2fb6466f795eb30c1dfa598501f5b5d2981e6a5f"
      ],
      "author": {
        "name": "bijia",
        "email": "bijia@xiaomi.com",
        "time": "Thu Nov 28 09:19:22 2013 +0800"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Mar 04 00:51:30 2014 +0000"
      },
      "message": "Add reviewers automatically from project\u0027s git config\n\nThe `review.URL.autocopy` setting sends email notification to the\nnamed reviewers, but does not add them as reviewer on the uploaded\nchange.\n\nAdd a new setting `review.URL.autoreviewer`.  The named reviewers\nwill be added as reviewer on the uploaded change.\n\nChange-Id: I3fddfb49edf346f8724fe15b84be8c39d43e7e65\nSigned-off-by: bijia \u003cbijia@xiaomi.com\u003e"
    },
    {
      "commit": "724aafb52d546b23658e517278e4d93ec351dbaf",
      "tree": "9f1e19526e4df072490516046e4c9f2f9072b033",
      "parents": [
        "ccd218cd8f6eeb4dab94b22cec6812d7abb7c814",
        "89ece429fbb3047eabe9e8eb3df3076d74926eb3"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Feb 28 21:16:32 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 28 21:16:32 2014 +0000"
      },
      "message": "Merge \"Clean up duplicate logic in subcmds/sync.py.\""
    },
    {
      "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": "89ece429fbb3047eabe9e8eb3df3076d74926eb3",
      "tree": "955edd4f6d2d94a13b53d0b35cf23e5f9ada9652",
      "parents": [
        "565480588d2bff4205b437862505e77382189811"
      ],
      "author": {
        "name": "David James",
        "email": "davidjames@google.com",
        "time": "Thu Jan 09 18:51:58 2014 -0800"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Feb 14 16:14:32 2014 +0000"
      },
      "message": "Clean up duplicate logic in subcmds/sync.py.\n\nThe fetch logic is now shared between the jobs \u003d\u003d 1 and\njobs \u003e 1 cases. This refactoring also fixes a bug where\nopts.force_broken was not honored when jobs \u003e 1.\n\nChange-Id: Ic886f3c3c00f3d8fc73a65366328fed3c44dc3be"
    },
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
    },
    {
      "commit": "fef4ae74e26efecf5c803793351b6c843eab4970",
      "tree": "f5d53b6aad19cd6c514b9c3e10e050a1d1f6cb18",
      "parents": [
        "db83b1b5abcc2df1b5c7a76ca74ff60e88fe956e"
      ],
      "author": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Fri Apr 12 14:54:32 2013 +0530"
      },
      "committer": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Mon Apr 15 13:38:49 2013 +0530"
      },
      "message": "sync: be more verbose\n\n* Print project name if the \"quiet\" option is not used.\n\nChange-Id: I99863bb50f66e4dcbaf2d170bdd05971f2a4e19a\nSigned-off-by: Chirayu Desai \u003ccdesai@cyanogenmod.org\u003e\n"
    },
    {
      "commit": "04d84a23fd04c9e1dd15341eb7dd28a0d8ce99c6",
      "tree": "d7b1a09f85c56296c9ad540d161b782379c34e73",
      "parents": [
        "0a1c6a1c16e2c89f98158cb2f79dda1583a8fac4"
      ],
      "author": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Sun Mar 17 18:46:23 2013 +0530"
      },
      "committer": {
        "name": "Chirayu Desai",
        "email": "cdesai@cyanogenmod.org",
        "time": "Sat Apr 06 14:39:03 2013 +0530"
      },
      "message": "list: add name-only and path-only options\n\n`repo list -n` prints only the name of the projects.\n`repo list -p` prints only the path of the projects.\n\nChange-Id: If7d78eb2651f0b1b2fe555dc286bd2bdcad0d56d\nSigned-off-by: Chirayu Desai \u003ccdesai@cyanogenmod.org\u003e\n"
    },
    {
      "commit": "0a1c6a1c16e2c89f98158cb2f79dda1583a8fac4",
      "tree": "2446c673c4eddf2a499e36b4e898ea258a6d3c7a",
      "parents": [
        "33e045673786f3477e805ade0f337de08e89a7a8"
      ],
      "author": {
        "name": "David Holmer",
        "email": "odinguru@gmail.com",
        "time": "Wed Nov 14 19:19:00 2012 -0500"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 03 22:27:45 2013 +0000"
      },
      "message": "Special handling for manifest group \"default\"\n\nChange Details:\n* Make \"default\" a special manifest group that matches any project that\n  does not have the special project group \"notdefault\"\n* Use \"default\" instead of \"all,-notdefault\" when user does not specify\n  manifest group\n* Expand -g option help to include example usage of manifest groups\n\nChange Benefits:\n* Allow a more intuitive and expressive manifest groups specification:\n  * \"default\" instead of \"all,-notdefault\"\n  * \"default,foo\" instead of \"all,-notdefault,foo\"\n  * \"default,-foo\" instead of \"all,-notdefault,-foo\"\n  * \"foo,-default\" which has no equivalent\n* Default manifest groups behavior can be restored by the command\n  \u0027repo init -g default\u0027. This is significantly more intuitive than the\n  current equivalent command \u0027repo init -g all,-notdefault\u0027.\n\nChange-Id: I6d0673791d64a650110a917c248bcebb23b279d3\n"
    },
    {
      "commit": "07669002cbc1cdb3f5587660a140b3203b7fb552",
      "tree": "ad652eff3898e0961562e085f230e53d7d476349",
      "parents": [
        "3cba0b8613b2fd56eb2c78b6f94c26ac26704bd0"
      ],
      "author": {
        "name": "Tim Kilbourn",
        "email": "tkilbourn@google.com",
        "time": "Fri Mar 08 15:02:49 2013 -0800"
      },
      "committer": {
        "name": "Tim Kilbourn",
        "email": "tkilbourn@google.com",
        "time": "Fri Mar 08 16:19:03 2013 -0800"
      },
      "message": "Reload the correct manifest during sync.\n\nFix for issue #134\nhttps://code.google.com/p/git-repo/issues/detail?id\u003d134\n\nChange-Id: I94c2dea5dd63917e3f9c90cbd628921d7d61b12a\n"
    },
    {
      "commit": "a27852d0e707046558dfef9145f56b64b1331c7a",
      "tree": "f8ba2ff81c074beff302db0911cf2e896c8df561",
      "parents": [
        "3ee6ffd07852c184feef5afd695d80a3f9a0db79",
        "61ac9ae090d81bfd086ed8b3ca961de1cc77e3cc"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Mar 08 01:12:56 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 08 01:12:56 2013 +0000"
      },
      "message": "Merge \"Add manifest groups to the output of `info`\""
    },
    {
      "commit": "61ac9ae090d81bfd086ed8b3ca961de1cc77e3cc",
      "tree": "ba0c8b1f88d02e7e6216acba3c4f759cc48b4f8c",
      "parents": [
        "45d21685b93f80b67239849b2d2cfe6b217e335a"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Mar 05 10:35:36 2013 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Mar 07 09:47:29 2013 -0800"
      },
      "message": "Add manifest groups to the output of `info`\n\nList the user\u0027s manifest groups when running `repo info`.\n\nThese groups are passed to `repo init` using the -g/--groups flag.\n\nChange-Id: Ie8a4ed74a35b8b90df3b1ee198fe725b1cd68ae7\n"
    },
    {
      "commit": "2f9e7e40c44acae37d0c263c212956ef6038c35b",
      "tree": "b5bffccb2c4f6a502a350bef3e40183f56ca8bc9",
      "parents": [
        "45d21685b93f80b67239849b2d2cfe6b217e335a"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Mar 05 17:26:46 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Mar 05 17:30:59 2013 +0900"
      },
      "message": "Fix: Missing spaces in printed messages\n\nSeveral messages are printed with the `print` method and the message\nis split across two lines, i.e.:\n\n print(\u0027This is a message split\u0027\n       \u0027across two source code lines\u0027)\n\nWhich causes the message to be printed as:\n\n This is a message splitacross two source code lines\n\nAdd a space at the end of the first line before the line break:\n\n print(\u0027This is a message split \u0027\n       \u0027across two source code lines\u0027\n\nAlso correct a minor spelling mistake.\n\nChange-Id: Ib98d93fcfb98d78f48025fcc428b6661380cff79\n"
    },
    {
      "commit": "597868b4c45bba380249b739c0cf49b868cc8741",
      "tree": "938a73ec3df796449207c695a4ee316d4886b0fe",
      "parents": [
        "75b4c2deac9ff23a5a3c24b3d2450cd23ae3d705"
      ],
      "author": {
        "name": "Mitchel Humpherys",
        "email": "mitchelh@codeaurora.org",
        "time": "Mon Oct 29 10:18:34 2012 -0700"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Feb 27 11:00:49 2013 +0900"
      },
      "message": "Add --no-tags option to prevent fetching of tags\n\nAdd an option to pass `--no-tags\u0027 to `git fetch\u0027.\n\nChange-Id: I4158cc369773e08e55a167091c38ca304a197587\nSigned-off-by: Mitchel Humpherys \u003cmitchelh@codeaurora.org\u003e\n"
    },
    {
      "commit": "75b4c2deac9ff23a5a3c24b3d2450cd23ae3d705",
      "tree": "6136f285763867dff9fb786169e720314fea5148",
      "parents": [
        "b75415075c00bb17e14c5666a380b7e940db8c84"
      ],
      "author": {
        "name": "Olof Johansson",
        "email": "olof.johansson@sonymobile.com",
        "time": "Mon Feb 18 13:18:16 2013 +0100"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Feb 26 16:05:26 2013 +0900"
      },
      "message": "Fix crash in repo info when `%` is used in commit messages\n\nFix for issue #131\nhttp://code.google.com/p/git-repo/issues/detail?id\u003d131\n\nChange-Id: I078533ab5f3a83154c4ad6aa97a5525fc5139d20\n"
    },
    {
      "commit": "23bd3a1dd309c8c5727832b7543298584bf53de8",
      "tree": "6cfc76f7d4818309acde2283078746e2b96cd9c3",
      "parents": [
        "91f011ab0df9e1aa215e39b424c9ce2614bae50e"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Feb 12 13:46:14 2013 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Feb 12 13:46:14 2013 -0800"
      },
      "message": "Add missing sys module when referencing stderr\n\n`repo cherry-pick` was broken because we were referencing stderr\ninstead of sys.stderr.  This should fix it.\n\nChange-Id: I67f25c3a0790d029edc65732c319df7c684546c8\n"
    },
    {
      "commit": "57bd7b717ba830753b5c6d82bb84d38047dce637",
      "tree": "7250e64bb16febe8bd677ce5149edde80f74178d",
      "parents": [
        "4e46520362e4c75ae7809c74f3d1c21e86852ee8"
      ],
      "author": {
        "name": "Olof Johansson",
        "email": "olof.johansson@sonymobile.com",
        "time": "Tue Jan 29 08:22:05 2013 +0100"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Jan 29 18:18:20 2013 +0900"
      },
      "message": "Fix: GitError when using repo info -d\n\nIf a workspace is initialised with:\n\n repo init -u git://path/to/manifest -b manifest-branch\n\nand the default.xml specifies the default revision as `other-branch`,\nrunning `repo info -d` results in a GitError:\n\n  fatal: bad revision \u0027refs/remotes/m/other-branch..\u0027\n\nThe repo info command uses the default revision to build the symlink\nto the remote revision which is passed to the `git rev-list` command.\n\nThis is incorrect; the manifest\u0027s branch name should be used.\n\nChange-Id: Ibae5b91869848276785facfaef433e38d49fd726\n"
    },
    {
      "commit": "63d356ffce72f76936a17902fe2f4abcb43078bb",
      "tree": "44288b45acaf5bd883135d762403e7bf7970c5e7",
      "parents": [
        "35765966bf77d3afc8f9f98d6e24ccaf302ce95d"
      ],
      "author": {
        "name": "Will Richey",
        "email": "wmrichey@gmail.com",
        "time": "Thu Jun 21 09:49:59 2012 -0400"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Jan 29 10:01:53 2013 +0900"
      },
      "message": "\u0027repo status --orphans\u0027 shows non-repo files\n\n\u0027repo status --orphans\u0027 searches for non-repo objects\n(not within a project), which is particularly helpful\nbefore removing a working tree.\n\nChange-Id: I2239c12e6bc0447b0ad71129551cb50fa671961c\n"
    },
    {
      "commit": "35765966bf77d3afc8f9f98d6e24ccaf302ce95d",
      "tree": "0055175c8bae8bb2ba38cdb8d7981b8e9bcfc9b5",
      "parents": [
        "254709804d83d611831d4c78fe17280750e2eb2a"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Jan 29 09:49:48 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Jan 29 09:52:22 2013 +0900"
      },
      "message": "Fix: missing space in information message after repo init\n\nIn the information message displayed after running repo init, there\nis a missing space:\n\n  If this is not the directory in which you want to initializerepo\n\nAdd a space.\n\nChange-Id: I20467673ba7481cfe782ba58ff6ed2f7ce9824a5\n"
    },
    {
      "commit": "254709804d83d611831d4c78fe17280750e2eb2a",
      "tree": "0c7559bdcc8cdf1d4b18e8f141745e36f0b9efae",
      "parents": [
        "e0b6de32f74cd2f069d1544bbbb08f6d45f6d27b"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 21 14:41:58 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Jan 29 09:47:07 2013 +0900"
      },
      "message": "Better error message when using --mirror in existing workspace\n\nIf repo init is run with the --mirror option, repo checks if there\nis already a workspace initialized in the current location, and if\nso, exits with an error message:\n\n  --mirror not supported on existing client\n\nThis error can cause confusion; the users do not understand what\nis wrong and what they need to do to fix it.\n\nChange the error message to make it a bit clearer.\n\nChange-Id: Ifd06ef64fd264bd1117e4184c49afe0345b75d8c\n"
    },
    {
      "commit": "e0b6de32f74cd2f069d1544bbbb08f6d45f6d27b",
      "tree": "a2aa7476b7d1b3a240275b0fe710335c979a632c",
      "parents": [
        "4baf87f92c55d3daba1410f04bd10f1a41a088b8"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 21 17:36:28 2012 +0900"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 29 00:02:46 2013 +0000"
      },
      "message": "Fix: missing spaces in info command output\n\nText should be joined with \" \" rather than \"\" in the output.\n\nChange-Id: I6c5dddc15743e98c3b43702cb5d3ec32f81c3221\n"
    },
    {
      "commit": "7bdbde7af84036d2d900150e67f462e1a50f4b0e",
      "tree": "399f7adf345ce5cf195b786939765b6b98ce9bc6",
      "parents": [
        "b2bd91c99b9435cf950ecf8efbb8439f31d3fcbc"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Wed Dec 05 10:58:06 2012 +0000"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Wed Dec 05 11:01:36 2012 +0000"
      },
      "message": "Allow sync to run even when the manifest is broken.\n\nIf the current manifest is broken then \"repo sync\" fails because it\ncan\u0027t retrieve the default value for --jobs. Use 1 in this case, in\norder that you can \"repo sync\" to get a fixed manifest (assuming someone\nfixed it upstream).\n\nChange-Id: I4262abb59311f1e851ca2a663438a7e9f796b9f6\n"
    },
    {
      "commit": "b2bd91c99b9435cf950ecf8efbb8439f31d3fcbc",
      "tree": "5d26d3943317c11c1cd913fc5640074a5bc7910b",
      "parents": [
        "3f5ea0b18207a81f58595b1a2e10e5ffb784b74f"
      ],
      "author": {
        "name": "Che-Liang Chiou",
        "email": "clchiou@google.com",
        "time": "Wed Jan 11 11:28:42 2012 +0800"
      },
      "committer": {
        "name": "Che-Liang Chiou",
        "email": "clchiou@google.com",
        "time": "Mon Nov 19 10:45:21 2012 -0800"
      },
      "message": "Represent git-submodule as nested projects, take 2\n\n(Previous submission of this change broke Android buildbot due to\n incorrect regular expression for parsing git-config output.  During\n investigation, we also found that Android, which pulls Chromium, has a\n workaround for Chromium\u0027s submodules; its manifest includes Chromium\u0027s\n submodules.  This new change, in addition to fixing the regex, also\n take this type of workarounds into consideration; it adds a new\n attribute that makes repo not fetch submodules unless submodules have a\n project element defined in the manifest, or this attribute is\n overridden by a parent project element or by the default element.)\n\nWe need a representation of git-submodule in repo; otherwise repo will\nnot sync submodules, and leave workspace in a broken state.  Of course\nthis will not be a problem if all projects are owned by the owner of the\nmanifest file, who may simply choose not to use git-submodule in all\nprojects.  However, this is not possible in practice because manifest\nfile owner is unlikely to own all upstream projects.\n\nAs git submodules are simply git repositories, it is natural to treat\nthem as plain repo projects that live inside a repo project.  That is,\nwe could use recursively declared projects to denote the is-submodule\nrelation of git repositories.\n\nThe behavior of repo remains the same to projects that do not have a\nsub-project within.  As for parent projects, repo fetches them and their\nsub-projects as normal projects, and then checks out subprojects at the\ncommit specified in parent\u0027s commit object.  The sub-project is fetched\nat a path relative to parent project\u0027s working directory; so the path\nspecified in manifest file should match that of .gitmodules file.\n\nIf a submodule is not registered in repo manifest, repo will derive its\nproperties from itself and its parent project, which might not always be\ncorrect.  In such cases, the subproject is called a derived subproject.\n\nTo a user, a sub-project is merely a git-submodule; so all tips of\nworking with a git-submodule apply here, too.  For example, you should\nnot run `repo sync` in a parent repository if its submodule is dirty.\n\nChange-Id: I4b8344c1b9ccad2f58ad304573133e5d52e1faef\n"
    },
    {
      "commit": "3f5ea0b18207a81f58595b1a2e10e5ffb784b74f",
      "tree": "32707cff2cf21c9a004e02b2c3fcec2864673119",
      "parents": [
        "b148ac9d9aefb18baddbf9e28ed33b1b8c6e96e6"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Sat Nov 17 03:13:09 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Sat Nov 17 12:40:42 2012 +0900"
      },
      "message": "Allow init command to set options from environment variables\n\nThe manifest URL and mirror location can be specified in environment\nvariables which will be used if the options are not passed on the\ncommand line\n\nChange-Id: Ida87968b4a91189822c3738f835e2631e10b847e\n"
    },
    {
      "commit": "88b86728a4451b97a2c6dcae2feb98014c077793",
      "tree": "cd7329765b3a013535a4c8d5290085ec8fda6101",
      "parents": [
        "e66291f6d0f29938d6671cf8702d0fdab45a1199"
      ],
      "author": {
        "name": "Victor Boivie",
        "email": "victor.boivie@sonyericsson.com",
        "time": "Wed Sep 07 09:43:28 2011 +0200"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Nov 16 04:22:10 2012 +0900"
      },
      "message": "Add option to abort on error in forall\n\nAdd a new option (-e, --abort-on-errors) which will cause forall to\nabort without iterating through remaining projects if a command\nexits unsuccessfully.\n\nBug: Issue 17\nChange-Id: Ibea405e0d98b575ad3bda719d511f6982511c19c\nSigned-off-by: Victor Boivie \u003cvictor.boivie@sonyericsson.com\u003e\n"
    },
    {
      "commit": "33949c34d28eef7b4a27e0fb1a03221cd3c84113",
      "tree": "fa5efe90998a6b14f6ae600e13eb4cef4cc4fe20",
      "parents": [
        "8f62fb7bd305337994bced7d23b347d0d39f5faf"
      ],
      "author": {
        "name": "Olof Johansson",
        "email": "olof.johansson@sonymobile.com",
        "time": "Tue Jul 10 14:32:23 2012 +0200"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Nov 15 03:29:01 2012 +0900"
      },
      "message": "Add repo info command\n\nThe info command will print information regarding the current manifest\nand local git branch. It will also show the difference of commits\nbetween the local branch and the remote branch.\n\nIt also incorporates an overview command into info which shows commits\nover all branches.\n\nChange-Id: Iafedd978f44c84d240c010897eff58bbfbd7de71\n"
    },
    {
      "commit": "8f62fb7bd305337994bced7d23b347d0d39f5faf",
      "tree": "7a00915a4e6138fe2c12d6f8d181b623df8962a2",
      "parents": [
        "c1b86a232383748811c6faf17f364e63e10f7dd4"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 12:09:38 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 12:09:38 2012 +0900"
      },
      "message": "Tidy up code formatting a bit more\n\nEnable the following Pylint warnings:\n\n  C0322: Operator not preceded by a space\n  C0323: Operator not followed by a space\n  C0324: Comma not followed by a space\n\nAnd make the necessary fixes.\n\nChange-Id: I74d74283ad5138cbaf28d492b18614eb355ff9fe\n"
    },
    {
      "commit": "c1b86a232383748811c6faf17f364e63e10f7dd4",
      "tree": "8f28c8e8a922ffd4165f48a1988500070936bd39",
      "parents": [
        "98ffba1401056e2d88d3f3898b6fbf5d7d3931a4"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 11:36:51 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 11:38:57 2012 +0900"
      },
      "message": "Fix inconsistent indentation\n\nThe repo coding style is to indent at 2 characters, but there are\nmany places where this is not followed.\n\nEnable pylint warning \"W0311: Bad indentation\" and make sure all\nindentation is at multiples of 2 characters.\n\nChange-Id: I68f0f64470789ce2429ab11104d15d380a63e6a8\n"
    },
    {
      "commit": "cecd1d864fc3cf02cf50d367111e0d0e173c5dc6",
      "tree": "b4f660400560dce21cd7a00ffe5a5d74b54bcb81",
      "parents": [
        "fc241240d828d7e8302dc0876608a9d27ae1cbc7"
      ],
      "author": {
        "name": "Sarah Owens",
        "email": "sarato@inkylabs.com",
        "time": "Thu Nov 01 22:59:27 2012 -0700"
      },
      "committer": {
        "name": "Sarah Owens",
        "email": "sarato@inkylabs.com",
        "time": "Tue Nov 13 17:33:56 2012 -0800"
      },
      "message": "Change print statements to work in python3\n\nThis is part of a series of changes to introduce Python3 support.\n\nChange-Id: I373be5de7141aa127d7debdbce1df39148dbec32\n"
    },
    {
      "commit": "fc241240d828d7e8302dc0876608a9d27ae1cbc7",
      "tree": "83936a7c4dde92e5ccffb9d884591f633f421390",
      "parents": [
        "9f3406ea4635e0f8cef1d0ec4dbfe6b1554375d6"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 09:19:39 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 09:19:39 2012 +0900"
      },
      "message": "Convert prompt answers to lower case before checking\n\nWhen prompting for yes/no answers, convert the answer to lower\ncase before comparing.  This makes it easier to catch answers\nlike \"Yes\", \"yes\", and \"YES\" with a comparison only for \"yes\".\n\nChange-Id: I06da8281cec81a7438ebb46ddaf3344d12abe1eb\n"
    },
    {
      "commit": "6287543e3508fbd3b92c975771c73e11fd4a5977",
      "tree": "ba76a70bf31554c25c1d7b132bd3149aceb5c434",
      "parents": [
        "5566ae5ddea409279b13e538b513a73062862c3e",
        "a6053d54f1178dc527b383844972c6077ee91a4e"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Nov 12 17:30:55 2012 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 12 17:30:55 2012 -0800"
      },
      "message": "Merge \"Change usages of xrange() to range()\""
    },
    {
      "commit": "8d070cfb254a21ec3f7a07c123165edf1ce379eb",
      "tree": "6d74d599c13bf8c8591d777198cb04b0646c7722",
      "parents": [
        "e072a92a9bb9fdf61bbd1df4e8864f8fd52d5a82"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Nov 06 13:14:31 2012 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Nov 06 13:14:31 2012 -0800"
      },
      "message": "Always show --manifest-server-* options\n\nThe --manifest-server-* flags broke the smartsync subcmd since\nthe corresponding variables weren\u0027t getting set.  This change\nensures that they will always be set, regardless of whether we are\nusing sync -s or smartsync.\n\nChange-Id: I1b642038787f2114fa812ecbc15c64e431bbb829\n"
    },
    {
      "commit": "a6053d54f1178dc527b383844972c6077ee91a4e",
      "tree": "24038d692a1db41c400c9d40da9ac6b5ccfaaa7a",
      "parents": [
        "e072a92a9bb9fdf61bbd1df4e8864f8fd52d5a82"
      ],
      "author": {
        "name": "Sarah Owens",
        "email": "sarato@inkylabs.com",
        "time": "Thu Nov 01 13:36:50 2012 -0700"
      },
      "committer": {
        "name": "Sarah Owens",
        "email": "sarato@inkylabs.com",
        "time": "Thu Nov 01 13:36:50 2012 -0700"
      },
      "message": "Change usages of xrange() to range()\n\nIn Python3, range() creates a generator rather than a list.\n\nNone of the parameters in the ranges changed looked large enough\nto create an impact in memory in Python2.  Note: the only use of\nrange() was for iteration and did not need to be changed.\n\nThis is part of a series of changes to introduce Python3 support.\n\nChange-Id: I50b665f9296ea160a5076c71f36a65f76e47029f\n"
    },
    {
      "commit": "e21526754be58523c673d29731ee01d80e0ffc31",
      "tree": "da87019198b421827c9e3cbaecce88077fb76caa",
      "parents": [
        "1d947b30342163b723c96db563967323535fef45"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Wed Oct 31 12:24:38 2012 -0700"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Wed Oct 31 12:27:17 2012 -0700"
      },
      "message": "sync: Only parallelize gc for git \u003e\u003d 1.7.2\n\nThis minimum version is required for the -c argument to set config on\nthe command line. Without this option, git by default uses as many\nthreads per invocation as there are CPUs, so we cannot safely\nparallelize without hosing a system.\n\nChange-Id: I8fd313dd84917658162b5134b2d9aa34a96f2772\n"
    },
    {
      "commit": "1d947b30342163b723c96db563967323535fef45",
      "tree": "b6b02d02df01792b356b9e50ceeaadcaf3a2e8c5",
      "parents": [
        "2d113f35460051823ea54d61c5c939565518f969"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Oct 25 12:23:11 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Oct 30 10:28:20 2012 +0900"
      },
      "message": "Even more coding style cleanup\n\nFixing some more pylint warnings:\n\nW1401: Anomalous backslash in string\nW0623: Redefining name \u0027name\u0027 from outer scope\nW0702: No exception type(s) specified\nE0102: name: function already defined line n\n\nChange-Id: I5afcdb4771ce210390a79981937806e30900a93c\n"
    },
    {
      "commit": "de7eae482664d4bda61238b6adb679b3b92535d2",
      "tree": "fab047f944470100c621b39da83bd80991f7bdbf",
      "parents": [
        "2fe99e8820a84f545ad45d53921dc94b8bc9d4f3",
        "cd81dd6403fc8dbe6ec5920c517d9083902c3c1f"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Oct 26 12:30:38 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 26 12:30:38 2012 -0700"
      },
      "message": "Merge \"Revert \"Represent git-submodule as nested projects\"\""
    },
    {
      "commit": "2fe99e8820a84f545ad45d53921dc94b8bc9d4f3",
      "tree": "2f5707377de43d2eef4ae7cbc3c47cfeefccbbff",
      "parents": [
        "bed45f940072e6383bf219bc315a65692e93d682",
        "80d2ceb22267b7dc61b107934ff5264b6439a785"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Oct 26 12:27:36 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 26 12:27:36 2012 -0700"
      },
      "message": "Merge \"repo selfupdate: Fix _PostRepoUpgrade takes 2 arguments\""
    },
    {
      "commit": "cd81dd6403fc8dbe6ec5920c517d9083902c3c1f",
      "tree": "935f3f82d2eb32c06b812f66d56d138074309ef8",
      "parents": [
        "80d2ceb22267b7dc61b107934ff5264b6439a785"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Oct 26 12:18:00 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Oct 26 12:24:57 2012 -0700"
      },
      "message": "Revert \"Represent git-submodule as nested projects\"\n\nThis reverts commit 69998b0c6ff724bf620480140ccce648fec7d6a9.\nBroke Android\u0027s non-gitmodule use case.\n\nConflicts:\n\tproject.py\n\tsubcmds/sync.py\n\nChange-Id: I68ceeb63d8ee3b939f85a64736bdc81dfa352aed\n"
    },
    {
      "commit": "80d2ceb22267b7dc61b107934ff5264b6439a785",
      "tree": "8d5c31dc12bf71d3d7f707341c413b3c0801a344",
      "parents": [
        "55e4d464a7f8cf366290ba2d3c8bdd8297d71d32"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Oct 26 12:23:05 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri Oct 26 12:24:57 2012 -0700"
      },
      "message": "repo selfupdate: Fix _PostRepoUpgrade takes 2 arguments\n\nChange-Id: I1cf9e0674ea366ddce96c949e0bc085e3452b25a\n"
    },
    {
      "commit": "bed45f940072e6383bf219bc315a65692e93d682",
      "tree": "8ecdc0ac0fa61221366b183a09a224731327d4d5",
      "parents": [
        "55e4d464a7f8cf366290ba2d3c8bdd8297d71d32",
        "75cc3533801a012c1fe6676e76148416a70693ca"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Oct 26 09:52:15 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 26 09:52:16 2012 -0700"
      },
      "message": "Merge \"Show user about not initializing repo in current directory\""
    },
    {
      "commit": "75cc3533801a012c1fe6676e76148416a70693ca",
      "tree": "c31c72c68ad62b857d01ad67f9af3236c35182a0",
      "parents": [
        "57365c98cc227255f50ab3d71462204c804eb975"
      ],
      "author": {
        "name": "Yang Zhenhui",
        "email": "zhenhui.yang@sonymobile.com",
        "time": "Tue Oct 23 15:41:54 2012 +0800"
      },
      "committer": {
        "name": "Bruce Zu",
        "email": "bruce.zu@sonymobile.com",
        "time": "Fri Oct 26 15:40:17 2012 +0800"
      },
      "message": "Show user about not initializing repo in current directory\n\nIf the parent of current directory has an initialized repo,\nfor example, if the current directory is\n\u0027/home/users/harry/platform/ics\u0027, and there is an initialized repo\nin harry\u0027s home directory \u0027/home/users/harry/.repo\u0027, when user\nrun \u0027repo init\u0027 command, repo is always initialized to parent\ndirectory in \u0027/home/users/harry/.repo\u0027, but most of time user\nintends to initialize repo in the current directory, this patch\ntells user how to do it.\n\nChange-Id: Id7a76fb18ec0af243432c29605140d60f3de85ca\n"
    },
    {
      "commit": "c9129d90deb7377324b5178a231657e3d8c74019",
      "tree": "f0dd3f9ade22e48f4ab9cb8447a360e2e01a5aca",
      "parents": [
        "57365c98cc227255f50ab3d71462204c804eb975"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Oct 01 16:12:28 2012 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Oct 25 17:48:35 2012 -0700"
      },
      "message": "Update PGP keys during _PostRepoUpgrade in `sync`\n\nPreviously, if a key was added, a client wouldn\u0027t add the key during\nthe sync step.  This would cause issues if a new key were added and a\nsubsequent release were signed by that key.\n\nChange-Id: I4fac317573cd9d0e8da62aa42e00faf08bfeb26c\n"
    },
    {
      "commit": "57365c98cc227255f50ab3d71462204c804eb975",
      "tree": "04ade83292c018ffd23beae5b228e4b6f688530e",
      "parents": [
        "dc96476af37558c8eaf6d25087d4a604612642dd",
        "188572170e8cdf28df55a5ca90ed70d14b72b804"
      ],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Thu Oct 25 17:38:05 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 25 17:38:05 2012 -0700"
      },
      "message": "Merge \"sync: Run gc --auto in parallel\""
    },
    {
      "commit": "2577cec0952899040cd8c6523f69ece4cdc005ac",
      "tree": "792f82c975d0d5d039ac3a6c6adc8404d87e8b2c",
      "parents": [
        "e48d34659ebda45431512ab2478558f8e4cdd46c",
        "d947858325ae70ff9c0b2f463a9e8c4ffd00002a"
      ],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Thu Oct 25 17:35:15 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 25 17:35:15 2012 -0700"
      },
      "message": "Merge \"sync: Keep a moving average of last fetch times\""
    },
    {
      "commit": "e48d34659ebda45431512ab2478558f8e4cdd46c",
      "tree": "ab38328b72acf6cb6898f2b6ed3cb859c48249fe",
      "parents": [
        "ab8f911a6721424ddc7cda7ebd2a07270a5909b1",
        "67700e9b90a38cc3719c818bc967153e8b7b429e"
      ],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Thu Oct 25 17:33:36 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 25 17:33:36 2012 -0700"
      },
      "message": "Merge \"sync: Order projects according to last fetch time\""
    },
    {
      "commit": "ab8f911a6721424ddc7cda7ebd2a07270a5909b1",
      "tree": "cf4b0cfab756dc78747894189ef918a262811d48",
      "parents": [
        "608aff7f624e35348ff9fab74bad1d6921944238"
      ],
      "author": {
        "name": "Che-Liang Chiou",
        "email": "clchiou@google.com",
        "time": "Thu Oct 25 13:44:11 2012 -0700"
      },
      "committer": {
        "name": "Che-Liang Chiou",
        "email": "clchiou@google.com",
        "time": "Thu Oct 25 13:55:49 2012 -0700"
      },
      "message": "Fix pylint warnings introduced by the submodule patch\n\n\"69998b0 Represent git-submodule as nested projects\" has introduced a\nfew pylint warnings.\n\nW0612:1439,8:Project._GetSubmodules.get_submodules: Unused variable \u0027sub_gitdir\u0027\nW0613:1424,36:Project._GetSubmodules.get_submodules: Unused argument \u0027path\u0027\nW0612:1450,25:Project._GetSubmodules.parse_gitmodules: Unused variable \u0027e\u0027\nW0622:516,8:Sync.Execute: Redefining built-in \u0027all\u0027\n\nChange-Id: I84378e2832ed1b5ab023e394d53b22dcea799ba4\n"
    },
    {
      "commit": "608aff7f624e35348ff9fab74bad1d6921944238",
      "tree": "e1bdbb8af5927dd226d8e22dc382fd24c4cdfa5e",
      "parents": [
        "13657c407d0424d0866993bea39ed01094caa1c1",
        "a5be53f9c809009e67f217c00b8f30246aacc237"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Oct 25 10:03:36 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 25 10:03:37 2012 -0700"
      },
      "message": "Merge \"Use modern Python exception syntax\""
    },
    {
      "commit": "13657c407d0424d0866993bea39ed01094caa1c1",
      "tree": "74f69003f5f71602e7ed0a6d2d5dd92d03f95caa",
      "parents": [
        "e4ed8f65f376009f70fab0e7978fdfc223f23a76",
        "d75c669fac50f5224b567127291976fd36b31546"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Oct 25 10:00:41 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 25 10:00:42 2012 -0700"
      },
      "message": "Merge \"Add regex matching to repo list command\""
    },
    {
      "commit": "188572170e8cdf28df55a5ca90ed70d14b72b804",
      "tree": "d64ad4724552898c9c49ba19f715c74c5caa504c",
      "parents": [
        "091f893625269fd12adadf7d1f60c21b4b83e779"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Tue Oct 23 17:02:59 2012 -0700"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Thu Oct 25 08:12:48 2012 -0700"
      },
      "message": "sync: Run gc --auto in parallel\n\nWe can\u0027t just let this run wild with a high (or even low) -j, since\nthat would hose a system. Instead, limit the total number of threads\nacross all git gc subprocesses to the number of CPUs reported by the\nmultiprocessing module (available in Python 2.6 and above).\n\nChange-Id: Icca0161a1e6116ffa5f7cfc6f5faecda510a7fb9\n"
    },
    {
      "commit": "d75c669fac50f5224b567127291976fd36b31546",
      "tree": "84a7973f8d169b73168d314aa4061424bbd07d2c",
      "parents": [
        "69998b0c6ff724bf620480140ccce648fec7d6a9"
      ],
      "author": {
        "name": "Olof Johansson",
        "email": "olof.johansson@sonymobile.com",
        "time": "Tue Oct 09 08:25:55 2012 +0200"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Oct 25 15:49:13 2012 +0900"
      },
      "message": "Add regex matching to repo list command\n\nThe repo list -r command will execute a regex search for every\nargument provided on both the project name and the project\nworktree path.\n\nUseful for finding rarely used gits.\n\nChange-Id: Iaff90dd36c240b3d5d74817d11469be22d77ae03\n"
    },
    {
      "commit": "d947858325ae70ff9c0b2f463a9e8c4ffd00002a",
      "tree": "edf33164dfdd829eae74244198f790629d2fabc8",
      "parents": [
        "67700e9b90a38cc3719c818bc967153e8b7b429e"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Tue Oct 23 16:35:39 2012 -0700"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Wed Oct 24 14:52:07 2012 -0700"
      },
      "message": "sync: Keep a moving average of last fetch times\n\nTry to more accurately estimate which projects take the longest to\nsync by keeping an exponentially weighted moving average (a\u003d0.5) of\nfetch times, rather than just recording the last observation. This\nshould discount individual outliers (e.g. an unusually large project\nupdate) and hopefully allow truly slow repos to bubble to the top.\n\nChange-Id: I72b2508cb1266e8a19cf15b616d8a7fc08098cb3\n"
    },
    {
      "commit": "67700e9b90a38cc3719c818bc967153e8b7b429e",
      "tree": "57768c3936f66cb28b623c13e59c2bc1dba247ff",
      "parents": [
        "5c6eeac8f0350fd6b14cf226ffcff655f1dd9582"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Tue Oct 23 15:00:54 2012 -0700"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Wed Oct 24 14:51:58 2012 -0700"
      },
      "message": "sync: Order projects according to last fetch time\n\nSome projects may consistently take longer to fetch than others, for\nexample a more active project may have many more Gerrit changes than a\nless active project, which take longer to transfer. Use a simple\nheuristic based on the last fetch time to fetch slower projects first,\nso we do not tend to spend the end of the sync fetching a small number\nof outliers.\n\nThis algorithm is probably not optimal, and due to inter-run latency\nvariance and Python thread scheduling, we may not even have good\nestimates of a project sync time.\n\nChange-Id: I9a463f214b3ed742e4d807c42925b62cb8b1745b\n"
    },
    {
      "commit": "a5be53f9c809009e67f217c00b8f30246aacc237",
      "tree": "7ab0da1fd31968eee882de81df8c9b93ae52fdfb",
      "parents": [
        "9ed12c5d9cda1f010bc173b0bc622d59e96b0dd0"
      ],
      "author": {
        "name": "Sarah Owens",
        "email": "sarato@inkylabs.com",
        "time": "Sun Sep 09 15:37:57 2012 -0700"
      },
      "committer": {
        "name": "Sarah Owens",
        "email": "sarato@inkylabs.com",
        "time": "Tue Oct 23 21:35:59 2012 -0700"
      },
      "message": "Use modern Python exception syntax\n\n\"except Exception as e\" instead of \"except Exception, e\"\n\nThis is part of a transition to supporting Python 3.  Python \u003e\u003d 2.6\nsupport \"as\" syntax.\n\nNote: this removes Python 2.5 support.\n\nChange-Id: I309599f3981bba2b46111c43102bee38ff132803\n"
    },
    {
      "commit": "4f7bdea9d24c4eb52f83ada2b67b88ad67cb57a7",
      "tree": "49c93020cd026d13f43325b43d13266542cdc5a1",
      "parents": [
        "69998b0c6ff724bf620480140ccce648fec7d6a9"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon Oct 22 12:50:15 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Oct 24 10:18:13 2012 +0900"
      },
      "message": "Add pylint configuration and instructions\n\npylint configuration file (.pylintrc) is added, and submission\ninstructions are updated to include pylint usage steps.\n\nDeprecated pylint suppression (`disable-msg`) is updated in a few\nmodules to make it work properly with the latest version (0.26).\n\nChange-Id: I4ec2ef318e23557a374ecdbf40fe12645766830c\n"
    },
    {
      "commit": "69998b0c6ff724bf620480140ccce648fec7d6a9",
      "tree": "b6f9c4c00b04a0f140074c4c2dba91ed4f055b11",
      "parents": [
        "5c6eeac8f0350fd6b14cf226ffcff655f1dd9582"
      ],
      "author": {
        "name": "Che-Liang Chiou",
        "email": "clchiou@google.com",
        "time": "Wed Jan 11 11:28:42 2012 +0800"
      },
      "committer": {
        "name": "Che-Liang Chiou",
        "email": "clchiou@google.com",
        "time": "Tue Oct 23 16:08:58 2012 -0700"
      },
      "message": "Represent git-submodule as nested projects\n\nWe need a representation of git-submodule in repo; otherwise repo will\nnot sync submodules, and leave workspace in a broken state.  Of course\nthis will not be a problem if all projects are owned by the owner of the\nmanifest file, who may simply choose not to use git-submodule in all\nprojects.  However, this is not possible in practice because manifest\nfile owner is unlikely to own all upstream projects.\n\nAs git submodules are simply git repositories, it is natural to treat\nthem as plain repo projects that live inside a repo project.  That is,\nwe could use recursively declared projects to denote the is-submodule\nrelation of git repositories.\n\nThe behavior of repo remains the same to projects that do not have a\nsub-project within.  As for parent projects, repo fetches them and their\nsub-projects as normal projects, and then checks out subprojects at the\ncommit specified in parent\u0027s commit object.  The sub-project is fetched\nat a path relative to parent project\u0027s working directory; so the path\nspecified in manifest file should match that of .gitmodules file.\n\nIf a submodule is not registered in repo manifest, repo will derive its\nproperties from itself and its parent project, which might not always be\ncorrect.  In such cases, the subproject is called a derived subproject.\n\nTo a user, a sub-project is merely a git-submodule; so all tips of\nworking with a git-submodule apply here, too.  For example, you should\nnot run `repo sync` in a parent repository if its submodule is dirty.\n\nChange-Id: I541e9e2ac1a70304272dbe09724572aa1004eb5c\n"
    },
    {
      "commit": "5c6eeac8f0350fd6b14cf226ffcff655f1dd9582",
      "tree": "3225695b9d2a97342a49127717ea5e2bc5935a63",
      "parents": [
        "e98607248eec2b149d84efe944c12cbef419b82e"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Oct 11 16:44:48 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon Oct 22 12:30:14 2012 +0900"
      },
      "message": "More coding style cleanup\n\nFixing more issues found with pylint.  Some that were supposed to\nhave been fixed in the previous sweep (Ie0db839e) but were missed:\n\nC0321: More than one statement on a single line\nW0622: Redefining built-in \u0027name\u0027\n\nAnd some more:\n\nW0631: Using possibly undefined loop variable \u0027name\u0027\nW0223: Method \u0027name\u0027 is abstract in class \u0027name\u0027 but is not overridden\nW0231: __init__ method from base class \u0027name\u0027 is not called\n\nChange-Id: Ie119183708609d6279e973057a385fde864230c3\n"
    },
    {
      "commit": "2f6ab7f5b8f21b2dbfe9ae102674bd1694e94f03",
      "tree": "040f9045751d83902ea8c479304fdfa2a0061a54",
      "parents": [
        "3a6cd4200e42fbb5a21b3fb8d3c9738c0320cc63"
      ],
      "author": {
        "name": "Mickaël Salaün",
        "email": "mic@digikod.net",
        "time": "Sun Sep 30 00:37:55 2012 +0200"
      },
      "committer": {
        "name": "Mickaël Salaün",
        "email": "mic@digikod.net",
        "time": "Wed Oct 10 08:30:15 2012 +0200"
      },
      "message": "Rename \"dir\" variables\n\nThe variable name \"dir\" conflicts with the name of a Python built-in\nfunction: http://docs.python.org/library/functions.html#dir\n\nChange-Id: I850f3ec8df7563dc85e21f2876fe5e6550ca2d8f\n"
    },
    {
      "commit": "3a6cd4200e42fbb5a21b3fb8d3c9738c0320cc63",
      "tree": "68ae5094d6530453887fb35a73fd5fa55f55a034",
      "parents": [
        "25f17682ca4ecd8acc887462d4bebc7c429cf110",
        "8a68ff96057ec58e524a3e41a2d8dca7b5d016bc"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Oct 09 14:29:46 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 09 14:29:46 2012 -0700"
      },
      "message": "Merge \"Coding style cleanup\""
    },
    {
      "commit": "25f17682ca4ecd8acc887462d4bebc7c429cf110",
      "tree": "8416b3cc2ac42cbf43452da418121f0b056ca878",
      "parents": [
        "e3b1c45aebed329cbc9ad172b1d8e812cf208117",
        "297e7c6ee69077cb063b90a32d22b0b812a95841"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Oct 09 13:46:10 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 09 13:46:10 2012 -0700"
      },
      "message": "Merge \"Expand ~ to user\u0027s home directory for --reference\""
    },
    {
      "commit": "8a68ff96057ec58e524a3e41a2d8dca7b5d016bc",
      "tree": "22f6971e8d3c4a90d11d3704602d073a852328b4",
      "parents": [
        "e3b1c45aebed329cbc9ad172b1d8e812cf208117"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon Sep 24 12:15:13 2012 +0900"
      },
      "committer": {
        "name": "Gustaf Lundh",
        "email": "gustaf.lundh@sonymobile.com",
        "time": "Tue Oct 09 12:45:30 2012 +0200"
      },
      "message": "Coding style cleanup\n\nFix the following issues reported by pylint:\n\nC0321: More than one statement on a single line\nW0622: Redefining built-in \u0027name\u0027\nW0612: Unused variable \u0027name\u0027\nW0613: Unused argument \u0027name\u0027\nW0102: Dangerous default value \u0027value\u0027 as argument\nW0105: String statement has no effect\n\nAlso fixed a few cases of inconsistent indentation.\n\nChange-Id: Ie0db839e7c57d576cff12d8c055fe87030d00744\n"
    },
    {
      "commit": "297e7c6ee69077cb063b90a32d22b0b812a95841",
      "tree": "5e9c8fea016c7943dd3b933e228e238d171b091b",
      "parents": [
        "7119f94abaa48b3b7fb990f2a12ec5458ef3f133"
      ],
      "author": {
        "name": "Victor Boivie",
        "email": "victor.boivie@sonymobile.com",
        "time": "Fri Oct 05 14:50:05 2012 +0200"
      },
      "committer": {
        "name": "Gustaf Lundh",
        "email": "gustaf.lundh@sonymobile.com",
        "time": "Mon Oct 08 15:03:20 2012 +0200"
      },
      "message": "Expand ~ to user\u0027s home directory for --reference\n\nThis allows a user to have a \u0027repo init\u0027 as:\n  $ repo init -u ... --reference\u003d~/mirror\n\nChange-Id: Ib85b7c8ffca9d732132c68fe9a8d7f0ab1fa9288\n"
    },
    {
      "commit": "e3b1c45aebed329cbc9ad172b1d8e812cf208117",
      "tree": "629984135b1cea3c0a32454eaecbe806ed09ca58",
      "parents": [
        "7119f94abaa48b3b7fb990f2a12ec5458ef3f133"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Oct 03 18:04:02 2012 +0900"
      },
      "committer": {
        "name": "Gustaf Lundh",
        "email": "gustaf.lundh@sonymobile.com",
        "time": "Fri Oct 05 10:34:19 2012 +0200"
      },
      "message": "Remove unreachable code\n\nChange 9bb1816b removed part of a block of code, but left the\nremaining part unreachable.  Remove it.\n\nChange-Id: Icdc6061d00e6027df32dee9a3bad3999fe7cdcbc\n"
    },
    {
      "commit": "3ff9decfd4e2f1fed71658d0f78a17895f80ff5f",
      "tree": "5ecf68da509291eaf368772f3f5c3571060651a8",
      "parents": [
        "9779565abf06d2f1e48548197be350a06c1eab9b",
        "14a6674e32b3000dbe8b7c96b0d1bb4fb0021720"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Oct 03 16:49:12 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 03 16:49:12 2012 -0700"
      },
      "message": "Merge \"manifest: record the original revision when in -r mode.\""
    },
    {
      "commit": "14a6674e32b3000dbe8b7c96b0d1bb4fb0021720",
      "tree": "024482226fefd4c188f20f56047325b69d388a9f",
      "parents": [
        "34acdd253439448b6c08c3abfc5e7b8bd03f383f"
      ],
      "author": {
        "name": "Brian Harring",
        "email": "ferringb@google.com",
        "time": "Fri Sep 28 20:21:57 2012 -0700"
      },
      "committer": {
        "name": "Brian Harring",
        "email": "ferringb@google.com",
        "time": "Fri Sep 28 22:31:27 2012 -0700"
      },
      "message": "manifest: record the original revision when in -r mode.\n\nCurrently when doing a sync against a revision locked manifest,\nsync has no option but to fall back to sync\u0027ing the entire refs space;\nit doesn\u0027t know which ref to ask for that contains the sha1 it wants.\n\nThis sucks if we\u0027re in -c mode; thus when we generate a revision\nlocked manifest, record the originating branch- and try syncing that\nbranch first.  If the sha1 is found within that branch, this saves\nus having to pull down the rest of the repo- a potentially heavy\nsaving.\n\nIf that branch doesn\u0027t have the desired sha1, we fallback to sync\u0027ing\neverything.\n\nChange-Id: I99a5e44fa1d792dfcada76956a2363187df94cf1\n"
    },
    {
      "commit": "cf76b1bcec6386f9530636e64746502f9856b5cf",
      "tree": "15bd204cace8d3d43161f8ef91130984159e9049",
      "parents": [
        "e00aa6b923d28a3c910f85e7726e4ba1d2a9aebd"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Sep 14 10:31:42 2012 +0900"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 21 11:20:59 2012 -0700"
      },
      "message": "sync: Support manual authentication to the manifest server\n\nAdd two new command line options, -u/--manifest-server-username and\n-p/--manifest-server-password, which can be used to specify a username\nand password to authenticate to the manifest server when using the\n-s/--smart-sync or -t/--smart-tag option.\n\nIf -u and -p are not specified when using the -s or -t option, use\nauthentication credentials from the .netrc file (if there are any).\n\nAuthentication credentials from -u/-p or .netrc are not used if the\nmanifest server specified in the manifest file already includes\ncredentials.\n\nChange-Id: I6cf9540d28f6cef64c5694e8928cfe367a71d28d\n"
    },
    {
      "commit": "e00aa6b923d28a3c910f85e7726e4ba1d2a9aebd",
      "tree": "07c848b81c58e5d4a8e34ecae8606ee5fa62679e",
      "parents": [
        "86d973d24ec6771504c37eddc535dff8e03c724f"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Sep 11 14:33:51 2012 +0900"
      },
      "committer": {
        "name": "Gustaf Lundh",
        "email": "gustaf.lundh@sonymobile.com",
        "time": "Tue Sep 18 09:54:57 2012 +0200"
      },
      "message": "Clean up imports\n\nmanifest_xml: import `HEAD` and `R_HEADS` from correct module\nversion: import `HEAD` from correct module\n\n`HEAD` and `R_HEADS` should be imported from the git_refs module,\nwhere they are originally defined, rather than from the project\nmodule.\n\nrepo: remove unused import of readline\n\ncherry_pick: import standard modules on separate lines\nsmartsync: import subcmd modules explicitly from subcmd\n\nUse:\n  `import re\n  import sys`\nand\n  `from subcmds.sync import Sync`\n\nInstead of:\n  `import sys, re`\nand\n  `from sync import Sync`\n\nChange-Id: Ie10dd6832710939634c4f5c86b9ba5a9cd6fc92e\n"
    },
    {
      "commit": "86d973d24ec6771504c37eddc535dff8e03c724f",
      "tree": "1676f107c59efd1d92bd92cb48a9dc726bf00e59",
      "parents": [
        "34acdd253439448b6c08c3abfc5e7b8bd03f383f"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Aug 24 10:21:02 2012 +0900"
      },
      "committer": {
        "name": "Gustaf Lundh",
        "email": "gustaf.lundh@sonymobile.com",
        "time": "Tue Sep 11 09:45:48 2012 +0200"
      },
      "message": "sync: Support authentication to manifest server with .netrc\n\nWhen using the --smart-sync or --smart-tag option, and the specified\nmanifest server is hosted on a server that requires authentication,\nrepo sync fails with the error: HTTP 401 Unauthorized.\n\nAdd support for getting the credentials from the .netrc file.\n\nIf a .netrc file exists in the user\u0027s home directory, and it contains\ncredentials for the hostname of the manifest server specified in the\nmanifest, use the credentials to authenticate with the manifest server\nusing the URL syntax extension for Basic Authentication:\n\n  http://user:password@host:port/path\n\nCredentials from the .netrc file are only used if the manifest server\nURL specified in the manifest does not already include credentials.\n\nChange-Id: I06e6586e8849d0cd12fa9746789e8d45d5b1f848\n"
    },
    {
      "commit": "d94aaef39e301cc912968c07d1783232bf34a174",
      "tree": "48b884fef63992e8b80127c40687a7cf5ff4c8f7",
      "parents": [
        "bd489c4eaa592af98b8b4f09b0a465e0d2b6046a"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Sep 07 09:52:04 2012 +0900"
      },
      "committer": {
        "name": "Gustaf Lundh",
        "email": "gustaf.lundh@sonymobile.com",
        "time": "Fri Sep 07 10:17:00 2012 +0200"
      },
      "message": "sync: Correct imports of `R_HEADS` and `HEAD`\n\n`R_HEADS` is imported twice, from both the git_refs and project\nmodules.\n\nIt is actually defined in git_refs, and in project it is imported\nfrom there, so the import of `R_HEADS` from project in the sync\nmodule is redundant.  Remove it.\n\n`HEAD` is imported from project, but like `R_HEADS` it is actually\ndefined in git_refs.  Import it from git_refs instead.\n\nChange-Id: I8e2b0217d0d9f9f4ee5ef5b8cd0b026174ac52f4\n"
    }
  ],
  "next": "bd489c4eaa592af98b8b4f09b0a465e0d2b6046a"
}
