)]}'
{
  "log": [
    {
      "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": "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": "e98607248eec2b149d84efe944c12cbef419b82e",
      "tree": "5a0e8ea0fc7f7b5c55ea6cb725a49e656afdef82",
      "parents": [
        "2f6ab7f5b8f21b2dbfe9ae102674bd1694e94f03"
      ],
      "author": {
        "name": "JoonCheol Park",
        "email": "jooncheol@gmail.com",
        "time": "Thu Oct 11 02:31:44 2012 +0900"
      },
      "committer": {
        "name": "JoonCheol Park",
        "email": "jooncheol@gmail.com",
        "time": "Fri Oct 12 06:02:35 2012 +0900"
      },
      "message": "Support HTTP authentication using user input as fallback\n\nIf repo could not find authentication credentials from ~/.netrc, this\npatch tries to get user and password from user\u0027s console input. This\ncould be a good choice if user doesn\u0027t want to save his plain password\nin ~/.netrc or if user doesn\u0027t know about the netrc usage.\n\nThe user will be prompted only if authentication infomation does not\nexist in the password manager. Since main.py firstly loads auth\ninfomation from ~/.netrc, this will be executed only as fallback\nmechanism.\n\nExample:\n$ repo upload .\nUpload project xxx/ to remote branch master:\n branch yyy ( 1 commit, ...):\n to https://review.zzz.com/gerrit/ (y/N)? y\n\n(repo may try to access to https://review.zzz.com/gerrit/ssh_info and\nwill get the 401 HTTP Basic Authentication response from server. If no\nauthentication info in ~/.netrc, This patch will ask username/passwd)\n\nAuthorization Required (Message from Web Server)\nUser: pororo\nPassword:\n....\n[OK ] xxx/\n\nChange-Id: Ia348a4609ac40060d9093c7dc8d7c2560020455a\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": "7119f94abaa48b3b7fb990f2a12ec5458ef3f133",
      "tree": "37c7705cdb457bc9e43de7dc2317981de101378c",
      "parents": [
        "01f443d75a8116aaca5612ee44cceb1ff1a18f2f"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Oct 03 17:20:06 2012 +0900"
      },
      "committer": {
        "name": "Gustaf Lundh",
        "email": "gustaf.lundh@sonymobile.com",
        "time": "Thu Oct 04 10:31:09 2012 +0200"
      },
      "message": "Update commit-msg hook to version from Gerrit v2.5-rc0\n\nChange-Id: I0d11ac0c24cd53386e996b7dd9bd37c89c789f60\n"
    },
    {
      "commit": "01f443d75a8116aaca5612ee44cceb1ff1a18f2f",
      "tree": "02f8bc525cfa95d1fae0fd106278f3bf24d87896",
      "parents": [
        "b926116a1483d04df99252ed02418bf8e58094a3"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Oct 03 19:11:28 2012 +0900"
      },
      "committer": {
        "name": "Gustaf Lundh",
        "email": "gustaf.lundh@sonymobile.com",
        "time": "Thu Oct 04 10:31:09 2012 +0200"
      },
      "message": "Correct call to `sys.exit()`\n\nIt should be `sys.exit()` not `os.exit()`.\n\nChange-Id: Iaeeef456ddf2d17f5df2b712e50e3630bed856c3\n"
    },
    {
      "commit": "b926116a1483d04df99252ed02418bf8e58094a3",
      "tree": "67bbae4a818085b42de7a6a3ee41aaa5fdade55c",
      "parents": [
        "3ff9decfd4e2f1fed71658d0f78a17895f80ff5f"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Oct 03 15:47:02 2012 +0900"
      },
      "committer": {
        "name": "Gustaf Lundh",
        "email": "gustaf.lundh@sonymobile.com",
        "time": "Thu Oct 04 10:31:09 2012 +0200"
      },
      "message": "Remove `ImportError` class\n\nThe definition of `ImportError` redefines the Python built-in\nclass of the same name.\n\nIt is not used anywhere, so remove it.\n\nChange-Id: I557ce28c93a3306fff72873dc6f477330fc33128\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": "9779565abf06d2f1e48548197be350a06c1eab9b",
      "tree": "2df81e18395ef2a4782e0a889abaaebcea0e40f1",
      "parents": [
        "cf76b1bcec6386f9530636e64746502f9856b5cf"
      ],
      "author": {
        "name": "David Holmer",
        "email": "odinguru@gmail.com",
        "time": "Wed Sep 26 01:58:48 2012 -0400"
      },
      "committer": {
        "name": "David Holmer",
        "email": "odinguru@gmail.com",
        "time": "Wed Sep 26 01:58:48 2012 -0400"
      },
      "message": "Fix incorrect default_groups when parsing projects from XML manifest\n\nChange Details:\n* Switch first default group to \u0027all\u0027 instead of \u0027default\u0027\n\nChange Benefits:\n* More consistent with default_groups in the counterpart Save() function\n* Fixes bug where command \u0027repo manifest\u0027 added an extra \u0027default\u0027\n  group to every output project element groups attribute. This bug was\n  particularly confusing for projects which had \u0027groups\u003d\"notdefault\"\u0027\n  as they were output as \u0027groups\u003d\"notdefault,default\"\u0027 by \u0027repo manifest\u0027\n\nChange-Id: I5611c027a982d3394899466248b971910bec8c6b\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": "34acdd253439448b6c08c3abfc5e7b8bd03f383f",
      "tree": "f3290384d6d47fa8187678f75ed9885dbbfad20e",
      "parents": [
        "d94aaef39e301cc912968c07d1783232bf34a174"
      ],
      "author": {
        "name": "Jooncheol Park",
        "email": "jooncheol@gmail.com",
        "time": "Mon Aug 27 02:25:59 2012 +0900"
      },
      "committer": {
        "name": "gerrit code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 07 08:38:08 2012 -0700"
      },
      "message": "Fix ManifestParseError when first child node is comment\n\nIf the first line of manifest.xml is a XML comment, root.childNodes[0]\nis not a \u0027manifest\u0027 element node. The python minidom module will makes\na \u0027Comment\u0027 node as root.childNodes[0]. Since the original code only\nchecks whether the first child node is \u0027manifest\u0027, it couldn\u0027t do any\ncommand including \u0027sync\u0027 due to the \u0027ManifestParseError\u0027 exception. This\npatch could allow the comments between \u0027\u003c?xml ...?\u003e\u0027 and \u0027\u003cmanifest\u003e\u0027 in\nthe manifest.xml file.\n\nChange-Id: I0b81dea4f806965eca90f704c8aa7df49c579402\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"
    },
    {
      "commit": "bd489c4eaa592af98b8b4f09b0a465e0d2b6046a",
      "tree": "6954a16b023daaea026d122251157c0b2db39367",
      "parents": [
        "2dc810c2e4028878b9c3484866a5973d5c33479d"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Aug 23 10:21:26 2012 +0900"
      },
      "committer": {
        "name": "gerrit code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 06 11:18:25 2012 -0700"
      },
      "message": "sync: catch exceptions when connecting to the manifest server\n\nWhen connecting to the manifest server, exceptions can occur but\nare not caught, resulting in the repo sync exiting with a python\ntraceback.\n\nAdd handling of the following exceptions:\n\n- IOError, which can be raised for example if the manifest server\nURL is malformed.\n- xmlrpclib.ProtocolError, which can be raised if the connection\nto the manifest server fails with HTTP error.\n- xmlrpclib.Fault, which can be raised if the RPC call fails for\nsome other reason.\n\nChange-Id: I3a4830aef0941debadd515aac776a3932e28a943\n"
    },
    {
      "commit": "2dc810c2e4028878b9c3484866a5973d5c33479d",
      "tree": "567de855659b91a4629d4b555b71612e4c8ed70c",
      "parents": [
        "bb1b5f5f863fca0e85764f5b35c117f5724d15c0"
      ],
      "author": {
        "name": "Matt Gumbel",
        "email": "matthew.k.gumbel@intel.com",
        "time": "Thu Aug 30 09:39:36 2012 -0700"
      },
      "committer": {
        "name": "gerrit code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 06 10:54:46 2012 -0700"
      },
      "message": "Fix errors when clone.bundle missing on server\n\nCatch curl failures to download clone.bundle; don\u0027t let git try to parse\nthe 404 page as a bundle file (was causing much user confusion).\n\nThis should eliminate false error messages from init and sync such as:\n  error: \u0027.repo/manifests.git/clone.bundle\u0027 does not look like a v2 bundle file\n  fatal: Could not read bundle \u0027.repo/manifests.git/clone.bundle\u0027.\n  error: RPC failed; result\u003d22, HTTP code \u003d 400\n\nSigned-off-by: Matt Gumbel \u003cmatthew.k.gumbel@intel.com\u003e\nChange-Id: I7994f7c0baecfb45bb5a5850c48bd2a0ffabe773\n"
    },
    {
      "commit": "bb1b5f5f863fca0e85764f5b35c117f5724d15c0",
      "tree": "0b6b8d0d6d027f2d0e0dd6fabdd4eafc6c919026",
      "parents": [
        "e2126652a3a1e08724a54091793bb29a79d31014"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Aug 13 13:11:18 2012 -0700"
      },
      "committer": {
        "name": "gerrit code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 05 11:46:48 2012 -0700"
      },
      "message": "Allow projects to be specified as notdefault\n\nInstead of every group being in the group \"default\", every project\nis now in the group \"all\".   A group that should not be downloaded\nby default may be added to the group \"notdefault\".\n\nThis allows all group names to be positive (instead of removing groups\ndirectly in the manifest with -default) and offers a clear way of\nselecting every project (--groups all).\n\nChange-Id: I99cd70309adb1f8460db3bbc6eff46bdcd22256f\n"
    },
    {
      "commit": "e2126652a3a1e08724a54091793bb29a79d31014",
      "tree": "a931f598a6a2dcd7bc449ca7167799a18b0b493d",
      "parents": [
        "9a27d0111d5cf88c6b9409261707a5d7d50aaa64"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Sep 05 10:35:06 2012 +0200"
      },
      "committer": {
        "name": "gerrit code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 05 11:38:41 2012 -0700"
      },
      "message": "Make \"repo sync -j\u003ccount\u003e\" stop properly on Ctrl-C.\n\nThe threaded \u0027repo sync\u0027 implementation would very often freeze the\nprocess when interrupted by the user with Ctrl-C. The only solution\nbeing to kill -9 the process explicitly from another terminal.\n\nThe reason for this is best explained here:\n\nhttp://snakesthatbite.blogspot.fr/2010/09/cpython-threading-interrupting.html\n\nThis patch makes all helper sync threads \u0027daemon\u0027, which allows the\nprocess to terminate immediately on Ctrl-C.\n\nNote that this will forcefully kill all threads in case of interruption; this\nis generally a bad thing, but:\n\n  1/ This is equivalent to calling kill -9 in another terminal, which\n     is the _only_ thing that can currently stop the process.\n\n  2/ There doesn\u0027t seem to be a way to tell the worker threads to\n     gently stop when they are in a blocking operation anyway (even\n     in the non-threaded case).\n\n+ Do the same for \"repo status -j\u003ccount\u003e\".\n\nChange-Id: Ieaf45b0eacee36f35427f8edafd87415c2aa7be4\n"
    },
    {
      "commit": "9a27d0111d5cf88c6b9409261707a5d7d50aaa64",
      "tree": "4a80e3e4c1fd1367a120371375c8d3703edb4701",
      "parents": [
        "918ff85c1e9d9606e4924a0af9a8ddc2e4db692a"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Aug 21 14:23:49 2012 +0900"
      },
      "committer": {
        "name": "gerrit code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 05 06:00:47 2012 -0700"
      },
      "message": "manifest-format.txt: Add documentation for GetManifest RPC method\n\nAdd documentation of the GetManifest RPC method in the\nmanifest-server section.\n\nChange-Id: I5cda5929bc8a0ca9d3f2b9da63216427041d2823\n"
    },
    {
      "commit": "918ff85c1e9d9606e4924a0af9a8ddc2e4db692a",
      "tree": "0805e0f28ceef0c2375e53e8011fd0bfd292e869",
      "parents": [
        "3d07da82abe52d0971ea2de75f69db3359af506f"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Aug 07 10:44:01 2012 -0700"
      },
      "committer": {
        "name": "gerrit code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 04 09:30:18 2012 -0700"
      },
      "message": "`repo manifest`: default to stdout if no \"-o\"\n\nChange-Id: I1b0ff9ed5df6386f0c2a851c6c48d063199fe663\n"
    },
    {
      "commit": "3d07da82abe52d0971ea2de75f69db3359af506f",
      "tree": "9ed504bb825957a058f259b5390eef1b902745d9",
      "parents": [
        "e15c65abc25cd1d5d77ec6815a3c011b9f57ddac"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Aug 15 14:22:08 2012 +0900"
      },
      "committer": {
        "name": "Gustaf Lundh",
        "email": "gustaf.lundh@sonymobile.com",
        "time": "Thu Aug 23 12:15:49 2012 +0200"
      },
      "message": "init: Improved help text for the --mirror option\n\nChange-Id: Ia6032865f9296b29524c2c25b72bd8e175b30489\n"
    },
    {
      "commit": "e15c65abc25cd1d5d77ec6815a3c011b9f57ddac",
      "tree": "43bd95e2e83abcd88c5d05b6a65393877c51028b",
      "parents": [
        "daa851f6cd9edb3851a3884fd2864f0f3dc583b2"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Aug 22 10:46:11 2012 +0900"
      },
      "committer": {
        "name": "Gustaf Lundh",
        "email": "gustaf.lundh@sonymobile.com",
        "time": "Thu Aug 23 12:15:26 2012 +0200"
      },
      "message": "Remove unused imports\n\nThere are several imports that are not used.  Remove them.\n\nChange-Id: I2ac3be66827bd68d3faedcef7d6bbf30ea01d3f2\n"
    },
    {
      "commit": "daa851f6cd9edb3851a3884fd2864f0f3dc583b2",
      "tree": "32479f87b1a60352934074b8999aa3ef975066a1",
      "parents": [
        "a43f42f9ffed69ee807852230e514b7c4bff5855"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Aug 21 13:52:18 2012 +0900"
      },
      "committer": {
        "name": "gerrit code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 22 09:39:41 2012 -0700"
      },
      "message": "manifest-format.txt: Fix a couple of minor spelling mistakes\n\nChange-Id: Ic2d266c8cf08827a71846db9d3711feb02885f01\n"
    },
    {
      "commit": "a43f42f9ffed69ee807852230e514b7c4bff5855",
      "tree": "14779d2ed495d0d06a080ba261ec8caced24bd43",
      "parents": [
        "bb8337fe0fbdd27c91ca0208f9492cf7bf738af0"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Aug 21 16:26:07 2012 +0900"
      },
      "committer": {
        "name": "Gustaf Lundh",
        "email": "gustaf.lundh@sonymobile.com",
        "time": "Tue Aug 21 14:06:10 2012 +0200"
      },
      "message": "Patches should be submitted to master, not maint\n\nUpdate SUBMITTING_PATCHES accordingly.\n\nChange-Id: I6fd57a84c67d3762f1f23276d95cac2aeecd5e8f\n"
    },
    {
      "commit": "bb8337fe0fbdd27c91ca0208f9492cf7bf738af0",
      "tree": "0ae1dffe2eed0bd32b89ab126de70562661593b3",
      "parents": [
        "17f85eab24739c2982bf0613a13b155f712e045d",
        "e7a3bcbbb8083e812ce07a5459f0e6d30edfb9fe"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Aug 14 11:21:19 2012 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Aug 14 11:34:34 2012 -0700"
      },
      "message": "Merge branch \u0027master\u0027 into maint\n\nmaster\u0027s original purpose was to forge ahead on using git submodules,\nbut this route has been abandoned.\n\nChange-Id: I164a9efc7821bcd1b941ad76649764722046081b\n"
    },
    {
      "commit": "17f85eab24739c2982bf0613a13b155f712e045d",
      "tree": "0ae1dffe2eed0bd32b89ab126de70562661593b3",
      "parents": [
        "b9477bc2dd8ef1e931f208733976c56a0f2344a3"
      ],
      "author": {
        "name": "Dmitry Fink",
        "email": "dmitry@finik.net",
        "time": "Mon Aug 06 14:52:29 2012 -0700"
      },
      "committer": {
        "name": "gerrit code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 07 11:42:54 2012 -0700"
      },
      "message": "Omit all default groups when generating a manifest\n\nOne of the recent changes introduced implicit path:xxx and name:xxx groups\nto every project, however they are not being stripped when generating\na manifest using \"repo manifest\" command resulting in clutter\n\nChange-Id: Iec8610ba794b2fe4a6cdf0f59ca561595b66f9b5\n"
    },
    {
      "commit": "b9477bc2dd8ef1e931f208733976c56a0f2344a3",
      "tree": "02351b9af113f854c9b5e84c5f6567d78c40d06b",
      "parents": [
        "5e7127d00baf5bdad3e52cf8784c8aaa736395e1"
      ],
      "author": {
        "name": "Mickaël Salaün",
        "email": "mic@digikod.net",
        "time": "Sun Aug 05 13:39:26 2012 +0200"
      },
      "committer": {
        "name": "Mickaël Salaün",
        "email": "mic@digikod.net",
        "time": "Mon Aug 06 23:51:43 2012 +0200"
      },
      "message": "project.py: Replace the relpath function with os.path.relpath\n\nChange-Id: Ib313340344968211cecfc0a718f6072e41da1a91\n"
    },
    {
      "commit": "5e7127d00baf5bdad3e52cf8784c8aaa736395e1",
      "tree": "b28b86ba1eb092483d0f5e02f73e6532a167e8c9",
      "parents": [
        "5d0efdb14a31d651a0f6061ffb73452a20b7ed77"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Aug 02 14:57:37 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Aug 02 15:18:10 2012 -0700"
      },
      "message": "Use curl command line tool for clone.bundle\n\nurllib2 is not thread safe and may be causing sync to lock up or\nnot work correctly on various platforms. Instead use the command\nline curl program.\n\nChange-Id: I36eaf18bb4df089d26ea99d533cb015e7c616eb0\n"
    },
    {
      "commit": "5d0efdb14a31d651a0f6061ffb73452a20b7ed77",
      "tree": "a7c781f860bb675d88cfcc8708a28894aa761229",
      "parents": [
        "f35b2d9c31f62a488a0d470f269c85cda5b02d72"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Aug 02 12:13:01 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Aug 02 12:13:01 2012 -0700"
      },
      "message": "sync: Honor --no-clone-bundle with -j1\n\nChange-Id: I7c12902e386121a374d525be673092360c67c53d\n"
    },
    {
      "commit": "f35b2d9c31f62a488a0d470f269c85cda5b02d72",
      "tree": "64b0e9105d915467be2a130f8e8848bcd66c4b54",
      "parents": [
        "e0904f721b51fb1f3f11fb4755e476d759b7b3e3"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Aug 02 11:46:22 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Aug 02 11:46:22 2012 -0700"
      },
      "message": "Fix mirror mode\n\nChange-Id: Ica0e8392562a7ae5aad7e45441c1540e5e2b0238\n"
    },
    {
      "commit": "e0904f721b51fb1f3f11fb4755e476d759b7b3e3",
      "tree": "3fe7b7c3826fbf7cf913551f759c4f1612c3b36d",
      "parents": [
        "9830553748a2a4a1930361b41a1076dbaa6d9f4a"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Aug 01 20:44:23 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Aug 01 20:44:23 2012 -0700"
      },
      "message": "Fix unsupported operand type(s) for +: \u0027int\u0027 and \u0027str\u0027\n\nChange-Id: I88455107d63daaa60c3b33c010aa8c730a590c70\n"
    },
    {
      "commit": "9830553748a2a4a1930361b41a1076dbaa6d9f4a",
      "tree": "c98e7b66c28c1cef5648b917b1a2311de9e61acc",
      "parents": [
        "2bc7f5cb3af981d673b44ce9a1ff5a272535def6"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Aug 01 17:41:26 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Aug 01 17:41:26 2012 -0700"
      },
      "message": "Fix percent done on resumed /clone.bundle\n\nThe Content-Length when resuming is the number of bytes that\nremain in the file. To compute the total size as expected by\nthe progress meter, we must add the bytes already stored.\n\nWhile we are in this method fix uses of % operator to ensure\na tuple is always supplied.\n\nChange-Id: Ic899231b5bc0ab43b3ddb1d29845f6390e820115\n"
    },
    {
      "commit": "2bc7f5cb3af981d673b44ce9a1ff5a272535def6",
      "tree": "ef9e474c5edde414a226cb26acf72a98807322ed",
      "parents": [
        "b292b98c3e9a9f666ca780ba60fdb4f306eca343"
      ],
      "author": {
        "name": "Chad Jones",
        "email": "chadj@google.com",
        "time": "Thu Jun 28 13:12:13 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Jul 31 22:18:47 2012 -0700"
      },
      "message": "Fix bug in version_tuple to handle strings with -rc#\n\nExample of version string that caused a problem: git version 1.7.11-rc3\n\nChange-Id: I8a68b6b37f7b2ded23a1f8ae0d12131050a8807b\nCC: sop@google.com\n"
    },
    {
      "commit": "b292b98c3e9a9f666ca780ba60fdb4f306eca343",
      "tree": "75cea727be50c2e5b86d5c0fa62baae379315bf7",
      "parents": [
        "2f127de7520a0b689bfe5082360eeb53a05d6e2d"
      ],
      "author": {
        "name": "Yestin Sun",
        "email": "sunyi0804@gmail.com",
        "time": "Mon Jul 02 07:32:50 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Jul 31 22:13:13 2012 -0700"
      },
      "message": "Add remote alias support in manifest\n\nThe `alias` is an optional attribute in element `remote`. It can be\nused to override attibute `name` to be set as the remote name in each\nproject\u0027s .git/config. Its value can be duplicated while attribute\n`name` has to be unique across the manifest file. This helps each\nproject to be able to have same remote name which actually points\nto different remote url.\n\nIt eases some automation scripts to be able to checkout/push to same\nremote name but actually different remote url, like:\n\nrepo forall -c \"git checkout -b work same_remote/work\"\nrepo forall -c \"git push same_remote work:work\"\n\nfor example:\nThe manifest with \u0027alias\u0027 will look like:\n\n\u003c?xml version\u003d\u00271.0\u0027 encoding\u003d\u0027UTF-8\u0027?\u003e\n\u003cmanifest\u003e\n  \u003cremote alias\u003d\"same_alias\" fetch\u003d\"git://git.external1.org/\" name\u003d\"ext1\"\n      review\u003d\"http://review.external1.org\"/\u003e\n  \u003cremote alias\u003d\"same_alias\" fetch\u003d\"git://git.external2.org/\" name\u003d\"ext2\"\n      review\u003d\"http://review.external2.org\"/\u003e\n  \u003cremote alias\u003d\"same_alias\" fetch\u003d\"ssh://git.internal.com:29418\" name\u003d\"int\"\n      review\u003d\"http://review.internal.com\"/\u003e\n  \u003cdefault remote\u003d\"int\" revision\u003d\"int-branch\" sync-j\u003d\"2\"/\u003e\n  \u003cproject name\u003d\"path/to/project1\" path\u003d\"project1\" remote\u003d\"ext1\"/\u003e\n  \u003cproject name\u003d\"path/to/project2\" path\u003d\"project2\" remote\u003d\"ext2\"/\u003e\n  \u003cproject name\u003d\"path/to/project3\" path\u003d\"project3\"/\u003e\n  ...\n\u003c/manifest\u003e\n\nIn each project, use command \"git remote -v\"\n\nproject1:\nsame_alias  git://git.external1.org/project1 (fetch)\nsame_alias  git://git.external1.org/project1 (push)\n\nproject2:\nsame_alias  git://git.external2.org/project2 (fetch)\nsame_alias  git://git.external2.org/project2 (push)\n\nproject3:\nsame_alias  ssh://git.internal.com:29418/project3 (fetch)\nsame_alias  ssh://git.internal.com:29418/project3 (push)\n\nChange-Id: I2c48263097ff107f0c978f3e83966ae71d06cb90\n"
    },
    {
      "commit": "2f127de7520a0b689bfe5082360eeb53a05d6e2d",
      "tree": "00613e764af267a5c1636c04cb5597f0d4beec9e",
      "parents": [
        "7da1314e38a2bb2941511c9003fa388eddb55c0a"
      ],
      "author": {
        "name": "Joe Hansche",
        "email": "jhansche@myyearbook.com",
        "time": "Mon Jul 09 12:59:56 2012 -0400"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Jul 31 22:08:32 2012 -0700"
      },
      "message": "Add \"repo overview\" command.\n\nThe overview command shows an overview of each branch in all (or the\nspecified) projects.  The overview lists any local commits that have\nnot yet been merged into the project.\n\nThe report output is inspired by the report displayed following a\n\"repo prune\" event, with the addition of listing the one-line log\nmessages for each commit that is not yet merged.\n\nThe report can also be filtered to show only active branches; by\ndefault all branches that have commits beyond the upstream HEAD will\nbe listed.\n\nChange-Id: Ibe67793991ad1aa38de3bc9747de4ba64e5591aa\n"
    },
    {
      "commit": "7da1314e38a2bb2941511c9003fa388eddb55c0a",
      "tree": "21eb19cb1edb13fc0931fbef074d3dd36e5dc7ba",
      "parents": [
        "435370c6f0e202378ae233cf1088e499ba07e971"
      ],
      "author": {
        "name": "Brian Harring",
        "email": "ferringb@chromium.org",
        "time": "Fri Jun 15 02:24:20 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Jul 31 22:05:44 2012 -0700"
      },
      "message": "Inject the project name into each projects groups.\n\nFor CrOS, we have scenarios were people checkout a smaller version\nof our manifest via groups, and enable individual repositories as\nneeded for their work.  Previously this was via local_manifest\nmanipulation, which breaks via manifest-groups would require a\nremove-project tag.\n\nVia injecting the projects name into the projects groups, this\nallows us to instead manipulate the configured groups allowing\nthe user to turn on/off projects as necessary.\n\nChange-Id: I07b7918e16cc9dc28eb47e19a46a04dc4fd0be74\n"
    },
    {
      "commit": "435370c6f0e202378ae233cf1088e499ba07e971",
      "tree": "17ef58db736d091ad62b54db0c7169b964ccb95e",
      "parents": [
        "e8f75fa3687bfe894a4fa8e59881b7d9170d8a41"
      ],
      "author": {
        "name": "Brian Harring",
        "email": "ferringb@chromium.org",
        "time": "Sat Jul 28 15:37:04 2012 -0700"
      },
      "committer": {
        "name": "Brian Harring",
        "email": "ferringb@google.com",
        "time": "Sat Jul 28 15:44:05 2012 -0700"
      },
      "message": "upload: add --draft option.\n\nChange-Id: I6967ff2f8163cd4116027b3f15ddb36875942af4\n"
    },
    {
      "commit": "e8f75fa3687bfe894a4fa8e59881b7d9170d8a41",
      "tree": "e43b915e9336ddfad189c3855107831300a47257",
      "parents": [
        "87636f2ac2d8a10e7db3be7b5dd47097cc1084ce"
      ],
      "author": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Fri Jul 20 15:32:19 2012 +0100"
      },
      "committer": {
        "name": "Torne (Richard Coles)",
        "email": "torne@google.com",
        "time": "Fri Jul 20 15:33:17 2012 +0100"
      },
      "message": "Don\u0027t delete the branch config when switching branches.\n\nThe fix for issue #46 in 5d016502ebc6 appears to break syncing in some\nsituations: the branch is deleted after the point where it\u0027s been\nconfigured, which deletes part of its configuration and causes the\nconfig to change each time you call `repo init`, alternating between a\nconfiguration that works and one that doesn\u0027t.\n\nInstead of deleting the branch with git branch -D, use git update-ref -d\nwhich just deletes the ref (to avoid the rebase) without touching the\nconfiguration for the branch that was set up during the first repo init.\n\nThis appears to ensure the config is left in a valid state all the time\nno matter what combination of repo init commands you run, without\nreintroducing the rebasing issue.\n\nChange-Id: Iaadaa6e56a46840bbc593fa5b35cb5b34cd3ce69\n"
    },
    {
      "commit": "87636f2ac2d8a10e7db3be7b5dd47097cc1084ce",
      "tree": "3a85dea53c22e8e98b5a1042be5311776ec7020e",
      "parents": [
        "337aee0a9c6714027ff4fa8659879b0710e2e6aa"
      ],
      "author": {
        "name": "Chad Jones",
        "email": "chadj@google.com",
        "time": "Thu Jun 14 16:53:40 2012 -0700"
      },
      "committer": {
        "name": "Chad Jones",
        "email": "chadj@google.com",
        "time": "Thu Jun 14 16:54:32 2012 -0700"
      },
      "message": "Fix for failures with repo upload for projects that have a SHA1 for a revision; instead use the default manifest revision\n\nChange-Id: Ie5ef5a45ed6b0ca1a52a550df3cd7bd72e745f5f\n"
    },
    {
      "commit": "337aee0a9c6714027ff4fa8659879b0710e2e6aa",
      "tree": "59eeac1d718f560ee7341794206f068a98bc2427",
      "parents": [
        "7cf1b36bcdc79c9239413e35b02dee54aa801a20"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Jun 13 10:40:46 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Jun 13 10:42:16 2012 -0700"
      },
      "message": "Single quote http.proxy in GIT_CONFIG_PARAMETERS\n\nGit requires the values in this environment variable to be\nsingle quoted. repo must wrap the expression into \u0027\u0027 before\nadding it to the environment.\n\nChange-Id: I20a1fb8772f9aa6e9fd5a0516c981c2ca020ef05\n"
    },
    {
      "commit": "7cf1b36bcdc79c9239413e35b02dee54aa801a20",
      "tree": "9b51d1cac514908b2a74c046e7e28b219d106342",
      "parents": [
        "5e57234ec619d0de930333a8dde3004d1dc575d6"
      ],
      "author": {
        "name": "Florian Vallee",
        "email": "florian.vallee@gmail.com",
        "time": "Thu Jun 07 17:11:42 2012 +0200"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Jun 13 10:36:17 2012 -0700"
      },
      "message": "Detach branch even when already on the latest revision using sync -d\n\nThis patch fixes repo behaviour when running sync -d with unmodified\ntopic branches.\n\nPrior to this patch sync -d would see the latest revision is already\nchecked out, thus staying on the branch. Since \"-d\" means detach we\nshould follow git\u0027s behaviour and actually detach from the branch in\nthat case.\n\nBasic test case - after a fresh repo init + sync -\n        * repo start --all testdetach\n        * repo sync -d\n        * repo status\n-\u003e status shows active topic branch \"testdetach\",\n   should show :\nnothing to commit (working directory clean)\n\nChange-Id: Ic1351e6b5721b76557a51ab09f9dd42c38a4b415\n"
    },
    {
      "commit": "5e57234ec619d0de930333a8dde3004d1dc575d6",
      "tree": "40f4eab3f13e5b4a1ca4ff3f501539ae63f44229",
      "parents": [
        "5d016502ebc68bc054d85c98c6cdb51e0b63a1f5"
      ],
      "author": {
        "name": "Joe Hansche",
        "email": "jhansche@myyearbook.com",
        "time": "Mon Mar 05 11:41:19 2012 -0500"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Jun 13 10:34:41 2012 -0700"
      },
      "message": "Support automatically stashing local modifications during repo-rebase.\n\nCurrently repo-rebase requires that all modifications be committed\nlocally before it will allow the rebase. In high-velocity environments,\nyou may want to just pull in newer code without explicitly creating\nlocal commits, which is typically achieved using git-stash.\n\nIf called with the --auto-stash command line argument, and it is\ndetermined that the current index is dirty, the local modifications\nare stashed, and the rebase continues.  If a stash was performed, that\nstash is popped once the rebase completes.\n\nNote that there is still a possibility that the git-stash pop will\nresult in a merge conflict.\n\nChange-Id: Ibe3da96f0b4486cb7ce8d040639187e26501f6af\n"
    },
    {
      "commit": "5d016502ebc68bc054d85c98c6cdb51e0b63a1f5",
      "tree": "da1b47c86049f771f2292c507de21064842809d7",
      "parents": [
        "475a47d531bfe5ad82ec104189075df72a3143b7"
      ],
      "author": {
        "name": "Florian Vallee",
        "email": "florian.vallee@gmail.com",
        "time": "Thu Jun 07 17:19:26 2012 +0200"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Jun 13 10:00:57 2012 -0700"
      },
      "message": "Fix switching manifest branches using repo init -b\n\nSee repo issue #46 :\n\thttps://code.google.com/p/git-repo/issues/detail?id\u003d46\n\nWhen using repo init -b on an already existing repository,\nthe next sync will try to rebase changes coming from the old manifest\nbranch onto the new, leading in the best case scenario to conflicts\nand in the worst case scenario to an incorrect \"mixed up\" manifest.\n\nThis patch fixes this by deleting the \"default\" branch in the local\nmanifest repository when the -d init switch is used, thus forcing\nrepo to perform a fresh checkout of the new manifest branch\n\nChange-Id: I379e4875ec5357d8614d1197b6afbe58f9606751\n"
    },
    {
      "commit": "475a47d531bfe5ad82ec104189075df72a3143b7",
      "tree": "db44a1646f6f02c2105bf7946359076cf1d0a864",
      "parents": [
        "62d0b10a7bea2aa5cb7593ff12d14c482a1a663c"
      ],
      "author": {
        "name": "Brian Harring",
        "email": "ferringb@google.com",
        "time": "Thu Jun 07 20:05:35 2012 -0700"
      },
      "committer": {
        "name": "Brian Harring",
        "email": "ferringb@google.com",
        "time": "Thu Jun 07 20:19:04 2012 -0700"
      },
      "message": "Restore include support.\n\nCalculation of where the include file lives was broken by 23acdd3f14\nsince it resulted in looking for the first include in .repo, rather\nthan .repo/manifests.\n\nWhile people can work around it via setting their includes to\nmanifests/\u003cinclude-target\u003e, that breaks down since each layer of\nincludes would then have to be relative.\n\nAs such, restore the behaviour back to 2644874d; manifests includes\nare calculated relative to the manifest root (ie, .repo/manifests);\nlocal manifests includes are calculated relative to .repo/ .\n\nChange-Id: I74c19ba614c41d2f08cd3e9fd094f3c510e3bfd1\n"
    },
    {
      "commit": "62d0b10a7bea2aa5cb7593ff12d14c482a1a663c",
      "tree": "c03c28ee9e272f1349e135b0259ed919602e4484",
      "parents": [
        "d666e93ecc1f094774dfc7ba9ab0fd6e1695e976"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Jun 05 15:11:15 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Jun 05 15:11:15 2012 -0700"
      },
      "message": "Use GIT_CONFIG_PARAMETERS instead of -c for http.proxy\n\nAncient versions of Git don\u0027t understand the -c command line flag\nthat we tried to use to pass http_proxy down into Git on Darwin.\nUse the environment variable instead, to more gracefully degrade\nwith these old versions.\n\nChange-Id: Iffffa32088c1fd803895b990b3377ecfec6a1b14\n"
    },
    {
      "commit": "d666e93ecc1f094774dfc7ba9ab0fd6e1695e976",
      "tree": "7d38d7a867a8d70805d57f483fce2b5c47376073",
      "parents": [
        "3f61950f01bac9a3c40d9a6a95f53b6864153bfa"
      ],
      "author": {
        "name": "Anthony Russello",
        "email": "arussello@gmail.com",
        "time": "Fri Jun 01 00:48:22 2012 -0400"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Jun 05 08:01:29 2012 -0700"
      },
      "message": "repo: Add option review.URL.uploadtopic support\n\nThis patch adds the option to include topic branches by adding the\nfollowing to a .gitconfig file:\n\n    uploadtopic \u003d true\n\nThis option is only read in when the -t option is not already\nspecified at the command line.\n\nChange-Id: I0e0eea49438bb4e4a21c2ac5bd498b68b5a9a845\n"
    },
    {
      "commit": "3f61950f01bac9a3c40d9a6a95f53b6864153bfa",
      "tree": "eb1339f0d47a489de3a98b186bcaf4bfbea5f4f0",
      "parents": [
        "4fd38ecc3ae6ce004b59ffe6545918495080e165"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Jun 05 07:57:24 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Jun 05 07:57:24 2012 -0700"
      },
      "message": "Use gerrit.googlesource.com/git-repo as the default URL\n\nThis is basically the same repository, but may be slightly more\nup-to-date than the one on code.google.com/p/git-repo.\n\nChange-Id: I5c99539f53231958eefb6993f00997c9adf0a3c9\n"
    },
    {
      "commit": "4fd38ecc3ae6ce004b59ffe6545918495080e165",
      "tree": "130140de974400ce213b76b5814b36b40f819e38",
      "parents": [
        "9fae805e0421aa4caf1e0a9052f8701a88d7bd0d"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Jun 05 07:55:07 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Jun 05 07:56:09 2012 -0700"
      },
      "message": "Detect git is not installed\n\nFix detection for Git not being in $PATH during the initial\nrun of `repo init` in a new directory.\n\nChange-Id: I2b1fcce1fb8afc47271f5c3bd2a28369009b2fb7\n"
    },
    {
      "commit": "9fae805e0421aa4caf1e0a9052f8701a88d7bd0d",
      "tree": "fe1b867c58618ee8a25b833f18d2f22a189499ee",
      "parents": [
        "6a927c5d1990a9391242baa00c5ac71490c50c28"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri May 25 07:57:44 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Fri May 25 08:21:37 2012 -0700"
      },
      "message": "Pass http_proxy as -c http.proxy on Mac OS X\n\nThe system libcurl library seems to ignore http_proxy on Mac OS\nX systems. Copy the http_proxy environment variable (if set) as\n`git -c http.proxy` whenever running a Git command.\n\nChange-Id: I0ab29336897178f70b85092601f9fcc306dd17e1\n"
    },
    {
      "commit": "6a927c5d1990a9391242baa00c5ac71490c50c28",
      "tree": "78e93bbfe8efa4cd0f10edc69dbc01d559407d89",
      "parents": [
        "eca119e5d6f0aa61cad6be1421aa523482e9cde7"
      ],
      "author": {
        "name": "Brian Harring",
        "email": "ferringb@chromium.org",
        "time": "Fri May 25 02:21:06 2012 -0700"
      },
      "committer": {
        "name": "Brian Harring",
        "email": "ferringb@chromium.org",
        "time": "Fri May 25 02:25:59 2012 -0700"
      },
      "message": "hooks/pre-auto-gc: look in sysfs to see if a battery is known.\n\nBarring any kernel bugs, if this directory exists and there is\na symlink in there (which will point to the battery object),\nthat means there is a battery known to the kernel.\n\nNo symlink should mean no battery as far as the kernel is concerned.\n\nChange-Id: Ib12819a5bbb816f0ae5ca080e5812a2db08441e9\n"
    },
    {
      "commit": "eca119e5d6f0aa61cad6be1421aa523482e9cde7",
      "tree": "8a89308ba0e76e8922676351333d77afacdcaf49",
      "parents": [
        "6ba6ba0ef3ae4de384d931a50ec25e675e3aab16"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu May 24 15:39:14 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu May 24 15:40:05 2012 -0700"
      },
      "message": "Allow projects with groups\u003dNone\n\nMirror manifest and repo projects are outside the manifest and\nhave no groups.  Allow project groups to be None for these\nprojects.\n\nChange-Id: I3e1c4add894fe1c43aa4e77a1fc1558aa10dd191\n"
    },
    {
      "commit": "6ba6ba0ef3ae4de384d931a50ec25e675e3aab16",
      "tree": "a570790f94d09ba475bc5f1b4a74462b6e409259",
      "parents": [
        "23acdd3f1460bc1c040b319940c5e0e8a78f1040"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu May 24 09:46:50 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu May 24 09:46:50 2012 -0700"
      },
      "message": "Fix initial sync broken by sync-c option\n\nChange-Id: I308753da8944e6ce5c46e3bfee1bcd41d5b7e292\n"
    },
    {
      "commit": "23acdd3f1460bc1c040b319940c5e0e8a78f1040",
      "tree": "85709c15416db6717cdff2025cc1aacc438c7ce9",
      "parents": [
        "2644874d9d3e6c16299a01acddf66cd99fd43414"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sat Apr 21 00:33:54 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu May 24 09:32:15 2012 -0700"
      },
      "message": "Parse manifest and local_manifest together\n\nCombine manifest and local_manifest into a single list of elements\nbefore parsing.  This will allow elements in the local_manifest to\naffect elements in the main manifest.\n\nChange-Id: I4d34c9260b299a76be2960b07c0c3fe1af35f33c\n"
    },
    {
      "commit": "2644874d9d3e6c16299a01acddf66cd99fd43414",
      "tree": "bd2e86186a48a22286c6e919758d7edf366bda9a",
      "parents": [
        "3d125940f6223efe62e35b795f57e7e717b4528e"
      ],
      "author": {
        "name": "Brian Harring",
        "email": "brian.harring@intel.com",
        "time": "Thu Apr 28 05:04:41 2011 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu May 24 09:07:24 2012 -0700"
      },
      "message": "ManifestXml: add include support\n\nHaving the ability to include other manifests is a very practical feature\nto ease the managment of manifest. It allows to divide a manifest into separate\nfiles, and create different environment depending  on what we want to release\n\nYou can have unlimited recursion of include, the manifest configs will simply be concatenated\nas if it was in a single file.\n\ncommand \"repo manifest\" will create a single manifest, and not recreate the manifest hierarchy\n\nfor example:\nOur developement manifest will look like:\n\n\u003c?xml version\u003d\u00271.0\u0027 encoding\u003d\u0027UTF-8\u0027?\u003e\n\u003cmanifest\u003e\n  \u003cdefault revision\u003d\"platform/android/main\" remote\u003d\"intel\"/\u003e\n  \u003cinclude name\u003d\"server.xml\"/\u003e \u003c!-- The Server configuration --\u003e\n  \u003cinclude name\u003d\"aosp.xml\" /\u003e  \u003c!-- All the AOSP projects --\u003e\n  \u003cinclude name\u003d\"bsp.xml\" /\u003e   \u003c!-- The BSP projects that we release in source form --\u003e\n  \u003cinclude name\u003d\"bsp-priv.xml\" /\u003e \u003c!-- The source of the BSP projects we release in binary form --\u003e\n\u003c/manifest\u003e\n\nOur release manifest will look like:\n\n\u003c?xml version\u003d\u00271.0\u0027 encoding\u003d\u0027UTF-8\u0027?\u003e\n\u003cmanifest\u003e\n  \u003cdefault revision\u003d\"platform/android/release-ext\" remote\u003d\"intel\"/\u003e\n  \u003cinclude name\u003d\"server.xml\"/\u003e \u003c!-- The Server configuration --\u003e\n  \u003cinclude name\u003d\"aosp.xml\" /\u003e  \u003c!-- All the AOSP projects --\u003e\n  \u003cinclude name\u003d\"bsp.xml\" /\u003e   \u003c!-- The BSP projects that we release in source form --\u003e\n  \u003cinclude name\u003d\"bsp-ext.xml\" /\u003e \u003c!-- The PREBUILT version of the BSP projects we release in binary form --\u003e\n\u003c/manifest\u003e\n\nAnd it is also easy to create and maintain feature branch with a manifest that looks like:\n\n\u003c?xml version\u003d\u00271.0\u0027 encoding\u003d\u0027UTF-8\u0027?\u003e\n\u003cmanifest\u003e\n  \u003cdefault revision\u003d\"feature_branch_foobar\" remote\u003d\"intel\"/\u003e\n  \u003cinclude name\u003d\"server.xml\"/\u003e \u003c!-- The Server configuration --\u003e\n  \u003cinclude name\u003d\"aosp.xml\" /\u003e  \u003c!-- All the AOSP projects --\u003e\n  \u003cinclude name\u003d\"bsp.xml\" /\u003e   \u003c!-- The BSP projects that we release in source form --\u003e\n  \u003cinclude name\u003d\"bsp-priv.xml\" /\u003e \u003c!-- The source of the BSP projects we release in binary form --\u003e\n\u003c/manifest\u003e\n\nSigned-off-by: Brian Harring \u003cbrian.harring@intel.com\u003e\nSigned-off-by: Pierre Tardy \u003cpierre.tardy@intel.com\u003e\nChange-Id: I833a30d303039e485888768e6b81561b7665e89d\n"
    },
    {
      "commit": "3d125940f6223efe62e35b795f57e7e717b4528e",
      "tree": "518bdd11c5cd3e5f57afdf16a3e1fe3ec1df8370",
      "parents": [
        "a94f162b9fe85389f3e1c9555628d9229105e15d"
      ],
      "author": {
        "name": "Pierre Tardy",
        "email": "pierre.tardy@intel.com",
        "time": "Fri May 04 12:18:12 2012 +0200"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu May 24 09:04:20 2012 -0700"
      },
      "message": "repo download: add --ff-only option\n\nAllows to ff-only a gerrit patch\nThis patch is necessary to automatically ensure that the patch will\nbe correctly submitted on ff-only gerrit projects\n\nYou can now use:\nrepo download (--ff-only|-f) project changeid/patchnumber\n\nThis is useful to automate verification of fast forward status of a patch\nin the context of build automation, and commit gating (e.g. buildbot)\n\nChange-Id: I403a667557a105411a633e62c8eec23d93724b43\nSigned-off-by: Erwan Mahe \u003cerwan.mahe@intel.com\u003e\nSigned-off-by: Pierre Tardy \u003cpierre.tardy@intel.com\u003e\n"
    },
    {
      "commit": "a94f162b9fe85389f3e1c9555628d9229105e15d",
      "tree": "da3852d6ede787a8d1974cddab3db8c98e4fc39e",
      "parents": [
        "e5a2122e6429b5eee861807e7050eb02045a7d4f"
      ],
      "author": {
        "name": "Erwan Mahe",
        "email": "erwan.mahe@intel.com",
        "time": "Fri Aug 19 13:56:09 2011 +0200"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu May 24 09:03:10 2012 -0700"
      },
      "message": "repo download: add --revert option\n\nBZ: 4779\nAllows to revert a gerrit patch\nThis patch is necessary for the on-demand creation of\nengineering builds using buildbot\n\nYou can now use:\nrepo download [--revert|-r project changeid/patchnumber\n\nThis is useful to automate reverting of a patch\nin the context of build automation, and regression bisection\n\nChange-Id: I3985e80e4b2a230f83526191ea1379765a54bdcf\nSigned-off-by: Erwan Mahe \u003cerwan.mahe@intel.com\u003e\nSigned-off-by: Pierre Tardy \u003cpierre.tardy@intel.com\u003e\n"
    },
    {
      "commit": "e5a2122e6429b5eee861807e7050eb02045a7d4f",
      "tree": "b58878391a4a6a80bdda7edf096d22cff8b7f1c4",
      "parents": [
        "ccf86432b39ce2506fca472bbdbe379fdc53d3e3"
      ],
      "author": {
        "name": "Pierre Tardy",
        "email": "pierre.tardy@intel.com",
        "time": "Thu Mar 24 16:28:18 2011 +0100"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu May 24 09:02:38 2012 -0700"
      },
      "message": "repo download: add --cherry-pick option\n\ndefault option uses git checkout, and thus overwrite the previous\ncheckouts.  this is a problem for automated builds of several\nchangesets in the same project for daily builds of pending submission\n\nYou can now use:\nrepo download [--cherry-pick|-c] project changeid/patchnumber\n\nThis will parse the manifest, cd to the corresponding project\ndownload the changes to FETCH_HEAD and cherry-pick the result.\n\nThis is useful to automate cherry-picking of a patch\nin the context of build automation, and commit gating (e.g. buildbot)\n\nChange-Id: Ib638afd87677f1be197afb7b0f73c70fb98909fe\nSigned-off-by: Pierre Tardy \u003cpierre.tardy@intel.com\u003e\n"
    },
    {
      "commit": "ccf86432b39ce2506fca472bbdbe379fdc53d3e3",
      "tree": "8066007b25cc9b245add60ca08055ee0bb09b91b",
      "parents": [
        "79770d269e319dee578beed682669703d4c764ba"
      ],
      "author": {
        "name": "Cezary Baginski",
        "email": "cezary.baginski@gmail.com",
        "time": "Mon Apr 23 23:55:35 2012 +0200"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu May 24 08:58:10 2012 -0700"
      },
      "message": "Avoid failing concat for multi-encoding filenames\n\nrepo status should output filenames one by one instead of trying to\nbuild a string from incompatible encodings (like utf-8 and sjis\nfilenames)\n\nChange-Id: I52282236ececa562f109f9ea4b2e971d2b4bc045\n"
    },
    {
      "commit": "79770d269e319dee578beed682669703d4c764ba",
      "tree": "23e733be2bf80454de9352225366b92ef5cc9139",
      "parents": [
        "c39864f5e12fa4a6d3f2cdb4921afc021406d106"
      ],
      "author": {
        "name": "Anatol Pomazau",
        "email": "anatol@google.com",
        "time": "Fri Apr 20 14:41:59 2012 -0700"
      },
      "committer": {
        "name": "Anatol Pomazau",
        "email": "anatol@google.com",
        "time": "Mon Apr 23 14:10:52 2012 -0700"
      },
      "message": "Add sync-c option to manifest\n\nThere are use-cases when fetching all branch is impractical and\nwe really need to fetch only one branch/tag.\ne.g. there is a large project with binaries and every update of a\nbinary file is put to a separate branch.\nThe whole project history might be too large to allow users fetch it.\n\nAdd \u0027sync-c\u0027 option to \u0027project\u0027 and \u0027default\u0027 tags to make it possible\nto configure \u0027sync-c\u0027 behavior at per-project and per-manifest level.\n\nNote that currently there is no possibility to revert boolean flag from\ncommand line. If \u0027sync-c\u0027 is set in manifest then you cannot make\nfull fetch by providing a repo tool argument.\n\nChange-Id: Ie36fe5737304930493740370239403986590f593\n"
    },
    {
      "commit": "c39864f5e12fa4a6d3f2cdb4921afc021406d106",
      "tree": "b8e5749072fb6e08c2f2f6f019aeb7532a1cccb3",
      "parents": [
        "5465727e538bcd77200f8b3c75f002367597fc51"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Apr 23 13:41:58 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Apr 23 13:43:41 2012 -0700"
      },
      "message": "Treat groups\u003d as default\n\nPrevious incarnations of groups support left \"groups\u003d\" in the\nrepo .config, which is now treated as \"delete all the projects\".\nTreat empty groups configuration the same as no groups\nconfiguration.\n\nChange-Id: I57dab8dac55bdbf4cc181e2748cd2e4e510764f5\n"
    },
    {
      "commit": "5465727e538bcd77200f8b3c75f002367597fc51",
      "tree": "51f376719b489eb25b57dc3fd88da116af99a53c",
      "parents": [
        "d21720db313369f25b99b4d2f3f87c8be46513d9"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Apr 23 13:39:48 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Apr 23 13:43:41 2012 -0700"
      },
      "message": "Fix syntax errors in subcmds/init.py\n\nFixes three errors:\nPython doesn\u0027t like the line wrap after \u0027and\u0027.\nplatform.system is a function, needs to be platform.system().\nTypo all_platfroms instead of all_platforms.\n\nChange-Id: Ia875e521bc01ae2eb321ec62d839173c00f86c2d\n"
    },
    {
      "commit": "d21720db313369f25b99b4d2f3f87c8be46513d9",
      "tree": "a73e659e8fd18c7e3fc67880a1a9be8c2a409c86",
      "parents": [
        "971de8ea7b7e474a4d9253b6c9f47da3f1130973"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Apr 16 11:02:21 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Apr 23 12:50:00 2012 -0700"
      },
      "message": "Add a --platform flag\n\nProjects may optionally specify their platform\n(eg, groups\u003d\"platform-linux\" in the manifest).\n\nBy default, repo will automatically detect the platform. However,\nusers may specify --platform\u003d[auto|all|linux|darwin].\n\nChange-Id: Ie678851fb2fec5b0938aede01f16c53138a16537\n"
    },
    {
      "commit": "971de8ea7b7e474a4d9253b6c9f47da3f1130973",
      "tree": "d8ac52741957b38d57d15f208e57b984d71ddc19",
      "parents": [
        "24c130884018364f91baa8de0ff3541f4c32d1bb"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Apr 16 10:36:08 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Apr 23 12:39:05 2012 -0700"
      },
      "message": "Refine groups functionality\n\nEvery project is in group \"default\".  \"-default\" does not remove\nit from this project.  All group names specified in the manifest\nare positive names as opposed to a mix of negative and positive.\n\nSpecified groups are resolved in order.  If init is supplied with\n--groups\u003d\"group1,-group2\", the following describes the project\nselection when syncing:\n\n  * all projects in \"group1\" will be added, and\n  * all projects in \"group2\" will be removed.\n\nChange-Id: I1df3dcdb64bbd4cd80d675f9b2d3becbf721f661\n"
    },
    {
      "commit": "24c130884018364f91baa8de0ff3541f4c32d1bb",
      "tree": "213b269d05e2a5f2b70d895325301a9a9f30e4a2",
      "parents": [
        "b962a1f5e0daad323bdd66fad93f00a3738cc255"
      ],
      "author": {
        "name": "James W. Mills",
        "email": "jameswmills@gmail.com",
        "time": "Thu Apr 12 15:04:13 2012 -0500"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Apr 23 12:35:08 2012 -0700"
      },
      "message": "Add project annotation handling to repo\n\nAllow the optional addition of \"annotation\" nodes nested under\nprojects.  Each annotation node must have \"name\" and \"value\"\nattributes.  These name/value pairs will be exported into the\nenvironment during any forall command, prefixed with \"REPO__\"\n\nIn addition, an optional \"keep\" attribute with case insensitive \"true\"\nor \"false\" values can be included to determine whether the annotation\nwill be exported with \u0027repo manifest\u0027\n\nChange-Id: Icd7540afaae02c958f769ce3d25661aa721a9de8\nSigned-off-by: James W. Mills \u003cjameswmills@gmail.com\u003e\n"
    },
    {
      "commit": "b962a1f5e0daad323bdd66fad93f00a3738cc255",
      "tree": "aa93a22bdec6f982cfee5c3ab5d1f5361f7bd9e9",
      "parents": [
        "5acde75e5d70b323197ffb2c9d4fdea3612098f5"
      ],
      "author": {
        "name": "Anatol Pomazau",
        "email": "anatol@google.com",
        "time": "Thu Mar 29 18:06:43 2012 -0700"
      },
      "committer": {
        "name": "Anatol Pomazau",
        "email": "anatol@google.com",
        "time": "Mon Apr 23 11:09:17 2012 -0700"
      },
      "message": "Check if SHA1 presents in repository\n\nPreviously repo had incorrect code that did not really check\nif sha1 presents in a project. It worked for tags though.\n\nCheck if a revision (either tag or sha1) is present by using\n\u0027git rev_parse\u0027 functionality.\n\nChange-Id: I1787f3348573948573948753987394839487572b\n"
    },
    {
      "commit": "5acde75e5d70b323197ffb2c9d4fdea3612098f5",
      "tree": "e995a64614ce7406633ae6e99c2a0e6f86872e09",
      "parents": [
        "d67872d2f47b2f09a0e2aa4adfd62e6f69154c9b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Mar 28 20:15:45 2012 -0700"
      },
      "committer": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Fri Apr 13 09:46:00 2012 -0700"
      },
      "message": "Add manifest groups\n\nAllows specifying a list of groups with a -g argument to repo init.\nThe groups act on a group\u003d attribute specified on projects in the\nmanifest.\nAll projects are implicitly labelled with \"default\" unless they are\nexplicitly labelled \"-default\".\nPrefixing a group with \"-\" removes matching projects from the list\nof projects to sync.\nIf any non-inverted manifest groups are specified, the default label\nis ignored.\n\nChange-Id: I3a0dd7a93a8a1756205de1d03eee8c00906af0e5\nReviewed-on: https://gerrit-review.googlesource.com/34570\nReviewed-by: Shawn Pearce \u003csop@google.com\u003e\nTested-by: Shawn Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "d67872d2f47b2f09a0e2aa4adfd62e6f69154c9b",
      "tree": "654e38712aec5961e0e628b8be95b260b7eb9c80",
      "parents": [
        "e9d6b611c5bec499360c175035770132f1e60c71"
      ],
      "author": {
        "name": "pelya",
        "email": "x.pelya.x@gmail.com",
        "time": "Wed Mar 28 14:49:58 2012 +0300"
      },
      "committer": {
        "name": "Shawn Pearce",
        "email": "sop@google.com",
        "time": "Fri Apr 13 09:20:10 2012 -0700"
      },
      "message": "Option for \u0027repo diff\u0027 to generate output suitable for \u0027patch\u0027 cmd\n\nThe -u option causes \u0027repo diff\u0027 to generate diff output\nwith file paths relative to the repository root,\nso the output can be applied to the Unix \u0027patch\u0027 command.\nThe name \u0027-u\u0027 was selected for convenience, because\nboth \u0027diff\u0027 and \u0027git diff\u0027 accept the option with the same name\nto generate an \u0027unified diff\u0027 output suitable for \u0027patch\u0027 command.\n\nChange-Id: I79c8356db4ed20ecaccc258b3ba139db76666fe0\nReviewed-on: https://gerrit-review.googlesource.com/34380\nReviewed-by: Shawn Pearce \u003csop@google.com\u003e\nTested-by: Shawn Pearce \u003csop@google.com\u003e\n"
    },
    {
      "commit": "e9d6b611c5bec499360c175035770132f1e60c71",
      "tree": "f20482b6545d436d9be3204e5e2d3afdddc2ccd5",
      "parents": [
        "c3d2f2b76f1f34703106031bdbcb6c34df81686c"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Fri Apr 06 10:39:32 2012 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Fri Apr 06 10:43:36 2012 -0400"
      },
      "message": "New flag for repo upload: --current_branch (--cbr)\n\nA convenient equivalent to `repo upload --br\u003d\u003ccurrent git branch\u003e`.\n\nNote that the head branch will be selected for each project\nuploaded by repo, so different branches may be uploaded for\ndifferent projects.\n\nChange-Id: I10ad8ceaa63f055105c2d847c6e329fa4226dbaf\n"
    },
    {
      "commit": "c3d2f2b76f1f34703106031bdbcb6c34df81686c",
      "tree": "af7b57c5e81512bcd7e3d7ab530069303c98fcfb",
      "parents": [
        "cd7c5deca0b0594bd8addd5a0fe18b962d2679e9"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Mar 22 14:09:22 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Mar 22 14:18:40 2012 -0700"
      },
      "message": "Ignore /clone.bundle on HTTP 401, 403 and 404\n\n401: Unauthorized, authentication may be required. This is usually\n     handled internally by the HTTP client in Python. If it reaches\n     our code in repo, the Python HTTP client didn\u0027t find a password\n     in ~/.netrc that it could use.\n\n403: Authentication was supplied, but is incorrect. It might be\n     that the CDN doesn\u0027t want to offer this clone.bundle file\n     to the client, but the Git fetch operation would still be\n     successful. This might arise if branch level read controls\n     were used in Gerrit Code Review and the /clone.bundle file\n     contained branches not visible to the client.\n\n404: The server has no /clone.bundle file available.\n\nIn all of these cases, sliently ignore the /clone.bundle file HTTP\nerror and let the Git operation take over.\n\nChange-Id: I1787f3cac86b017351952bbb793fe5874d83c72b\n"
    },
    {
      "commit": "cd7c5deca0b0594bd8addd5a0fe18b962d2679e9",
      "tree": "ec56d17e669c94bd297d8080f4f5bbb226a4841c",
      "parents": [
        "e02ac0af2e69f2c149de942d639bf305e5ae391a"
      ],
      "author": {
        "name": "Anatol Pomazau",
        "email": "anatol@google.com",
        "time": "Tue Mar 20 13:45:00 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Mar 20 14:11:56 2012 -0700"
      },
      "message": "Do not change branch.foo.merge in case of manifest sync\n\nIn case of manifest/smart sync repo changes \".merge\" config\noption from branch to SHA. Doing \u0027repo upload\u0027 fails as\nrepo tries to upload to a remote branch that looks like SHA\n(e.g. refs/for/23423423423423423423423)\n\nDo not update the .merge in case if revision is SHA.\n\nChange-Id: I9139708fa17f21eec5a7e23c3255333626bf529e\n"
    },
    {
      "commit": "e02ac0af2e69f2c149de942d639bf305e5ae391a",
      "tree": "47da1f6f01e8429659ca10de890c9747c2a0e80a",
      "parents": [
        "898e12a2d9340706eca79e6c611166dfe35a1d3e"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Mar 14 15:36:59 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Mar 14 15:38:28 2012 -0700"
      },
      "message": "sync: --no-clone-bundle disables the clone bundle support\n\nChange-Id: Ia9ed7da8451b273c1be620c3dd0dcad777b29096\n"
    },
    {
      "commit": "898e12a2d9340706eca79e6c611166dfe35a1d3e",
      "tree": "f417382da1c4237825dc13b47194dd98ecd808f0",
      "parents": [
        "ae0a36c9a59e7f872578b17b3b7fa8f72df3cb59"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Mar 14 15:22:28 2012 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Mar 14 15:28:22 2012 -0700"
      },
      "message": "Permit - in URL schemes for special URLs\n\nClients might be using their own special git-remote-* helper that\nhas a hypen in its name. Permit - in the scheme part of the URL\nwhen trying to decide if it is an SSH URL and assume it is *not*\nSSH if the URL matches \"foo-bar://\" style.\n\nChange-Id: I7ba2d810a614f6e605a441d5972902c4a14e73fd\n"
    },
    {
      "commit": "ae0a36c9a59e7f872578b17b3b7fa8f72df3cb59",
      "tree": "2cfb4182ad08064d001463aa5aa9079ab638f78a",
      "parents": [
        "76abcc1d1ea2da6cf0ce381486e2f9bf4ca55c36"
      ],
      "author": {
        "name": "Xiaodong Xu",
        "email": "stid.smth@gmail.com",
        "time": "Tue Jan 31 11:10:09 2012 +0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Mar 14 15:01:34 2012 -0700"
      },
      "message": "Add support for Apache Digest authentication for repo init.\n\nrepo tool supports only Basic authentication for now. For those\nwho want to use this tool to manage their own projects, in case\nthe administrator has configured the Apache server with Digest\nauthentication method, users will fail to be authenticated when\nthey run the command \u0027repo init\u0027.\nAdd the digest authentication password manager to the handler\nlist will fix this issue.\n\nSince Git HTTP protocol will require the user be authenticated\nfor fetch operation first before pushing commits to the remote,\nit is unlikely for the administrator to implement anonymous\nread (aka pull) access and write access (aka push) for\nauthenticated user. Both read and write have to be authenticated.\nBe aware that the user may have to add an extra line in his\n~/.netrc file:\n-------------------\naccount example.com\n-------------------\nwhere \u0027example.com\u0027 is the realm for Apache Digest authentication.\n\nChange-Id: I76eb27b205554426d9ce1965deaaf727b87916cd\nSigned-off-by: Xiaodong Xu \u003cstid.smth@gmail.com\u003e\n"
    },
    {
      "commit": "76abcc1d1ea2da6cf0ce381486e2f9bf4ca55c36",
      "tree": "99bb142cb8baeb9f3b0210dee1457f854ea985ba",
      "parents": [
        "d3153825723b2bec3476e84f2e423c646fd4c598"
      ],
      "author": {
        "name": "Ali Utku Selen",
        "email": "aliutku.selen@sonyericsson.com",
        "time": "Wed Jan 25 10:51:12 2012 +0100"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Mar 12 12:25:40 2012 -0700"
      },
      "message": "repo status to print project name on clean gits\n\nrepo status just prints \"# on branch oprofile\" if you have branched\nin clean status. This doesn\u0027t really tell which branch is meant.\n\nInstead we can use the same syntax with modified gits which will\ngive us detailed information.\n\nChange-Id: I55fe5154d278e10a814281dd2ba501ec6e956730\n"
    },
    {
      "commit": "d3153825723b2bec3476e84f2e423c646fd4c598",
      "tree": "11436435822daca2da44674fc538b3a668c199a5",
      "parents": [
        "43bda84362b8fd8bb74a81003e8b49cff15ea5ed"
      ],
      "author": {
        "name": "Mike Pontillo",
        "email": "pontillo@gmail.com",
        "time": "Tue Feb 28 11:53:24 2012 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Mon Mar 12 12:24:22 2012 -0700"
      },
      "message": "Add \u0027rebase\u003d\"false\"\u0027 attribute to the \u003cproject/\u003e XML.\n\nThis new attribute can prevent \u0027repo sync\u0027 from automatically rebasing.\n\nI hit a situation in where one of the git repositories I was tracking\nwas actually an external repository that I wanted to pull commits\ninto and merge myself. (NOT rebase, since that would lose the merge\nhistory.) In this case, I\u0027m not using \u0027repo upload\u0027, I\u0027m manually\nmanaging the merges to and from this repository.\n\nEverything was going great until I typed \u0027repo sync\u0027 and it rebased\nmy manually-merged tree. Hence the option to skip it.\n\nChange-Id: I965e0dd1acb87f4a56752ebedc7e2de1c502dbf8\n"
    },
    {
      "commit": "43bda84362b8fd8bb74a81003e8b49cff15ea5ed",
      "tree": "6d7a8606c95c460ef85d4352e86e0aa0f053830e",
      "parents": [
        "9b017dab46bd5b61f8719a3f2d7ca301ea0f6f69"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Mar 12 11:25:04 2012 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Mar 12 12:13:15 2012 -0700"
      },
      "message": "Avoid missing content-length header in project.py\n\nOccassionally, the content-length may be missing when using urlib\nin python 2.6 and 2.7.  This change assumes the value of the header is\n0 if it doesn\u0027t exist\n\nChange-Id: Iaf1c8a796bc667823d4d7c30f9b617644b271d00\n"
    },
    {
      "commit": "9b017dab46bd5b61f8719a3f2d7ca301ea0f6f69",
      "tree": "81e7b9241068e917b006d9651397507a818cea56",
      "parents": [
        "e9dc3b33680571731181f30fbd38317d19c24652"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Feb 28 18:53:12 2012 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Feb 28 18:54:33 2012 -0800"
      },
      "message": "Update SUBMITTING_PATCHES\n\nThe review server is now at gerrit-review.googlesource.com.\n\nChange-Id: I4be67fdb1876eb2e2af4420ac63557596b9e233b\n"
    },
    {
      "commit": "e9dc3b33680571731181f30fbd38317d19c24652",
      "tree": "3f714ed282c94d2d055a2b5c050f4cf840f933bc",
      "parents": [
        "c9571423f843340de19ef576ccaa418ac72fdb58"
      ],
      "author": {
        "name": "Chris Wolfe",
        "email": "cwolfe@chromium.org",
        "time": "Thu Jan 26 11:36:18 2012 -0500"
      },
      "committer": {
        "name": "Chris Wolfe",
        "email": "cwolfe@chromium.org",
        "time": "Thu Jan 26 12:32:36 2012 -0500"
      },
      "message": "sync: Add manifest_name parameter\n\nThis parameter changes the manifest used by \u0027repo sync\u0027 for only\nthis execution. It should be useful for developers wishing to get\nthe repo temporarily into a known state, without clobbering their\nexisting manifest.\n\nTested by shifting Chrome OS between minilayout and full, and\nbetween several release-builder-generated manifests.\n\nChange-Id: I14194b665195b0e78f368d9ec8b8a83227af2627\n"
    },
    {
      "commit": "c9571423f843340de19ef576ccaa418ac72fdb58",
      "tree": "938fdcdde76dfc1cc8b299e0f6d96648242902e1",
      "parents": [
        "34fb20f67c7bdca2b1321a40f2fd558f9a34d866"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Jan 11 14:58:54 2012 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Jan 11 16:18:40 2012 -0800"
      },
      "message": "upload: Support uploading to Gerrit over https://\n\nIf SSH is not available, Gerrit returns NOT_AVAILABLE to the /ssh_info\nquery made by repo upload. In this case fallback to the /p/$PROJECT URL\nthat Gerrit also exports and use that for uploads.\n\nChange-Id: I1e3e39ab709ecc0a692614a41a42446426f39c08\n"
    },
    {
      "commit": "34fb20f67c7bdca2b1321a40f2fd558f9a34d866",
      "tree": "b3f9f06b115d2d52aa01c6deda8a3f3c3af345c2",
      "parents": [
        "ecff4f17b08f791466b73d935c772de57f2257e6"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Nov 30 13:41:02 2011 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Wed Nov 30 13:41:02 2011 -0800"
      },
      "message": "Revert \"Default repo manifest settings in git config\"\n\nThis reverts commit ee1c2f5717fcc137ab887a4aae8a08d50a539b9a.\n\nThis breaks a lot of buildbot systems. Rolling it back for now\nuntil we can understand what the breakage was and how to fix it.\n"
    },
    {
      "commit": "ecff4f17b08f791466b73d935c772de57f2257e6",
      "tree": "44b8e4a958369d33a7e46a8a5d629b2c1486feec",
      "parents": [
        "cc14fa9820a4c9fb7a403bbe1264856c6437bf96"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 29 15:01:33 2011 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 29 15:02:15 2011 -0800"
      },
      "message": "Describe the repo launch version in `repo version`\n\n  repo version v1.7.8\n         (from https://android.googlesource.com/tools/repo.git)\n  repo launcher version 1.14\n         (from /home/sop/bin/repo)\n  git version 1.7.8.rc2.256.gcc761\n  Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)\n  [GCC 4.4.3]\n\nChange-Id: Ifcbe5b0e226a1a6ca85455eb62e4da5e9a0f0ca0\n"
    },
    {
      "commit": "cc14fa9820a4c9fb7a403bbe1264856c6437bf96",
      "tree": "dfbd9b5de0c190815ea07f1b3f8e46b7acf14d7a",
      "parents": [
        "3ce2a6b46bb368f000d25782e24d701f68f32659"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 29 12:32:56 2011 -0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 29 14:43:04 2011 -0800"
      },
      "message": "Improve error handling when reading loose refs\n\nWhen repo is trying to figure out branches the repository has by\ntraversing refs/heads, add exception handling for readline.\n\nChange-Id: If3b2a3720c6496f52f629aa9a2539f186d6ec882\n"
    },
    {
      "commit": "3ce2a6b46bb368f000d25782e24d701f68f32659",
      "tree": "0d22b2e9993bd3a378bb9dc56df134c038621397",
      "parents": [
        "841be34968c91c3ea8d8694bc5910e6388f58cbb"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Fri Apr 29 09:59:12 2011 -0400"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 29 14:38:19 2011 -0800"
      },
      "message": "Propagate result codes from subcmds to sys.exit().\n\nAllows scripts driving repo to know when git failures have\noccurred, not just repo internal errors.\n\nChange-Id: Id20fbbb405c35a148e72c87b822da3f3bf93839c\n"
    },
    {
      "commit": "841be34968c91c3ea8d8694bc5910e6388f58cbb",
      "tree": "cd2b3db593611ecad858e841edae17183458f680",
      "parents": [
        "ee1c2f5717fcc137ab887a4aae8a08d50a539b9a"
      ],
      "author": {
        "name": "Victor Boivie",
        "email": "victor.boivie@sonyericsson.com",
        "time": "Tue Apr 05 11:31:10 2011 +0200"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 29 14:31:56 2011 -0800"
      },
      "message": "Don\u0027t prompt the user for name/email unless necessary\n\nIf the user has already configured a workspace, use these values\nwhen re-running \u0027repo init\u0027.\n\nOtherwise, if the user has global name and e-mail set, use these.\n\nIt\u0027s always possible to override this and be prompted by specifying\n--config-name when running \u0027repo init\u0027.\n\nChange-Id: If45f0e4b14884071439fb02709dc5cb53f070f60\n"
    },
    {
      "commit": "ee1c2f5717fcc137ab887a4aae8a08d50a539b9a",
      "tree": "7a95e6ed8f8b74aac5ba59cbd04e6f24938f2e54",
      "parents": [
        "6a1f73738071e299f600017d99f7252d41b96b4b"
      ],
      "author": {
        "name": "Victor Boivie",
        "email": "victor.boivie@sonyericsson.com",
        "time": "Tue Apr 19 10:50:12 2011 +0200"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 29 14:24:58 2011 -0800"
      },
      "message": "Default repo manifest settings in git config\n\nA default manifest URL can be specified using:\n  git config --global repo-manifest.\u003cid\u003e.url \u003curl\u003e\n\nA default manifest server can be specified using:\n  git config --global repo-manifest.\u003cid\u003e.server \u003curl\u003e\n\nA default git mirror reference can be specified using:\n  git config --global repo-manifest.\u003cid\u003e.reference \u003cpath\u003e\n\nThis will allow the user to use \u0027repo init -u \u003cid\u003e\u0027 as\na shorter alternative to specifying the full URL.\n\nAlso, manifest server will not have to be specified in the\nmanifest XML and the reference will not have to be specified\non the command line. If they are, they will override these\ndefault values however.\n\nChange-Id: Ifdbc160bd5909ec7df9efb0c5d7136f1d9351754\nSigned-off-by: Victor Boivie \u003cvictor.boivie@sonyericsson.com\u003e\n"
    },
    {
      "commit": "6a1f73738071e299f600017d99f7252d41b96b4b",
      "tree": "86ff686f12648b471e153e295c706e0f2a948577",
      "parents": [
        "e9311273dda9aef91c563cd69b30f7a7491c56b5"
      ],
      "author": {
        "name": "Christer Fletcher",
        "email": "christer.fletcher@sonyericsson.com",
        "time": "Thu Apr 28 14:13:14 2011 +0200"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 29 14:01:57 2011 -0800"
      },
      "message": "Added remote destination branch information when uploading.\n\nSeveral times one have done an upload only to later notice in gerrit\nthat the upload was done to the wrong branch as the git has not yet\nbeen branched for the current git. This change will make repo print\nwhat the destination branch is when asking the user if she wants to\ngo through with the upload.\n\nChange-Id: Ia9c3a92a6a04c022edfebf4f8d651ac062bb1f3b\n"
    },
    {
      "commit": "e9311273dda9aef91c563cd69b30f7a7491c56b5",
      "tree": "bb9d6134f3babbc66f0fcace85989c53129b5de9",
      "parents": [
        "605a9a487bba6e25fb48d4e3076c89b7f686517a"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Aug 11 15:46:43 2011 -0400"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 29 12:38:52 2011 -0800"
      },
      "message": "repo: capitalize default prompt char\n\nIt is common in command line tools to indicate what the default answer\nwill be if the user simply hits enter.  In repo, the display is just\n\"y/n\" with no indication as to which is the default.  So change the n\nto N in the messages since that is how repo operates.\n\nChange-Id: I81819ae630355072eb0365e59168b0921289498f\n"
    },
    {
      "commit": "605a9a487bba6e25fb48d4e3076c89b7f686517a",
      "tree": "0c0bf5133e24f319a1d6c61d8237b87469c202b7",
      "parents": [
        "2a32f6afa64c88142a476cd719d29cebacbdfd19"
      ],
      "author": {
        "name": "chenguodong",
        "email": "chenguodong@huawei.com",
        "time": "Mon Aug 22 18:42:47 2011 +0800"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 29 12:11:41 2011 -0800"
      },
      "message": "Fixed UnicodeDecodeError while uploading changes.\n\nWhen commit with comment that has non-ASCII characters,\nUnicodeDecodeError will be raised\nwhile uploading multiple project/branch changes.\nBecause some strings in script are not str type, but unicode.\nSo all the strings are decoded to unicode,\nand python use ascii to do this,\nit can not decode non-ASCII characters,\nso UnicodeDecodeError raised.\n\nSigned-off-by: chenguodong \u003cchenguodong@huawei.com\u003e\n\nChange-Id: I46447f489a4b9760a5899c7ba9d764b688594e46\n"
    },
    {
      "commit": "2a32f6afa64c88142a476cd719d29cebacbdfd19",
      "tree": "c268998cae067d7e80b828c68cb78f3bd0809a53",
      "parents": [
        "498fe90b455e896e306498abd24961fd90a21c67"
      ],
      "author": {
        "name": "Anatol Pomazau",
        "email": "anatol@google.com",
        "time": "Tue Aug 30 10:52:33 2011 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 29 12:09:35 2011 -0800"
      },
      "message": "Fix typo\n\nChange-Id: Idd68ad0a34fcf4bd4e18b0248f50187a539d610a\n"
    },
    {
      "commit": "498fe90b455e896e306498abd24961fd90a21c67",
      "tree": "1f45eba29d25a4751ebd43b6cfe89cf532e492d9",
      "parents": [
        "53d6f4d17e0cb4eabcd604d584a1132a51cc8bf3"
      ],
      "author": {
        "name": "Ulrik Sjölin",
        "email": "ulrik.sjolin@sonyericsson.com",
        "time": "Sun Sep 11 22:59:37 2011 +0200"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Nov 29 11:54:58 2011 -0800"
      },
      "message": "Stabilize repo communication with subprocesses.\n\nMake repo use the standard way in python to work with pipes.\nCommunication via pipes to sub processes is done by calling\ncommunicate(). This will make repo not hang every now and\nthen.\n\nChange-Id: Ibe2c4ecbdbcbe72f0b725ca50d54088e5646fc5d\n"
    },
    {
      "commit": "53d6f4d17e0cb4eabcd604d584a1132a51cc8bf3",
      "tree": "c9effdc3a5d890ac55fb8a9f2aa68ac0d500873e",
      "parents": [
        "9d8f914fe8ac75e18e0da2b7ce4886a2ba490fc6"
      ],
      "author": {
        "name": "Anatol Pomazau",
        "email": "anatol@google.com",
        "time": "Thu Aug 25 17:21:47 2011 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Nov 03 13:08:27 2011 -0700"
      },
      "message": "Add a sync flag that fetches only current branch\n\nThere is also shortcuts in case if the \"current branch\" is\na persistent revision such as tag or sha1. We check if the\npersistent revision is present locally and if it does - do\nno fetch anything from the server.\n\nThis greately reduces sync time and size of the on-disk repo\n\nChange-Id: I23c6d95185474ed6e1a03c836a47f489953b99be\n"
    },
    {
      "commit": "9d8f914fe8ac75e18e0da2b7ce4886a2ba490fc6",
      "tree": "ff7fef6ee9840cdb1fb762cbb58e5ffc3ec6232e",
      "parents": [
        "ceea368e887b1c1c600400f40564eca4f8b40192"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Oct 20 14:36:35 2011 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Nov 03 13:05:14 2011 -0700"
      },
      "message": "Remove extra \u0027/\u0027 in RemoteSpec\n\nurljoin appends a \u0027/\u0027 if only the domain is in the url path.  This\nchange strips that off before creating a RemoteSpec\n"
    },
    {
      "commit": "ceea368e887b1c1c600400f40564eca4f8b40192",
      "tree": "5cdd2d5a985e6b10e9f5116ad5a5aa7065ef7105",
      "parents": [
        "b660539c4ac691312b44c13c6311568749537290"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Oct 20 10:45:47 2011 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Thu Oct 20 11:01:38 2011 -0700"
      },
      "message": "Correctly name projects when mirroring\n\nA bug introduced by relative urls caused projects such as manifest.git\nto be placed in the root directory instead of the directory they should\nby in.\n\nThis fix creates and refers to a resolvedFetchUrl in the _XmlRemote\nclass in order to get a fetchUrl that is never relative.\n"
    },
    {
      "commit": "b660539c4ac691312b44c13c6311568749537290",
      "tree": "fc73316785d794fdb2c9f6c85bb5ff13a2422388",
      "parents": [
        "752371d91b9c7d1e9d6859cdf4cd8fef2f7b245c"
      ],
      "author": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 11 15:58:07 2011 -0700"
      },
      "committer": {
        "name": "Shawn O. Pearce",
        "email": "sop@google.com",
        "time": "Tue Oct 11 15:58:07 2011 -0700"
      },
      "message": "Fix sync on Python 2.6.6\n\nPython 2.6.6 has the same bug as Python 2.7, where HTTP\nauthentication just stops working, but does not have the\nsetter method to clear the retry counter. Work around by\nsetting the field directly if it exists.\n\nChange-Id: I6a742e606bb7750dc66c33fc7c5d1310541db2c8\nSigned-off-by: Shawn O. Pearce \u003csop@google.com\u003e\n"
    }
  ],
  "next": "752371d91b9c7d1e9d6859cdf4cd8fef2f7b245c"
}
