)]}'
{
  "log": [
    {
      "commit": "3a2a59eb87b58a4b5a26349434db322846cb6b57",
      "tree": "cb8da8261bd7efe57a00c2488fc9ece582062b9c",
      "parents": [
        "45d21685b93f80b67239849b2d2cfe6b217e335a"
      ],
      "author": {
        "name": "anatoly techtonik",
        "email": "techtonik@gmail.com",
        "time": "Sat Sep 21 19:29:10 2013 +0300"
      },
      "committer": {
        "name": "anatoly techtonik",
        "email": "techtonik@gmail.com",
        "time": "Sat Sep 21 20:03:57 2013 +0300"
      },
      "message": "repo: use explicit Python executable to run main.py\n\nSmall step to support non-POSIX platforms.\n\nChange-Id: I3bdb9c82c2dfbacb1da328caaa1a406ab91ad675\n"
    },
    {
      "commit": "45d21685b93f80b67239849b2d2cfe6b217e335a",
      "tree": "18e5f686341976ba5252c40839ec1de400ba647c",
      "parents": [
        "597868b4c45bba380249b739c0cf49b868cc8741"
      ],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Thu Feb 28 00:35:51 2013 -0800"
      },
      "committer": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Thu Feb 28 12:10:31 2013 -0800"
      },
      "message": "upload: support --re and --cc options over HTTP\n\nHTTP can\u0027t use the older style of passing options as part of\nthe git receive-pack command line. Use the new style as defined\nby https://gerrit-review.googlesource.com/42652 when connecting\nover HTTP.\n\nIf the Gerrit server is too old to understand the % option\nsyntax used here one of two outcomes is possible:\n\n- If no topic name was sent the server will fail with an error\n  message. This happens because the user tried to do an upload to\n  \"refs/for/master%r\u003dalice\", and the branch does not exist.\n  The user can delete the options and retry the upload.\n\n- If a topic was set the options will be read as part of the\n  topic string and shown on the change page in the topic field.\n\nEither outcome is slightly better than the current behavior of\njust dropping the data on the floor and forgetting whatever the\nuser tried to supply.\n\nChange-Id: Ib2df62679e5bf3ee93d6b18c12ab6474f96d9106\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": "b75415075c00bb17e14c5666a380b7e940db8c84",
      "tree": "2d94ac7c8db65324f038d3c666251848caddfa72",
      "parents": [
        "5f434ed723ac14cdcea12d038c066c0653e1ef3a"
      ],
      "author": {
        "name": "Olof Johansson",
        "email": "olof.johansson@sonymobile.com",
        "time": "Tue Feb 26 07:36:03 2013 +0100"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Feb 26 16:04:55 2013 +0900"
      },
      "message": "Add nofmt_printer to color.py\n\nThe current printer always expands on the arguments which is a problem\nfor strings containing %.\n\nInstead of forcing manual string expansion before printing allow for a\nno format printer option which simply accepts and prints the string.\n\nPart of fix for issue #131:\nhttp://code.google.com/p/git-repo/issues/detail?id\u003d131\n\nChange-Id: I08ef94b9c4ddab58ac12d2bd32ebd2c413e4f83b\n"
    },
    {
      "commit": "5f434ed723ac14cdcea12d038c066c0653e1ef3a",
      "tree": "259f4860618f544f8ff96e1c9684ff89e5812bc4",
      "parents": [
        "606eab804302a92d232735d4aa57853cf3be3d9a"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Nov 22 13:48:10 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Sun Feb 17 21:20:20 2013 +0900"
      },
      "message": "Exit with fatal error if local manifest file cannot be parsed\n\nIf the .repo/local_manifests folder includes a local manifest file\nthat cannot be parsed, the current behaviour is to catch the parse\nexception, print a warning, and continue to process remaining files.\n\nThis can cause any errors to go unnoticed.\n\nRemove the exception handling, so that the exception is instead\ncaught in main._Main, and repo exits with a fatal error.\n\nChange-Id: I75a70b7b850d2eb3e4ac99d435a4568ff598b7f4\n"
    },
    {
      "commit": "606eab804302a92d232735d4aa57853cf3be3d9a",
      "tree": "5cc12b737e94b8bc8e1ab84a88c021464b73de3e",
      "parents": [
        "cd07cfae1c5c3588ea4a4ca1fb85e208f1aa5b33"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Nov 22 13:47:16 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Sun Feb 17 21:19:58 2013 +0900"
      },
      "message": "Show full path of `local_manifests` folder in deprecation warning\n\nWhen a local_manifest.xml file is present, a deprecation warning\nis printed telling the user to put local manifest files in the\n`local_manifests` directory.\n\nInclude the full path to the `local_manifests` directory in the\nwarning, to reduce confusion about where the directory should be\nlocated.  Also enclose the directory name in backticks.\n\nChange-Id: I85710cfbd6e77fb2fa6b7b0ce66d77693ccd649f\n"
    },
    {
      "commit": "cd07cfae1c5c3588ea4a4ca1fb85e208f1aa5b33",
      "tree": "943f3351199a056722f23f70050d4a69e773cbb7",
      "parents": [
        "55693aabe5d19e5be73a3bab683960aaf6aff7c8",
        "bbf71fe363d7ac9411f37c4075bf11004c2b4e60"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Feb 14 07:51:35 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 14 07:51:36 2013 +0000"
      },
      "message": "Merge \"Protect line endings in shell scripts\""
    },
    {
      "commit": "55693aabe5d19e5be73a3bab683960aaf6aff7c8",
      "tree": "e3b8a33b2096812ba14d3ce77547aab2805a5700",
      "parents": [
        "23bd3a1dd309c8c5727832b7543298584bf53de8"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Feb 13 09:55:32 2013 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Feb 13 09:56:09 2013 +0900"
      },
      "message": "Update the commit-msg hook to the version from Gerrit 2.5.2\n\nChange-Id: I00760fe55a0e1b61375a378c05f263e7bc857ca0\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": "bbf71fe363d7ac9411f37c4075bf11004c2b4e60",
      "tree": "59c9c9867910d10b96309432e923480675163072",
      "parents": [
        "cd81dd6403fc8dbe6ec5920c517d9083902c3c1f"
      ],
      "author": {
        "name": "Mats Bengtsson",
        "email": "mmmats@gmail.com",
        "time": "Mon Feb 11 22:13:39 2013 +0100"
      },
      "committer": {
        "name": "Mats Bengtsson",
        "email": "mmmats@gmail.com",
        "time": "Mon Feb 11 22:13:39 2013 +0100"
      },
      "message": "Protect line endings in shell scripts\n\nAdd a .gitattributes file to prevent /bin/sh scripts from\ngetting clobbered by git config core.autocrlf\u003dtrue setting.\n\nChange-Id: I3dfc992a9c275fceae64c9719168d81e60d911bd\n"
    },
    {
      "commit": "91f011ab0df9e1aa215e39b424c9ce2614bae50e",
      "tree": "15c9c9b087d8502f4b560fd3afff0a74300137fb",
      "parents": [
        "57bd7b717ba830753b5c6d82bb84d38047dce637",
        "87b9d9b4f2b9540fdd23a2b13af622d04a15269a"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon Feb 04 10:58:48 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 04 10:58:48 2013 +0000"
      },
      "message": "Merge \"Don\u0027t exit with error on HTTP 403 when downloading clone bundle\""
    },
    {
      "commit": "87b9d9b4f2b9540fdd23a2b13af622d04a15269a",
      "tree": "384354273f799e1928461ea1d962020c0142bfc3",
      "parents": [
        "4e46520362e4c75ae7809c74f3d1c21e86852ee8"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon Nov 26 18:30:32 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Jan 31 21:12:08 2013 +0900"
      },
      "message": "Don\u0027t exit with error on HTTP 403 when downloading clone bundle\n\nIf the server returns HTTP 403 (forbidden) when attempting to\ndownload clone bundle files, ignore it and continue, rather than\nexiting with a fatal error.\n\nChange-Id: Icf78cba0332b51b0e7b622f7c7924369b551b6f6\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": "4e46520362e4c75ae7809c74f3d1c21e86852ee8",
      "tree": "6a1aff062529de8af252c7ab2e0e8b2649f922ff",
      "parents": [
        "63d356ffce72f76936a17902fe2f4abcb43078bb"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Nov 27 22:20:10 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Jan 29 10:09:21 2013 +0900"
      },
      "message": "Add missing manifest format documentation\n\nDocumentation of the \"sync-j\", \"sync-c\", \"sync-s\" and \"upstream\"\nattributes is missing/incomplete.  Add it.\n\nChange-Id: I74977f819f603c520ef3818f85c3b51399cd2b94\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": "4baf87f92c55d3daba1410f04bd10f1a41a088b8",
      "tree": "cac6a39c2bacd11e83938b642303a85048521726",
      "parents": [
        "84f7e137c20b7500a6a5c719c39e9166c6e40e85",
        "223bf963f0342f3cc50728b2f9535b528592e64a"
      ],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Mon Jan 28 16:25:54 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 28 16:25:55 2013 +0000"
      },
      "message": "Merge \"should use os.path.lexist instead of os.path.exist\""
    },
    {
      "commit": "84f7e137c20b7500a6a5c719c39e9166c6e40e85",
      "tree": "ae4ebf317539cbd519ebe5ea3e055f0127510097",
      "parents": [
        "26e2475a0fe090f5bd2c0a0a040f21cc71aac095",
        "ed68d0e8529f059a5d989ebd505bfb53e869ec2f"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Jan 17 20:02:03 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 17 20:02:03 2013 +0000"
      },
      "message": "Merge \"Check for a cookie file when fetching clone.bundle.\""
    },
    {
      "commit": "26e2475a0fe090f5bd2c0a0a040f21cc71aac095",
      "tree": "3df2016a6bd52802151917b4c35a8e07f0d6d16f",
      "parents": [
        "c59bafffb972dedd279e16a3a34415cda2ce3f58"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Fri Jan 11 12:35:53 2013 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Jan 17 09:10:00 2013 -0800"
      },
      "message": "If parsing the manifests fails, reset the XmlManifest object\n\nso that if it\u0027s called again, we see the correct errors.\n\nChange-Id: I909488feeac04aecfc92a9b5d6fb17827ef2f213\n"
    },
    {
      "commit": "c59bafffb972dedd279e16a3a34415cda2ce3f58",
      "tree": "fbbb67a02619f1e5cdfd6755343bd53834987a0d",
      "parents": [
        "0290cad5db0eef3b15eb976dd7a017837e36c8b7",
        "1a5c774cbff8aead0c45cc90be2f78ffd08dc376"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Jan 17 17:06:49 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 17 17:06:49 2013 +0000"
      },
      "message": "Merge \"Pass full path of the XML in local_manifests to the parser\""
    },
    {
      "commit": "0290cad5db0eef3b15eb976dd7a017837e36c8b7",
      "tree": "70cbd27abcad80e79699e63c5bc184e54f7c3ab9",
      "parents": [
        "a9f11b3cb281270084526a490dc61625b51b8192",
        "0c635bb42708bb2151a92c39b31464bde1ab46f4"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Jan 14 22:34:13 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 14 22:34:13 2013 +0000"
      },
      "message": "Merge \"Make -notdefault a default manifest group\""
    },
    {
      "commit": "ed68d0e8529f059a5d989ebd505bfb53e869ec2f",
      "tree": "c876b1a372ae8d9b2f0681b64fac0ef1f0cbb613",
      "parents": [
        "a9f11b3cb281270084526a490dc61625b51b8192"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Fri Jan 11 16:22:54 2013 +0000"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Fri Jan 11 16:22:54 2013 +0000"
      },
      "message": "Check for a cookie file when fetching clone.bundle.\n\nIf the user\u0027s git config specifies a cookie file for HTTP, use it when\nfetching clone.bundle, as it may contain the required login credentials\nto get access (e.g. when used with Compute Engine service accounts).\n\nChange-Id: I12ee9e38694822ef1de4ed62138c3876c43f431b\n"
    },
    {
      "commit": "1a5c774cbff8aead0c45cc90be2f78ffd08dc376",
      "tree": "55a53179bc72e305749f891abe8ab3c93c7295b4",
      "parents": [
        "a9f11b3cb281270084526a490dc61625b51b8192"
      ],
      "author": {
        "name": "Tobias Droste",
        "email": "tdroste@gmx.de",
        "time": "Thu Jan 03 18:27:45 2013 +0100"
      },
      "committer": {
        "name": "Tobias Droste",
        "email": "tdroste87@gmail.com",
        "time": "Mon Jan 07 07:46:18 2013 +0100"
      },
      "message": "Pass full path of the XML in local_manifests to the parser\n\nThis fixes the following python error message if the\ncurrent working directory is not .repo/local_manifests:\nIOError: [Errno 2] No such file or directory: \u0027local_manifest.xml\u0027\n\nSigned-off-by: Tobias Droste \u003ctdroste87@gmail.com\u003e\nCC: David Pursehouse \u003cdavid.pursehouse@sonymobile.com\u003e\nChange-Id: I4668dc04219b6233c7ff6ca3b4138bec9ee3529f\n"
    },
    {
      "commit": "a9f11b3cb281270084526a490dc61625b51b8192",
      "tree": "040d3144fd3c540b7b2d1a381ea28ac14ba42129",
      "parents": [
        "7bdbde7af84036d2d900150e67f462e1a50f4b0e"
      ],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Wed Jan 02 15:40:48 2013 -0800"
      },
      "committer": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Wed Jan 02 15:41:57 2013 -0800"
      },
      "message": "Support resolving relative fetch URLs on persistent-https://\n\nSome versions of Python will only attempt to resolve a relative\nURL if they understand the URL scheme. Convert persistent-http://\nand persistent-https:// schemes to the more typical http:// and\nhttps:// versions for the resolve call.\n\nChange-Id: I99072d5a69be8cfaa429a3ab177ba644d928ffba\n"
    },
    {
      "commit": "0c635bb42708bb2151a92c39b31464bde1ab46f4",
      "tree": "cec41dade74d01a4caf9c2211be7c5f66151058a",
      "parents": [
        "7bdbde7af84036d2d900150e67f462e1a50f4b0e"
      ],
      "author": {
        "name": "Matt Gumbel",
        "email": "matthew.k.gumbel@intel.com",
        "time": "Fri Dec 21 10:14:53 2012 -0800"
      },
      "committer": {
        "name": "Matt Gumbel",
        "email": "matthew.k.gumbel@intel.com",
        "time": "Fri Dec 21 10:14:53 2012 -0800"
      },
      "message": "Make -notdefault a default manifest group\n\nWhen trying to render manifest with SHAs, projects in group notdefault\ncaused the following crash:\n\n    Traceback (most recent call last):\n      File \".repo/repo/main.py\", line 385, in \u003cmodule\u003e\n        _Main(sys.argv[1:])\n      File \".repo/repo/main.py\", line 365, in _Main\n        result \u003d repo._Run(argv) or 0\n      File \".repo/repo/main.py\", line 137, in _Run\n        result \u003d cmd.Execute(copts, cargs)\n      File \".repo/repo/subcmds/manifest.py\", line 129, in Execute\n        self._Output(opt, manifest)\n      File \".repo/repo/subcmds/manifest.py\", line 79, in _Output\n        peg_rev \u003d opt.peg_rev)\n      File \".repo/repo/manifest_xml.py\", line 199, in Save\n        p.work_git.rev_parse(HEAD + \u0027^0\u0027))\n      File \".repo/repo/project.py\", line 2035, in runner\n        capture_stderr \u003d True)\n      File \".repo/repo/git_command.py\", line 215, in __init__\n        raise GitError(\u0027%s: %s\u0027 % (command[1], e))\n    error.GitError: rev-parse: [Errno 2] No such file or directory: \u0027prebuilts/eclipse-build-deps\u0027\n\nThis patch resolves the issue by making sure that -notdefault is always\nused as a default manifest group so that notdefault projects are not\nrendered out by the manifest subcmd.\n\nChange-Id: I4a8bd18ea7600309f39ceff1b1ab6e1ff3adf21d\nSigned-off-by: Matt Gumbel \u003cmatthew.k.gumbel@intel.com\u003e\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": "223bf963f0342f3cc50728b2f9535b528592e64a",
      "tree": "20753275edf33a75f7e4f5d742129cb2977841ab",
      "parents": [
        "3f5ea0b18207a81f58595b1a2e10e5ffb784b74f"
      ],
      "author": {
        "name": "Sebastian Frias",
        "email": "sf.sigma04@gmail.com",
        "time": "Wed Nov 21 19:09:25 2012 +0100"
      },
      "committer": {
        "name": "Sebastian Frias",
        "email": "sf.sigma04@gmail.com",
        "time": "Fri Nov 23 10:53:12 2012 +0100"
      },
      "message": "should use os.path.lexist instead of os.path.exist\n\nThe logic of the program requires a check on the existence of the\nlink itself\n\nSee repo  issue #125  :\n        https://code.google.com/p/git-repo/issues/detail?id\u003d125\n\nChange-Id: Ia7300d22d6d656259f47c539febf1597f0c35538\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": "b148ac9d9aefb18baddbf9e28ed33b1b8c6e96e6",
      "tree": "64564abdc213acb66c83f6782566caf51e194678",
      "parents": [
        "a67df63ef18f7bcd1398dc5c3622c01c3fcad15d"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Nov 16 09:33:39 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Sat Nov 17 12:40:42 2012 +0900"
      },
      "message": "Allow command options to be set from environment variables\n\nExtend the Command base class to allow options to be set from values\nin environment variables, if the user has not given the option on the\ncommand line and the environment variable is set.\n\nDerived classes of Command can override the implementation of the method\n_GetEnvironmentOptions to configure which of its options may be set from\nenvironment variables.\n\nChange-Id: I7c780bcf9644d6567893d9930984c054bce7351e\n"
    },
    {
      "commit": "a67df63ef18f7bcd1398dc5c3622c01c3fcad15d",
      "tree": "c456ef285ded2feb1eb0d9339f3f030f937658ef",
      "parents": [
        "f91074881fb437e8cba8f9be81bd63cda5e0a557",
        "75ee0570da09abb1d2bbefe0d25f0560727e6b71"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Nov 16 10:39:24 2012 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 16 10:39:24 2012 -0800"
      },
      "message": "Merge \"Raise a NoManifestException when the manifest DNE\""
    },
    {
      "commit": "f91074881fb437e8cba8f9be81bd63cda5e0a557",
      "tree": "97f13dc80871a3c7c960792cc225fbfd33ed7eb8",
      "parents": [
        "88b86728a4451b97a2c6dcae2feb98014c077793"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Nov 16 19:12:32 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Nov 16 19:12:55 2012 +0900"
      },
      "message": "Better error message if \u0027remove-project\u0027 refers to non-existent project\n\nIf a local manifest includes a \u0027remove-project\u0027 element that refers to\na project that does not exist in the manifest, the error message is a\nbit cryptic.\n\nChange the error message to make it clearer what is wrong.\n\nChange-Id: I0b1043aaec87893c3128211d3a9ab2db6d600755\n"
    },
    {
      "commit": "75ee0570da09abb1d2bbefe0d25f0560727e6b71",
      "tree": "c62ab4990212282d9c18c694ec21830ad33481f2",
      "parents": [
        "88b86728a4451b97a2c6dcae2feb98014c077793"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Nov 15 17:33:11 2012 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Nov 15 18:50:11 2012 -0800"
      },
      "message": "Raise a NoManifestException when the manifest DNE\n\nWhen a command (eg, `repo forall`) expects the manifest project to\nexist, but there is no manifest, an IOException gets raised.  This\nchange defines a new Exception type to be raised in these cases and\nraises it when project.py fails to read the manifest.\n\nChange-Id: Iac576c293a37f7d8f60cd4f6aa95b2c97f9e7957\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": "e66291f6d0f29938d6671cf8702d0fdab45a1199",
      "tree": "2e61f134ed4d472524296e3b8940614e16f6b4f4",
      "parents": [
        "3794a78b80e8b8894a9707629fd8523547cf5cfa",
        "7ba25bedf97643528ecef049cabe0b9d1c589131"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Nov 14 16:22:41 2012 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 14 16:22:41 2012 -0800"
      },
      "message": "Merge \"Simplify error handling in subcommand execution\""
    },
    {
      "commit": "7ba25bedf97643528ecef049cabe0b9d1c589131",
      "tree": "b49cc04a8d030c784e7f46f6338c1c7f5c5977ac",
      "parents": [
        "98ffba1401056e2d88d3f3898b6fbf5d7d3931a4"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Nov 14 14:18:06 2012 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Nov 14 14:18:06 2012 -0800"
      },
      "message": "Simplify error handling in subcommand execution\n\nInstead of using a nested try (which repo is plagued with), use a single\ntry when executing the appropriate subcommand.\n\nChange-Id: I32dbfc010c740c0cc42ef8fb6a83dfe87f87e54a\n"
    },
    {
      "commit": "3794a78b80e8b8894a9707629fd8523547cf5cfa",
      "tree": "79164f4572a5064d5897f609c100aecabbdec1e1",
      "parents": [
        "33949c34d28eef7b4a27e0fb1a03221cd3c84113"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Nov 15 06:17:30 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Nov 15 06:21:24 2012 +0900"
      },
      "message": "Sync help text in repo from init.py\n\nChange Ia6032865f9296b29524c2c25b72bd8e175b30489 improved the\nhelp text for the init command, but the same improvement was not made\nin repo.\n\nChange-Id: Idc34e479b5237137b90e8b040824776e4f7883b0\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": "98ffba1401056e2d88d3f3898b6fbf5d7d3931a4",
      "tree": "7a39e4d55327bd186b66baf91e9cfed3d8a80c66",
      "parents": [
        "cecd1d864fc3cf02cf50d367111e0d0e173c5dc6"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 11:18:00 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 11:38:57 2012 +0900"
      },
      "message": "Fix: \"Statement seems to have no effect\"\n\nPylint raises an error on the call:\n\n  print\n\nChange it to:\n\n print()\n\nChange-Id: I507e1b3dd928fa6c32ea7e86260fb3d7b1428e6f\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": "9f3406ea4635e0f8cef1d0ec4dbfe6b1554375d6",
      "tree": "588758e23de5b24ffb3132aaf6ab35e6163da2d6",
      "parents": [
        "b1525bffae609455331d8587c14d22a5f58e203b"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 08:52:25 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 08:54:43 2012 +0900"
      },
      "message": "Minor documentation formatting and grammatical fixes\n\nChange-Id: Iaac6377c787b3bb42242780e9d1116e718e0188d\n"
    },
    {
      "commit": "b1525bffae609455331d8587c14d22a5f58e203b",
      "tree": "0ff74be8591170da14bbf8171144a72bc746b19c",
      "parents": [
        "685f080d626ccdc7ed0d76cccb38810285fc40e0"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 08:51:38 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 08:54:04 2012 +0900"
      },
      "message": "Fix documentation reference to local_manifest.xml\n\nDocumentation of the remove-project element still refers explicitly\nto local_manifest.xml.\n\nChange it to the more generic \"a local manifest\".\n\nChange-Id: I6278beab99a582fae26a4e053adc110362c714c2\n"
    },
    {
      "commit": "685f080d626ccdc7ed0d76cccb38810285fc40e0",
      "tree": "0c3abe43692eae04422d6ad4ebf15f2f8ea95261",
      "parents": [
        "8898e2f26d749c8548683e9c4871440a4ccfa87e"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 08:34:39 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 08:34:39 2012 +0900"
      },
      "message": "More code style cleanup\n\nClean up a few more unnecessary usages of lambda in `repo` that were missed\nin the previous sweep that only considered files ending in .py.\n\nRemove a duplicate import.\n\nChange-Id: I03cf467a5630cbe4eee6649520c52e94a7db76be\n"
    },
    {
      "commit": "8898e2f26d749c8548683e9c4871440a4ccfa87e",
      "tree": "aaabab9f4e568f873d3674795944623e464ba451",
      "parents": [
        "52f1e5d9111c586624de48b5f705e10b67d109b3"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 07:51:03 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 08:17:11 2012 +0900"
      },
      "message": "Remove magic hack\n\nIt should be assumed that on modern development environments, python\nis accessible to /usr/bin/env\n\nChange the shebang as necessary and remove the magic hack.\n\nThis also means losing the -E option on the call to python, so that\nPYTHONPATH and PYTHONHOME will be respected and local configuration\nproblems in those vars would be noticed\n\nChange-Id: I6f0708ca7693f05a4c3621c338f03619563ba630\n"
    },
    {
      "commit": "52f1e5d9111c586624de48b5f705e10b67d109b3",
      "tree": "64861a0d67e6194626a5fa8cd1c8d044bd353e1b",
      "parents": [
        "8e3d355d448671e7c9b3409a3bbde971f90d7c28"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 04:53:24 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 14 05:05:32 2012 +0900"
      },
      "message": "Make load order of local manifests deterministic\n\nLocal manifest files stored in the local_manifests folder are loaded\nin alphabetical order, so it\u0027s easier to know in which order project\nremovals/additions/modifications will be applied.\n\nIf local_manifests.xml exists, it will be loaded before the files in\nlocal_manifests.\n\nChange-Id: Ia5c0349608f1823b4662cd6b340b99915bd973d5\n"
    },
    {
      "commit": "8e3d355d448671e7c9b3409a3bbde971f90d7c28",
      "tree": "5a65a2b0990d70dd57962b337ef7b6074e5ea4ff",
      "parents": [
        "4a4776e9abfca33caca9f71f0f48c920065dbaf4",
        "b0936b0e2015a9f4f68824aac09d6248b14f2f9d"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Nov 12 17:35:47 2012 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 12 17:35:47 2012 -0800"
      },
      "message": "Merge \"Print an error message when aborted by user\""
    },
    {
      "commit": "4a4776e9abfca33caca9f71f0f48c920065dbaf4",
      "tree": "9c29393cb2936a445c9297840715f36de2986ee9",
      "parents": [
        "2fa715f8b56b8f512806cbd1b3e0bf1b98c23c7e",
        "0b8df7be79d2b8b5d5a884fc2b0d070b42861459"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Nov 12 17:35:40 2012 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 12 17:35:40 2012 -0800"
      },
      "message": "Merge \"Handle manifest parse errors in main\""
    },
    {
      "commit": "2fa715f8b56b8f512806cbd1b3e0bf1b98c23c7e",
      "tree": "af56b9c56fc08936b9e2d8989497dd75fb085043",
      "parents": [
        "6287543e3508fbd3b92c975771c73e11fd4a5977",
        "717ece9d81ab428ff7358fb3d8a941f8371b626c"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Nov 12 17:35:30 2012 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 12 17:35:30 2012 -0800"
      },
      "message": "Merge \"Better handling of duplicate remotes\""
    },
    {
      "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": "b0936b0e2015a9f4f68824aac09d6248b14f2f9d",
      "tree": "5a9bad3ed6212c4fe53728fee30a761a2f917b77",
      "parents": [
        "0b8df7be79d2b8b5d5a884fc2b0d070b42861459"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Nov 13 09:56:16 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Nov 13 09:56:16 2012 +0900"
      },
      "message": "Print an error message when aborted by user\n\nChange-Id: If7378c5deaace0ac6ab2be961e38644d9373557d\n"
    },
    {
      "commit": "0b8df7be79d2b8b5d5a884fc2b0d070b42861459",
      "tree": "bdc8e3ebbc9687ba75caea4df49915cc586ac085",
      "parents": [
        "717ece9d81ab428ff7358fb3d8a941f8371b626c"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Nov 13 09:51:57 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Nov 13 09:54:47 2012 +0900"
      },
      "message": "Handle manifest parse errors in main\n\nAdd handling of manifest parse errors in the main method, and\nprint an error.  This will prevent python tracebacks being\ndumped in many cases.\n\nChange-Id: I75e73539afa34049f73c993dbfda203f1ad33b45\n"
    },
    {
      "commit": "717ece9d81ab428ff7358fb3d8a941f8371b626c",
      "tree": "6016811bf8504da6042727f46ff8510d61a84a42",
      "parents": [
        "5566ae5ddea409279b13e538b513a73062862c3e"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Nov 13 08:49:16 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Nov 13 09:35:37 2012 +0900"
      },
      "message": "Better handling of duplicate remotes\n\nIn the current implementation, an error is raised if a remote with the\nsame name is defined more than once.  The check is only that the remote\nhas the same name as an existing remote.\n\nWith the support for multiple local manifests, it is more likely than\nbefore that the same remote is defined in more than one manifest.\n\nChange the check so that it only raises an error if a remote is defined\nmore than once with the same name, but different attributes.\n\nChange-Id: Ic3608646cf9f40aa2bea7015d3ecd099c5f5f835\n"
    },
    {
      "commit": "5566ae5ddea409279b13e538b513a73062862c3e",
      "tree": "8eee7a90ecf3692659eb2249c1a7b48c81de28a2",
      "parents": [
        "2d5a0df798b7b16ccf9c17b2435a9640cf0d81c0"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Nov 13 03:04:18 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Nov 13 08:19:51 2012 +0900"
      },
      "message": "Print deprecation warning when local_manifest.xml is used\n\nThe preferred way to specify local manifests is to drop the file(s)\nin the local_manifests folder.  Print a deprecation warning when\nthe legacy local_manifest.xml file is used.\n\nChange-Id: Ice85bd06fb612d6fcceeaa0755efd130556c4464\n"
    },
    {
      "commit": "2d5a0df798b7b16ccf9c17b2435a9640cf0d81c0",
      "tree": "ca99d70bdf9e4602beff0181f29f36a9d28eec7d",
      "parents": [
        "f7fc8a95beb1337e23f146cad8086c1fc05902ee"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Nov 13 02:50:36 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Nov 13 08:19:51 2012 +0900"
      },
      "message": "Add support for multiple local manifests\n\nAdd support for multiple local manifests stored in the local_manifests\nfolder under the .repo home directory.\n\nLocal manifests will be processed in addition to local_manifest.xml.\n\nChange-Id: Ia0569cea7e9ae0fe3208a8ffef5d9679e14db03b\n"
    },
    {
      "commit": "f7fc8a95beb1337e23f146cad8086c1fc05902ee",
      "tree": "53c36c8d5cd0aee9d30dc62b61cf47af69c94bf7",
      "parents": [
        "1ad7b555df77d27fac485ac2815dd6ce9b8b8dfd"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Nov 13 04:00:28 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Nov 13 05:53:41 2012 +0900"
      },
      "message": "Handle XML errors when parsing the manifest\n\nCatch ExpatError and exit gracefully with an error message, rather\nthan exiting with a python traceback.\n\nChange-Id: Ifd0a7762aab4e8de63dab8a66117170a05586866\n"
    },
    {
      "commit": "1ad7b555df77d27fac485ac2815dd6ce9b8b8dfd",
      "tree": "5fd10d46045bdbeeffc209ea6e67af0cd68f1dd9",
      "parents": [
        "7e6dd2dff012062b8dd812f923339790323b3840",
        "8d070cfb254a21ec3f7a07c123165edf1ce379eb"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Nov 07 12:39:25 2012 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 07 12:39:25 2012 -0800"
      },
      "message": "Merge \"Always show --manifest-server-* options\""
    },
    {
      "commit": "7e6dd2dff012062b8dd812f923339790323b3840",
      "tree": "0ca1a9e444eb7ebfa40d79ade53939da187da791",
      "parents": [
        "e072a92a9bb9fdf61bbd1df4e8864f8fd52d5a82"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Oct 25 12:40:51 2012 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Nov 07 08:39:57 2012 +0900"
      },
      "message": "Fix pylint warning W0108: Lambda may not be necessary\n\nRemove unnecessary usage of lambda.\n\nChange-Id: I06d41933057d60d15d307ee800cca052a44754c6\n"
    },
    {
      "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": "e072a92a9bb9fdf61bbd1df4e8864f8fd52d5a82",
      "tree": "1b685c35a064db6605cdf7be0004788362302dd4",
      "parents": [
        "7601ee260887caae6c5df7a7aa0033fdb844b744",
        "1f7627fd3ccab0fbab88ad2d082b67f5719af92c"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Nov 01 10:13:33 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 01 10:13:34 2012 -0700"
      },
      "message": "Merge \"Use python3 urllib when urllib2 not available\""
    },
    {
      "commit": "7601ee260887caae6c5df7a7aa0033fdb844b744",
      "tree": "ceec04042a27d9d8d4a785ae48f7ebecd25d4b21",
      "parents": [
        "b42b4746af736cdc4e9309c150ec3bff704d19d3",
        "60798a32f6e42377b70a715b5c1cd21e7950d00f"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Nov 01 10:01:17 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 01 10:01:18 2012 -0700"
      },
      "message": "Merge \"Use \u0027stat\u0027 package instead of literals for mkdir()\""
    },
    {
      "commit": "1f7627fd3ccab0fbab88ad2d082b67f5719af92c",
      "tree": "3c03eb8efbdc001472f09fa31cf11bf1d2ec01c5",
      "parents": [
        "1d947b30342163b723c96db563967323535fef45"
      ],
      "author": {
        "name": "Sarah Owens",
        "email": "sarato@inkylabs.com",
        "time": "Wed Oct 31 09:21:55 2012 -0700"
      },
      "committer": {
        "name": "Sarah Owens",
        "email": "sarato@inkylabs.com",
        "time": "Wed Oct 31 14:26:48 2012 -0700"
      },
      "message": "Use python3 urllib when urllib2 not available\n\nThis is part of a series of changes to introduce Python3 support.\n\nChange-Id: I605b145791053c1f2d7bf3c907c5a68649b21d12\n"
    },
    {
      "commit": "b42b4746af736cdc4e9309c150ec3bff704d19d3",
      "tree": "bda62589c57f591aa68b0c8d98fea5c5941a1c22",
      "parents": [
        "e21526754be58523c673d29731ee01d80e0ffc31"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Wed Oct 31 12:27:27 2012 -0700"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Wed Oct 31 12:27:27 2012 -0700"
      },
      "message": "project: Require git \u003e\u003d 1.7.2 for setting config on command line\n\nThis option causes the git call to fail, which probably indicates a\nprogramming error; callers should check the git version and change the\ncall appropriately if -c is not available. Failing loudly is preferable\nto failing silently in the general case.\n\nFor an example of correctly checking at the call site, see I8fd313dd.\nIf callers prefer to fail silently, they may set GIT_CONFIG_PARAMETERS\nin the environment rather than using the config kwarg to pass\nconfiguration.\n\nChange-Id: I0de18153d44d3225cd3031e6ead54461430ed334\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": "60798a32f6e42377b70a715b5c1cd21e7950d00f",
      "tree": "6719d9a3d74ca6c253a5891368fad0c49af0ed53",
      "parents": [
        "57365c98cc227255f50ab3d71462204c804eb975"
      ],
      "author": {
        "name": "Sarah Owens",
        "email": "sarato@inkylabs.com",
        "time": "Thu Oct 25 17:53:09 2012 -0700"
      },
      "committer": {
        "name": "Sarah Owens",
        "email": "sarato@inkylabs.com",
        "time": "Wed Oct 31 09:11:16 2012 -0700"
      },
      "message": "Use \u0027stat\u0027 package instead of literals for mkdir()\n\nThis is part of a series of changes to introduce Python3 support.\n\nChange-Id: Ic988ad181d32357d82dfa554e70d8525118334c0\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": "2d113f35460051823ea54d61c5c939565518f969",
      "tree": "d48501902b807b83855d9361a3d3c6588f43e40c",
      "parents": [
        "de7eae482664d4bda61238b6adb679b3b92535d2",
        "c5aa4d3528e15180fc1d305a571bf3cadea60c65"
      ],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Fri Oct 26 16:10:21 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 26 16:10:21 2012 -0700"
      },
      "message": "Merge \"Update minimum git version to 1.7.2\""
    },
    {
      "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": "c5aa4d3528e15180fc1d305a571bf3cadea60c65",
      "tree": "71d847d4ff986b377dea895093adb9609974f98c",
      "parents": [
        "bed45f940072e6383bf219bc315a65692e93d682"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Oct 26 11:34:11 2012 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Oct 26 11:34:11 2012 -0700"
      },
      "message": "Update minimum git version to 1.7.2\n\nWe now use the -c flag which was introduced in git 1.7.2.\n\nChange-Id: I9195c0f6ac9fa63e783a03628049fe2c67d258ff\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": "55e4d464a7f8cf366290ba2d3c8bdd8297d71d32",
      "tree": "d81deb7e0fa393f8a5e43219db8a798b0ef71b35",
      "parents": [
        "c9129d90deb7377324b5178a231657e3d8c74019"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Oct 01 16:12:28 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 26 07:03:59 2012 -0700"
      },
      "message": "Add a PGP key for cco3@android.com\n\nThis change adds a PGP key to allow cco3@android.com to sign releases.\n\nChange-Id: I18a70c8b7d8f272dd1aad9d6b2e4a237ef35af33\n"
    },
    {
      "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": "dc96476af37558c8eaf6d25087d4a604612642dd",
      "tree": "dfdfde22a3ba610bdba5764a184ada1c3996e23e",
      "parents": [
        "2577cec0952899040cd8c6523f69ece4cdc005ac",
        "091f893625269fd12adadf7d1f60c21b4b83e779"
      ],
      "author": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Thu Oct 25 17:36:03 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 25 17:36:04 2012 -0700"
      },
      "message": "Merge \"project: Support config args in git command callables\""
    },
    {
      "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": "e4ed8f65f376009f70fab0e7978fdfc223f23a76",
      "tree": "00a9118857c613eefdd967d330bc5230ced01555",
      "parents": [
        "fdb44479f8b99e7795021f1b8588a677dcf5fd51",
        "4f7bdea9d24c4eb52f83ada2b67b88ad67cb57a7"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Oct 25 09:51:06 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 25 09:51:07 2012 -0700"
      },
      "message": "Merge \"Add pylint configuration and instructions\""
    },
    {
      "commit": "fdb44479f8b99e7795021f1b8588a677dcf5fd51",
      "tree": "910ad941d3f9882271e3bb0efecafb2e7e104c85",
      "parents": [
        "69998b0c6ff724bf620480140ccce648fec7d6a9",
        "9ed12c5d9cda1f010bc173b0bc622d59e96b0dd0"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Oct 25 09:46:38 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 25 09:46:38 2012 -0700"
      },
      "message": "Merge \"Change PyDev project version to \"python 2.6\"\""
    },
    {
      "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": "091f893625269fd12adadf7d1f60c21b4b83e779",
      "tree": "bec3e027600f88a73108aa3c0f2f8f122903733d",
      "parents": [
        "d947858325ae70ff9c0b2f463a9e8c4ffd00002a"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Tue Oct 23 17:01:04 2012 -0700"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Wed Oct 24 14:52:08 2012 -0700"
      },
      "message": "project: Support config args in git command callables\n\nChange-Id: I9d4d0d2b1aeebe41a6b24a339a154d258af665eb\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": "9ed12c5d9cda1f010bc173b0bc622d59e96b0dd0",
      "tree": "0579b811fe078ff5f97cb21a9ec34b500b1c2eae",
      "parents": [
        "5c6eeac8f0350fd6b14cf226ffcff655f1dd9582"
      ],
      "author": {
        "name": "Sarah Owens",
        "email": "sarato@inkylabs.com",
        "time": "Tue Oct 23 21:28:12 2012 -0700"
      },
      "committer": {
        "name": "Sarah Owens",
        "email": "sarato@inkylabs.com",
        "time": "Tue Oct 23 21:35:46 2012 -0700"
      },
      "message": "Change PyDev project version to \"python 2.6\"\n\nRepo is dropping support for Python \u003c2.5 soon, so this updates the\nPyDev configuration appropriately.\n\nChange-Id: If327951e3a9fd9ff7513b931bfcfe6172dc8e4c5\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"
    }
  ],
  "next": "5c6eeac8f0350fd6b14cf226ffcff655f1dd9582"
}
