)]}'
{
  "log": [
    {
      "commit": "db75704bfc12546bfbce96aea0be5c283df18314",
      "tree": "5944a458effaa5f8f7297176d2667d87db1b8c67",
      "parents": [
        "35de228f331101ba17bbc658c3cd910e54725517"
      ],
      "author": {
        "name": "Than McIntosh",
        "email": "thanm@google.com",
        "time": "Mon Jun 01 11:17:13 2015 -0400"
      },
      "committer": {
        "name": "Than McIntosh",
        "email": "thanm@google.com",
        "time": "Mon Jun 22 08:00:20 2015 -0400"
      },
      "message": "Fix \u0027repo cherry-pick\u0027 to avoid hanging on commit-msg update.\n\nAfter performing the actual cherry-pick operation, the code\nin cherry_pick.py opens a pipe to \u0027git commit -F\u0027 to rewrite the commit\nmessage, emits the fixed-up commit msg to the pipe, then waits\nfor \u0027git commit\u0027 to complete. The child \u0027git\u0027 process winds up\nhanging while reading from the pipe, however, since the parent\nprocess still has it open. To fix the hang, change the parent process\nto close its end of the pipe after it has emitted the message.\n\nChange-Id: I5929371e69a5b076f09009d00d40a2c72ac8ac33\n"
    },
    {
      "commit": "35de228f331101ba17bbc658c3cd910e54725517",
      "tree": "69f4b4bd1263c8a6f9ab5186c7cf3e9a1b7839a8",
      "parents": [
        "ace097c36ef2d27991cb8186ddd65ce365f28ee8",
        "382582728ea779aa4cc5e8a7eba2b7b2167efabc"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon May 11 09:20:52 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 11 09:20:54 2015 +0000"
      },
      "message": "Merge \"Don\u0027t attempt to create \"fully qualified names\" for SHA1s\""
    },
    {
      "commit": "ace097c36ef2d27991cb8186ddd65ce365f28ee8",
      "tree": "3f2b98cff76755a0904ca224b5e618e902d82406",
      "parents": [
        "b4d43b9f664d6472b6c1e91c98f951037d00cea5",
        "b155354034a7ac18d83ab28cc3756dc36591435f"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri May 01 07:51:52 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 01 07:51:52 2015 +0000"
      },
      "message": "Merge \"Add option on sync to avoid fetching from remotes for existing sha1\""
    },
    {
      "commit": "b155354034a7ac18d83ab28cc3756dc36591435f",
      "tree": "f273424f6b01482197113508d11a841f75818f57",
      "parents": [
        "4ccad7554b958c701653c41a72442cccf301e71a"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Sep 04 21:28:09 2014 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Apr 30 14:29:02 2015 +0000"
      },
      "message": "Add option on sync to avoid fetching from remotes for existing sha1\n\nIn 2fb6466f795eb30c1dfa598501f5b5d2981e6a5f an optimisation was\nadded to avoid fetching from remotes if the project is fixed to\na revision and the revision is already available locally.\n\nThis causes problems for users who expect all objects to be\nfetched by default.\n\nChange the logic so that the optimized behaviour is only enabled if\nan option is explicitly given to repo sync.\n\nChange-Id: I3b2794ddd8e0071b1787e166463cd8347ca9e24f\n"
    },
    {
      "commit": "382582728ea779aa4cc5e8a7eba2b7b2167efabc",
      "tree": "40cefffc2092d6813021d904af1ead84b292c57e",
      "parents": [
        "4ccad7554b958c701653c41a72442cccf301e71a"
      ],
      "author": {
        "name": "Alexandre Boeglin",
        "email": "alexandre.boeglin@parrot.com",
        "time": "Thu Apr 30 14:50:33 2015 +0200"
      },
      "committer": {
        "name": "Alexandre Boeglin",
        "email": "alexandre.boeglin@parrot.com",
        "time": "Thu Apr 30 14:54:47 2015 +0200"
      },
      "message": "Don\u0027t attempt to create \"fully qualified names\" for SHA1s\n\nDoing so breaks \"repo init -b \u003cSHA1\u003e\".\n\nChange-Id: Ic071a1b099a9125db22ea446d7e92e7854d69b37\n"
    },
    {
      "commit": "b4d43b9f664d6472b6c1e91c98f951037d00cea5",
      "tree": "c75e26c4763222dde9526443781fd8f2d47f74fd",
      "parents": [
        "4ccad7554b958c701653c41a72442cccf301e71a"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Apr 28 18:28:12 2015 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Apr 30 10:32:37 2015 +0900"
      },
      "message": "Add --prune option to fetch when syncing a mirror repo\n\nWhen syncing a mirror repo, add the --prune option to the fetch\ncommand to force removal of stale refs from the mirror.\n\nChange-Id: I4b43b2a5c86b9915627887c16f6569066f3ab978\n"
    },
    {
      "commit": "4ccad7554b958c701653c41a72442cccf301e71a",
      "tree": "ce4fc626c19967f4167577625479e8df9c51f106",
      "parents": [
        "403b64edf468204597559cf61b346b93af9af232"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Apr 29 10:45:37 2015 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Apr 29 10:45:37 2015 -0700"
      },
      "message": "Fix substitution err for schemeless manifest urls\n\nPreviously, we used a regex that would only remove a phony string from\na url if it existed, but we recently replaced that with a slice.  This\nchange goes back to the previous behavior.\n\nChange-Id: I8baf527be01c4b49d45b903b31a1cd6315563d5b\n"
    },
    {
      "commit": "403b64edf468204597559cf61b346b93af9af232",
      "tree": "535ad68291d80eaea7986ccfc9dc40946e2e78b0",
      "parents": [
        "a38769cda88fce2e96c02021060a4c7d2cb96cc8"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon Apr 27 10:41:33 2015 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon Apr 27 10:56:27 2015 +0900"
      },
      "message": "Don\u0027t append branch to fetch spec when syncing to a mirror\n\nAppending the branch to the fetch spec causes sync of a mirror to\nfail for projects that don\u0027t have an explicit revision specified,\nand don\u0027t have a branch of the same name as the default revision.\n\nFor example, a manifest defining a default revision:\n\n \u003cdefault revision\u003d\"master\"\u003e\n\nhaving a project without an explicit revision:\n\n \u003cproject name\u003d\"path/to/project\"\u003e\n\nand not having a branch named \"master\", will cause repo sync to\nfail for that project with the error:\n\n Couldn\u0027t find remote ref refs/heads/master\n\nModify the logic to not append the branch onto the fetch spec when\nsyncing to a mirror.\n\nChange-Id: I5c4457bd125519abf27abe682dea62ad708978c9\n"
    },
    {
      "commit": "a38769cda88fce2e96c02021060a4c7d2cb96cc8",
      "tree": "9f437217354bcfbd9df1c06e6566c6a04a34c70b",
      "parents": [
        "44859d02672be7509b8fe9b2d444aa239a849af5",
        "6ad6dbefe79196f0d7bb717fa9279837083e9113"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Apr 08 17:59:56 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 08 17:59:58 2015 +0000"
      },
      "message": "Merge \"forall: use a generator to map the Pool\""
    },
    {
      "commit": "44859d02672be7509b8fe9b2d444aa239a849af5",
      "tree": "d13e364f800b935f1332d0bdf3cf5559e35c048c",
      "parents": [
        "33fe4e99f95125a0083e97c4c143d1fb5134cf36",
        "b51f07cd0643388ffe2cefb28899429d9e1131fc"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Apr 08 17:58:33 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 08 17:58:35 2015 +0000"
      },
      "message": "Merge \"status: lose dependence on StringIO\""
    },
    {
      "commit": "6ad6dbefe79196f0d7bb717fa9279837083e9113",
      "tree": "a2c8b2c570bf83bca1d08b6e7c0394369d8c1565",
      "parents": [
        "33fe4e99f95125a0083e97c4c143d1fb5134cf36"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Wed Apr 08 13:22:30 2015 +0100"
      },
      "committer": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Wed Apr 08 13:22:34 2015 +0100"
      },
      "message": "forall: use a generator to map the Pool\n\nBefore, a list was generated, which is why there was a massive delay.\n\nUsing a generator will allow processes to start straight away\n\nChange-Id: Ia325b0b340cc328c08c9bcc92a6709bbdaf6a664\n"
    },
    {
      "commit": "33fe4e99f95125a0083e97c4c143d1fb5134cf36",
      "tree": "7dca59965898c7e1292cd4ea855f1f4b09ba2019",
      "parents": [
        "4214585073aa0f2e95e79b8956d0fa6849277b27"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Apr 07 11:08:04 2015 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Apr 07 11:10:17 2015 +0900"
      },
      "message": "Remove deprecated `include-ids` setting from pylint config\n\nChange-Id: Ie5ab21e434d24ff862bb5e0c263761370d71f56f\n"
    },
    {
      "commit": "4214585073aa0f2e95e79b8956d0fa6849277b27",
      "tree": "6fd78a7387bfc32f60735ef960072ae282861bc6",
      "parents": [
        "04f2f0e1860d10a4cc2a7b8ef7cc1665f51094b9",
        "bdf7ed230127084a684826868d64b502e4bd6760"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Apr 07 02:06:48 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 07 02:06:49 2015 +0000"
      },
      "message": "Merge \"Pylint and PEP8 fixes for color.py\""
    },
    {
      "commit": "b51f07cd0643388ffe2cefb28899429d9e1131fc",
      "tree": "f0bdd78523b44eb01597369b1f3ad8ac9f914b8e",
      "parents": [
        "04f2f0e1860d10a4cc2a7b8ef7cc1665f51094b9"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Sat Apr 04 21:18:59 2015 +0100"
      },
      "committer": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Sat Apr 04 21:21:49 2015 +0100"
      },
      "message": "status: lose dependence on StringIO\n\nbuflist was being used, which isn\u0027t available in Python 3.\n\n`Execute` was using StringIO to capture the output of `PrintWorkTreeStatus`,\nonly to redirect it straight to stdout.\nInstead, just let `PrintWorkTreeStatus` do it\u0027s own thing directly to stdout.\n\nfor handling `_FindOrphans`, we swap StringIO for a list. Nothing was done\nthat needed a a file like object.\n\nChange-Id: Ibdaae137904de66a5ffb590d84203ef0fe782d8b\n"
    },
    {
      "commit": "04f2f0e1860d10a4cc2a7b8ef7cc1665f51094b9",
      "tree": "f1df7b5d37b98c01d5b8eb49051564fea547dfa6",
      "parents": [
        "cb07ba7e3d466a98d0af0771b4f3e21116d69898"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Oct 01 17:22:46 2014 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Apr 01 17:43:36 2015 +0000"
      },
      "message": "Maintain fully qualified tracking branches\n\nWhen running repo branch, the git merge line (in many circumstances)\nis set to the revision of the project specified in the manifest.  If\nthis is a branch name that is not fully-qualified, we will end up with\nsomething like \"merge \u003d master\" instead of \"merge \u003d refs/heads/master\".\nThis change examines the revision if we are going to use that and\nchanges branch short names to fully qualified branch names.\n\nChange-Id: Ie1be94fb8d45df8eeac44a47f729a3819a05fa81\n"
    },
    {
      "commit": "cb07ba7e3d466a98d0af0771b4f3e21116d69898",
      "tree": "b8c33b2bc0d4f1324cae8e223d64f5a1c7ffcbcd",
      "parents": [
        "23ff7df6a759fcc7b52928d0b009beb9ba1310a6"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Sat Mar 28 23:26:04 2015 +0000"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Mar 31 20:12:44 2015 +0000"
      },
      "message": "Resolve fetch urls more efficiently\n\nInstead of using regex, append the netloc and relative\nscheme lists with the custom scheme.\nThe schemes will only be appended when needed, instead\nof passing X amount of regex replaces.\n\nsee http://bugs.python.org/issue18828 for more details.\n\nChange-Id: I10d26d5ddc32e7ed04c5a412bdd6e13ec59eb70f\n"
    },
    {
      "commit": "23ff7df6a759fcc7b52928d0b009beb9ba1310a6",
      "tree": "ee9715463e390f5bd44286ebfc5254d70cf02ffb",
      "parents": [
        "cc1b1a703ddfc965c0375b80ac6900170fae9b13"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Sat Mar 28 19:42:39 2015 +0000"
      },
      "committer": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Mon Mar 30 21:54:26 2015 +0000"
      },
      "message": "use the max depth instead of unshallow\n\nThis allows the use of older versions of git\n\nChange-Id: I88ea685066603af19896a791829355ddbfa91ffe\n"
    },
    {
      "commit": "cc1b1a703ddfc965c0375b80ac6900170fae9b13",
      "tree": "08d71a177c3205d9df7df234852a58206ebc5161",
      "parents": [
        "9c76f67f13c033b67b23206798701548207dd880"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Sat Mar 28 19:33:59 2015 +0000"
      },
      "committer": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Mon Mar 30 21:53:25 2015 +0000"
      },
      "message": "Revert \"Change the min git version from 1.7.2 to 1.8.2\"\n\nThis reverts commit 52b99aa91d0fbb5ea363b5febb367d602dbc56db.\n\nChange-Id: I01d93704c92f7af1ca2b36dbc9509ee1290e2d3c\n"
    },
    {
      "commit": "bdf7ed230127084a684826868d64b502e4bd6760",
      "tree": "49760da946dd1611dd118a0028a7e05ef3a29b73",
      "parents": [
        "9c76f67f13c033b67b23206798701548207dd880"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Sat Mar 28 21:10:17 2015 +0000"
      },
      "committer": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Sat Mar 28 21:12:27 2015 +0000"
      },
      "message": "Pylint and PEP8 fixes for color.py\n\nChange-Id: I1a676e25957a7b5dd800d2585a2ec7fe75295668\n"
    },
    {
      "commit": "9c76f67f13c033b67b23206798701548207dd880",
      "tree": "e089031b26a7fb97ee099bb6f7bdb21deaebafc0",
      "parents": [
        "52b99aa91d0fbb5ea363b5febb367d602dbc56db"
      ],
      "author": {
        "name": "John L. Villalovos",
        "email": "john.l.villalovos@intel.com",
        "time": "Mon Mar 16 20:49:10 2015 -0700"
      },
      "committer": {
        "name": "John L. Villalovos",
        "email": "john.l.villalovos@intel.com",
        "time": "Thu Mar 26 11:43:55 2015 -0700"
      },
      "message": "Always capture output for GitCommand\n\nSwitch the GitCommand program to always capture the output for stdout\nand stderr.  And by default print the output while running.\n\nThe options capture_stdout and capture_stderr have effectively become\noptions to supress the printing of stdout and stderr.\n\nUpdate the \u0027git fetch\u0027 to use \u0027--progress\u0027 so that the progress messages\nwill be displayed.  git checks if the output location isatty() and if it\nis not a TTY it will by default not print the progress messages.\n\nChange-Id: Ifdae138e008f80a59195f9f43c911a1a5210ec60\n"
    },
    {
      "commit": "52b99aa91d0fbb5ea363b5febb367d602dbc56db",
      "tree": "2a54378a9183eff42df6516e92303222ce4065e1",
      "parents": [
        "9371979628a945a1caf526aeff84a1ac68a22efe"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Mar 18 14:41:07 2015 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Mar 18 21:43:39 2015 +0000"
      },
      "message": "Change the min git version from 1.7.2 to 1.8.2\n\nThis is needed for the --unshallow option of git fetch.\n\nChange-Id: Ifdc5cec6130315c643924328fea425f1b94cb04a\n"
    },
    {
      "commit": "9371979628a945a1caf526aeff84a1ac68a22efe",
      "tree": "dddfeb5a602f799f31a8d62ac5feb72fa2fb06ab",
      "parents": [
        "20860042617d43ed192d60659cd92c71ea251519"
      ],
      "author": {
        "name": "Jonathan Nieder",
        "email": "jrn@google.com",
        "time": "Tue Mar 17 11:29:58 2015 -0700"
      },
      "committer": {
        "name": "Jonathan Nieder",
        "email": "jrn@google.com",
        "time": "Tue Mar 17 11:29:58 2015 -0700"
      },
      "message": "Revert \"Implementation of manifest defined githooks\"\n\nThis reverts commit 38e4387f8eb8cffd6359d726c38a7c524fef07e3.\n\nA \"repo init\" followed by \"repo sync\" is meant to be as safe as\n\"git clone\".  In particular it should not run arbitrary code provided\nby the manifest owner.\n\nIt would still be nice to have support for manifest-defined git hooks\n--- they\u0027d just need a prompt like the upload RepoHook has.  Hopefully\na later change can bring them back.\n\nChange-Id: I5ecd90fb5c2ed64f103d856d1ffcba38a47b062d\nSigned-off-by: Jonathan Nieder \u003cjrn@google.com\u003e\n"
    },
    {
      "commit": "20860042617d43ed192d60659cd92c71ea251519",
      "tree": "9f4e6c6b91e37bd1b254c7383b2796ffd709733b",
      "parents": [
        "0402cd882a05b22ddb4d3e10bf816f5165e1e11e",
        "2338788050bfacb64ebb23381b9874a9a7fde60c"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Mar 11 17:25:45 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 11 17:25:45 2015 +0000"
      },
      "message": "Merge \"Don\u0027t exit with error on HTTP 401 when downloading clone bundle\""
    },
    {
      "commit": "2338788050bfacb64ebb23381b9874a9a7fde60c",
      "tree": "a6ed81974dcc6236d96198a95868d566d2ca15f7",
      "parents": [
        "936183a492373f8a54b6ecaa806e252d08b793c5"
      ],
      "author": {
        "name": "Pascal Bach",
        "email": "pascal.bach@siemens.com",
        "time": "Fri Feb 13 16:23:12 2015 +0100"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Mar 11 07:43:40 2015 +0000"
      },
      "message": "Don\u0027t exit with error on HTTP 401 when downloading clone bundle\n\nIf the server returns HTTP 401 (unauthorized) when attempting to\ndownload clone bundle files, ignore it and continue, rather than\nexiting with a fatal error.\n\nChange-Id: I2c7ee03e149c354c7e4ad6ea1ebf266534778fe1\n"
    },
    {
      "commit": "0402cd882a05b22ddb4d3e10bf816f5165e1e11e",
      "tree": "17b4d948f9b27f8475d07600315de0733c6cb994",
      "parents": [
        "936183a492373f8a54b6ecaa806e252d08b793c5"
      ],
      "author": {
        "name": "Jakub Vrana",
        "email": "jakubvrana@google.com",
        "time": "Tue Sep 09 15:39:15 2014 -0700"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Mar 11 07:42:17 2015 +0000"
      },
      "message": "Add space between project path and branch in repo status.\n\nCurrently, paths longer than 39 chars have no space after them so it looks\nlike this:\n\nproject path/branch master\n\nChange-Id: I4c1bb13648ac099ade8a8d4ebafa04131571f842"
    },
    {
      "commit": "936183a492373f8a54b6ecaa806e252d08b793c5",
      "tree": "72dca53980e7c8a09985411c9603ba1d6e1c3e01",
      "parents": [
        "85e82670315cc2a6ac020430ae3f7e46862ff5d9"
      ],
      "author": {
        "name": "Yann Droneaud",
        "email": "ydroneaud@opteya.com",
        "time": "Thu Sep 12 10:51:18 2013 +0200"
      },
      "committer": {
        "name": "Filipe Brandenburger",
        "email": "filbranden@google.com",
        "time": "Fri Mar 06 13:23:27 2015 -0800"
      },
      "message": "git_config: add support for remote \u0027.\u0027\n\nAs a fix for issue #149, this patch add support for the remote \u0027.\u0027\n(local).\n\nAs an alias for the local repository, remote \u0027.\u0027 is lacking a fetch \u003d\nconfig in .git/config.\n\nWithout such refspec, repo info --overview is not able to process a\nlocal tracking branch.\n\nv2: Check for name \u003d\u003d \u0027.\u0027 before checking if merge starts with refs/,\n    since the case where it\u0027s not is invalid.\n\nSigned-off-by: Yann Droneaud \u003cydroneaud@opteya.com\u003e\nSigned-off-by: Filipe Brandenburger \u003cfilbranden@google.com\u003e\n\nChange-Id: I8c8fd8602cd68baecb530301ae41d37d751ec85d\n"
    },
    {
      "commit": "85e82670315cc2a6ac020430ae3f7e46862ff5d9",
      "tree": "e1cec59a11dafef7dfc301651a5fe0fe5b721ef1",
      "parents": [
        "e30f46b957c9c192f09a4907e3e7e802c9b782f8",
        "38e4387f8eb8cffd6359d726c38a7c524fef07e3"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Mar 05 20:52:29 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 05 20:52:30 2015 +0000"
      },
      "message": "Merge \"Implementation of manifest defined githooks\""
    },
    {
      "commit": "e30f46b957c9c192f09a4907e3e7e802c9b782f8",
      "tree": "5133f8bec8c780005dc307a6a124288e19e892fb",
      "parents": [
        "e4978cfbe32ce3c01b894f768a11c4fb56645e76"
      ],
      "author": {
        "name": "John L. Villalovos",
        "email": "john.l.villalovos@intel.com",
        "time": "Wed Feb 25 14:27:02 2015 -0800"
      },
      "committer": {
        "name": "John L. Villalovos",
        "email": "john.l.villalovos@intel.com",
        "time": "Wed Feb 25 14:29:28 2015 -0800"
      },
      "message": "Print stderr output from git command for RemoteFetch\n\nThe stderr output generated by git during a RemoteFetch was not being\nprinted.  This information is useful so print it.\n\nChange-Id: I6e6ce12c4a57e5ca2359f76ce14f2fcbbc37a5ef\n"
    },
    {
      "commit": "e4978cfbe32ce3c01b894f768a11c4fb56645e76",
      "tree": "f68298671e5d6d79f4b435f20a6fb97edb5b435b",
      "parents": [
        "126e298214df0ce364b9dae0aec12b7b02f627ce"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Feb 03 18:06:16 2015 -0800"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Feb 10 14:44:05 2015 -0800"
      },
      "message": "Ensure the repo project is never fetched with partial depth\n\nIf the repo project is synced with partial depth, then the tags\nwon\u0027t be fetched and users will be told the newest sha1 in the\nstable branch isn\u0027t signed.\n\nChange-Id: I107df97b4836b928c76aa33a700fa35d1705ae09\n"
    },
    {
      "commit": "126e298214df0ce364b9dae0aec12b7b02f627ce",
      "tree": "0a11ceb83a40dd2d7f5353cab84ac81d0269b87b",
      "parents": [
        "24245e00946b43d086d8bd55cf4facd00479959a"
      ],
      "author": {
        "name": "John L. Villalovos",
        "email": "john.l.villalovos@intel.com",
        "time": "Thu Jan 29 21:58:12 2015 -0800"
      },
      "committer": {
        "name": "John L. Villalovos",
        "email": "john.l.villalovos@intel.com",
        "time": "Tue Feb 03 13:49:51 2015 -0800"
      },
      "message": "Handle case where \u0027git remote prune\u0027 needs to be run\n\nHandle the case when this error occurs:\n    error: some local refs could not be updated; try running\n     \u0027git remote prune origin\u0027 to remove any old, conflicting branches\n\nThis is usually caused by a reference getting changed from a file to a\ndirectory.\n\nFor example:\n  Initially someone creates a branch \u0027foo\u0027 and it is stored as:\n    .git/refs/remotes/origin/foo\n\n  Then later on it is decided to change the layout structure where \u0027foo\u0027\n  is a directory with branches below it:\n    .git/refs/remotes/origin/foo/master\n\n  The problem occurs when someone still has\n  \u0027.git/refs/remotes/origin/foo\u0027 on their system and does a repo sync.\n  When this occurs the error message for needing to do a\n  \u0027git remote prune origin\u0027 occurs.\n\nNow when doing a \u0027git fetch\u0027 if the error message from git says that a\n\u0027git remote prune\u0027 is needed, it will do the prune and then retry the\nfetch.\n\nChange-Id: I4c6f5aa6bd932f0ef7a39134400bedd52e82f633\nSigned-off-by: John L. Villalovos \u003cjohn.l.villalovos@intel.com\u003e\n"
    },
    {
      "commit": "38e4387f8eb8cffd6359d726c38a7c524fef07e3",
      "tree": "897b7f640822d21019d740fd45aa564fba6a18f9",
      "parents": [
        "ee6908442102008df57b46271323d9b06d5fdfbf"
      ],
      "author": {
        "name": "Jimmie Wester",
        "email": "jimmie.wester@stericsson.com",
        "time": "Wed Oct 24 14:35:05 2012 +0200"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Feb 03 16:01:15 2015 +0900"
      },
      "message": "Implementation of manifest defined githooks\n\nWhen working within a team or corporation it is often\nuseful/required to use predefined git templates. This\nchange teaches repo to use a per-remote git hook template\nstructure.\n\nThe implementation is done as a continuation of the\nexisting projecthook functionality. The terminology is\ntherefore defined as projecthooks.\n\nThe downloaded projecthooks are stored in the .repo\ndirectory as a metaproject separating them from the users\nproject forest.\n\nThe projecthooks are downloaded and set up when doing a\nrepo init and updated for each new repo init.\n\nWhen downloading a mirror the projecthooks gits are\nnot added to the bare forest since the intention is to\nensure that the latest are used (allows for company policy\nenforcement).\n\nThe projecthooks are defined in the manifest file in the\nremote element as a subnode, the name refers to the\nproject name on the server referred to in the remote.\n\u003cremote name\u003d\"myremote ..\u003e\n   \u003cprojecthook name\u003d\"myprojecthookgit\" revision\u003d\"myrevision\"/\u003e\n\u003c/remote\u003e\n\nThe hooks found in the projecthook revision supersede\nthe stock hooks found in repo. This removes the need for\nupdating the projecthook gits for repo stock hook changes.\n\nChange-Id: I6796b7b0342c1f83c35f4b3e46782581b069a561\nSigned-off-by: Patrik Ryd \u003cpatrik.ryd@stericsson.com\u003e\nSigned-off-by: Ian Kumlien \u003cian.kumlien@gmail.com\u003e\n"
    },
    {
      "commit": "24245e00946b43d086d8bd55cf4facd00479959a",
      "tree": "2801423f8c09bf88d1f41756de186a0a2b78f787",
      "parents": [
        "db6f1b088425d0c5060f362e25c4028b2f2adb8c",
        "f2fad61bde10e5ffad3a5d683af90b1b35f9d99b"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Sat Jan 31 12:44:43 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 31 12:44:45 2015 +0000"
      },
      "message": "Merge \"Add missing documentation of --current-branch option on sync command\""
    },
    {
      "commit": "db6f1b088425d0c5060f362e25c4028b2f2adb8c",
      "tree": "18bbc19e3cfdf525905d85fd1635e69a9f6805d0",
      "parents": [
        "ee6908442102008df57b46271323d9b06d5fdfbf",
        "f97e8383a3b180fb5aa186f8cebc4c98d7787778"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Jan 30 19:36:04 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 30 19:36:06 2015 +0000"
      },
      "message": "Merge \"Use depth flag when fetching\""
    },
    {
      "commit": "f2fad61bde10e5ffad3a5d683af90b1b35f9d99b",
      "tree": "fe93ea6e0cea10a8bc01a07507656b8203a6b2f6",
      "parents": [
        "ee6908442102008df57b46271323d9b06d5fdfbf"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Jan 29 14:36:28 2015 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Jan 29 14:36:28 2015 +0900"
      },
      "message": "Add missing documentation of --current-branch option on sync command\n\nChange-Id: I72d6e3d51241148c1df97bbad26338debb1fcb4e\n"
    },
    {
      "commit": "ee6908442102008df57b46271323d9b06d5fdfbf",
      "tree": "27cec0e64125fc04c4286f315f3682c1d2ded0f1",
      "parents": [
        "d37d43f036dfbbdee6a3979b73d1dce3d3b96e19",
        "3000cdad2237abe1f956f8109e385891e1a96d17"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Jan 28 20:29:37 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 28 20:29:37 2015 +0000"
      },
      "message": "Merge \"Handle shallow checkout of SHA1 pinned repos\""
    },
    {
      "commit": "d37d43f036dfbbdee6a3979b73d1dce3d3b96e19",
      "tree": "70b5cf21c8f5cb0919a6e61840bdc349f3d72265",
      "parents": [
        "7bdac71087a51be4655a0280a719a0b401614e47",
        "b9d9efd39413248196161765811b84f6b90cf07d"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Jan 28 20:29:04 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 28 20:29:05 2015 +0000"
      },
      "message": "Merge \"Don\u0027t delete hooks in .git/hooks\""
    },
    {
      "commit": "7bdac71087a51be4655a0280a719a0b401614e47",
      "tree": "cdfd914ce5b503a828fc2c32d17f11f3464f8737",
      "parents": [
        "497bde4de500416fb428a8cd57b9c62708349924"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Wed Jul 16 12:56:40 2014 +0100"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Jan 22 04:20:21 2015 +0000"
      },
      "message": "pylint fixes for project.py\n\nFix all the formatting warnings and unused variables\n\nChange-Id: I17d88a23572303879530077f3a80451de5417fbb\n"
    },
    {
      "commit": "f97e8383a3b180fb5aa186f8cebc4c98d7787778",
      "tree": "22f8efcac598e4f961528c5e6373951a0a63f94b",
      "parents": [
        "497bde4de500416fb428a8cd57b9c62708349924"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Jan 21 11:12:46 2015 -0800"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Jan 22 01:20:22 2015 +0000"
      },
      "message": "Use depth flag when fetching\n\nCurrently, we only use the depth flag when cloning.  The result is that when\nnew project history has merges, the entire history of the merged branch is\nbrought in and the project becomes unshallow very quickly.  --depth and\nclone-depth are often used to save on space, not just network load, so this\nseems less than ideal.\n\nThis change uses --depth on every fetch (when the user has depth specified),\nnot just the initial clone.  The result is that the given project stays\nconsistently shallow as opposed to growing over time, especially when merges\nare involved.\n\nChange-Id: Iac706cfdad4a555c72f9d9f1119195d38d91df12\n"
    },
    {
      "commit": "3000cdad2237abe1f956f8109e385891e1a96d17",
      "tree": "370e613827df97302ac94c833385f674f56e8a2e",
      "parents": [
        "3eb87cec5cae5f43becfe9fd1ff94de855cac08c"
      ],
      "author": {
        "name": "Bertrand SIMONNET",
        "email": "bsimonnet@google.com",
        "time": "Tue Nov 25 16:19:29 2014 -0800"
      },
      "committer": {
        "name": "Bertrand SIMONNET",
        "email": "bsimonnet@google.com",
        "time": "Wed Jan 21 14:14:23 2015 -0800"
      },
      "message": "Handle shallow checkout of SHA1 pinned repos\n\nWhen doing a shallow checkout SHA1 pinned repos with repo init --depth\u003d1 and\nrepo sync -c, repo would try to fetch only some reference and fail if the exact\nSHA1 repo was missing.\nInstead, when depth is set, fetch only the specific commit.\n\nChange-Id: If3f799d0e78c03faea47f796380bb5e367b11998\n"
    },
    {
      "commit": "b9d9efd39413248196161765811b84f6b90cf07d",
      "tree": "2258680f0e6698bee893be53a62c0525f29ae9c1",
      "parents": [
        "3eb87cec5cae5f43becfe9fd1ff94de855cac08c"
      ],
      "author": {
        "name": "Mitchel Humpherys",
        "email": "mitchelh@codeaurora.org",
        "time": "Thu Jan 15 22:40:02 2015 -0800"
      },
      "committer": {
        "name": "Mitchel Humpherys",
        "email": "mitchelh@codeaurora.org",
        "time": "Thu Jan 15 22:49:08 2015 -0800"
      },
      "message": "Don\u0027t delete hooks in .git/hooks\n\nWe currently delete all hooks in .git/hooks for each project before\nsymlink\u0027ing in the standard project hooks.  This can be annoying for\nusers who have installed custom git hooks.\n\nThere\u0027s no reason to delete all existing hooks.  Just rip out the\ndeletion code.\n\nChange-Id: I5062a6cd20af700f6d6a17b11ad6c94853987c57\nSigned-off-by: Mitchel Humpherys \u003cmitchelh@codeaurora.org\u003e\n"
    },
    {
      "commit": "497bde4de500416fb428a8cd57b9c62708349924",
      "tree": "3137a3ad894bbc60fbb28d05c21bc1d1e9a3e989",
      "parents": [
        "4abf8e6ef81e78469148b156ae2d2da70ace627a"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Fri Jan 02 13:58:05 2015 -0800"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Fri Jan 02 13:58:05 2015 -0800"
      },
      "message": "Respect --quiet when looking up bundle cookie file\n\nChange-Id: I02a244132c49e4bb50ecda978974d6d2b220f6d1\n"
    },
    {
      "commit": "4abf8e6ef81e78469148b156ae2d2da70ace627a",
      "tree": "7db9b9c053a89e1fbc1b38e4befd5d0840a261a1",
      "parents": [
        "137d0131bf35b01db0d49e1d9720bbc526232c61"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Fri Jan 02 11:39:04 2015 -0800"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Fri Jan 02 13:57:14 2015 -0800"
      },
      "message": "Save cookies back to jar when fetching clone.bundle\n\nChange-Id: I3ef71b5e7f8ee1cda66057e46ae234866c7258c4\n"
    },
    {
      "commit": "137d0131bf35b01db0d49e1d9720bbc526232c61",
      "tree": "116b3503d8b9c44a7c95311121bd3c577013c5b6",
      "parents": [
        "42e679b9f63086dc1a27aed2d99deb3c1da428fc"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Fri Jan 02 11:12:54 2015 -0800"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Fri Jan 02 13:57:13 2015 -0800"
      },
      "message": "Hold persistent proxy connection open while fetching clone.bundle\n\nThe persistent proxy may choose to present a per-process cookie file\nthat gets cleaned up after the process exits, to help with the fact\nthat libcurl cannot save cookies atomically when a cookie file is\nshared across processes. We were letting this cleanup happen\nimmediately by closing stdin as soon as we read the configuration\noption, resulting in a nonexistent cookie file by the time we use the\nconfig option.\n\nWork around this by converting the cookie logic to a context manager\nmethod, which closes the process only when we\u0027re done with the cookie\nfile.\n\nChange-Id: I12a88b25cc19621ef8161337144c1b264264211a\n"
    },
    {
      "commit": "42e679b9f63086dc1a27aed2d99deb3c1da428fc",
      "tree": "266db16bcb5013eb967bd6b035dde236c34c73a7",
      "parents": [
        "c8d882ae2a75c732ef590ef425a3039b8b04403e",
        "902665bce668a58996de657a65c5ae3002a8810b"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Jan 02 20:56:25 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 02 20:56:25 2015 +0000"
      },
      "message": "Merge \"add a global --color option\""
    },
    {
      "commit": "902665bce668a58996de657a65c5ae3002a8810b",
      "tree": "04d5093d86a398acb3be824cec60b89076674258",
      "parents": [
        "3eb87cec5cae5f43becfe9fd1ff94de855cac08c"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Mon Dec 22 15:17:59 2014 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Dec 30 18:50:05 2014 -0500"
      },
      "message": "add a global --color option\n\nIf you want to turn off colors for commands, you have to manually adjust\nthe git config settings (in various locations).  If you\u0027re writing scripts\nthough, you often don\u0027t want to modify those locations.  Add a commandline\noption to explicitly control things.\n\nThe default behavior is unchanged -- we still scan the config files.\n\nChange-Id: I54a3fd8e1918bac180aadd7c7d3004f069b02522\n"
    },
    {
      "commit": "c8d882ae2a75c732ef590ef425a3039b8b04403e",
      "tree": "5fe47787c3ce15fdd8cb342251dc086b19d42b25",
      "parents": [
        "3eb87cec5cae5f43becfe9fd1ff94de855cac08c"
      ],
      "author": {
        "name": "Kris Giesing",
        "email": "kgiesing@google.com",
        "time": "Tue Dec 23 13:02:32 2014 -0800"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Dec 24 10:23:24 2014 +0900"
      },
      "message": "Silence warnings about invalid clone.bundle files when quieted\n\nThe invalid clone.bundle file warning is not typically user actionable,\nand can be confusing. So don\u0027t show it when -q flag is in effect.\n\nChange-Id: If9fef4085391acf54b63c75029ec0e161c38eb86\n"
    },
    {
      "commit": "3eb87cec5cae5f43becfe9fd1ff94de855cac08c",
      "tree": "2d1def55cf28077dfb73385fffed502eb996f661",
      "parents": [
        "5fb8ed217c1f7ddfdaa54bdb8384888998734a84"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Nov 10 23:46:10 2014 +0000"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Nov 10 23:49:32 2014 +0000"
      },
      "message": "Revert \"Check for existence of refs upon initial fetch\"\n\nThis reverts commit 565480588d2bff4205b437862505e77382189811.\n\nWe are reverting this change for 2 reasons:\n\n1) It introduced a bug for users using sync -c with a reference mirror.\n2) The fetch specs have recently changed to cause git to properly fail\nwhen we request a non-existent branch of a manifest, removing the need\nfor this change.\n\nChange-Id: I0f63da9bfb40cf5ffafb7979f1b8c929a738fc7b"
    },
    {
      "commit": "5fb8ed217c1f7ddfdaa54bdb8384888998734a84",
      "tree": "f02063743a63964d827ae19fbfab78665cff1d64",
      "parents": [
        "7e12e0a2faf5e572a196e90581c1215cc8dc7551"
      ],
      "author": {
        "name": "Max Liu",
        "email": "idiotmax@gmail.com",
        "time": "Mon Jun 23 14:48:16 2014 +0800"
      },
      "committer": {
        "name": "Hsing-Chieh Liu",
        "email": "idiotmax@gmail.com",
        "time": "Mon Oct 27 12:25:05 2014 +0000"
      },
      "message": "If revision is sha hash and dest-branch is defined, use it for starting branch\n\nChange-Id: I538c7d216f72b87629b61aee547d374a398c95da\n"
    },
    {
      "commit": "7e12e0a2faf5e572a196e90581c1215cc8dc7551",
      "tree": "c0f4a17db28de2a11e79648ab911f464ca2a4951",
      "parents": [
        "7893b85509c1165d11ad951261aa9f49deb09eea"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Oct 23 15:40:00 2014 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Oct 23 15:42:09 2014 -0700"
      },
      "message": "Support persistent-http(s) review urls\n\nChange-Id: I8e0065685c968dfa9dc26bcdb6ee2fa14019c509\n"
    },
    {
      "commit": "7893b85509c1165d11ad951261aa9f49deb09eea",
      "tree": "24d95c707b9fd0d4e31509e9cf418a7e7828e7ee",
      "parents": [
        "b4e50e67e84cccd34a9759d2414c7215d657659a",
        "04e52d616625cc61d897a92d5e9a2c068465f8fc"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Oct 22 00:23:18 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 22 00:23:18 2014 +0000"
      },
      "message": "Merge changes I1f71be22,I5b119f11\n\n* changes:\n  Always fetch the specific revision given\n  Support specifying non-HEADS refs as upstream\n"
    },
    {
      "commit": "b4e50e67e84cccd34a9759d2414c7215d657659a",
      "tree": "0b6cca46b9bbab16a56e92778d6abc2c4bf5ee16",
      "parents": [
        "0936aeab2ca7553a40d6cc7aa9a13bb083949e10",
        "14e134da02f3c050c9a6ec31242b45e27bdf4821"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Oct 21 18:03:53 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 21 18:03:55 2014 +0000"
      },
      "message": "Merge \"upload: report names of uncommitted files\""
    },
    {
      "commit": "0936aeab2ca7553a40d6cc7aa9a13bb083949e10",
      "tree": "8463bfb8a61d8539fa374fd0fafcface41e817fb",
      "parents": [
        "5cf16607d33268ab0320a886c4a7b5e052684fa4"
      ],
      "author": {
        "name": "Scott Anderson",
        "email": "camel@droidmod.org",
        "time": "Fri Oct 17 15:37:12 2014 -0400"
      },
      "committer": {
        "name": "Scott Anderson",
        "email": "camel@droidmod.org",
        "time": "Fri Oct 17 15:45:57 2014 -0400"
      },
      "message": "Exit 1 if repo download -c fails\n\nChange-Id: I6985548bf87032b121eeccf858c4eeca1a60598c\n"
    },
    {
      "commit": "14e134da02f3c050c9a6ec31242b45e27bdf4821",
      "tree": "f6c417df0dfbb5799a2406fbae206be64a0d3214",
      "parents": [
        "5cf16607d33268ab0320a886c4a7b5e052684fa4"
      ],
      "author": {
        "name": "Vadim Bendebury",
        "email": "vbendeb@chromium.org",
        "time": "Sun Oct 05 15:40:30 2014 -0700"
      },
      "committer": {
        "name": "Vadim Bendebury",
        "email": "vbendeb@google.com",
        "time": "Tue Oct 14 11:20:05 2014 -0700"
      },
      "message": "upload: report names of uncommitted files\n\nWhen there are uncommitted files in the tree, \u0027repo upload\u0027 stops to\nask if it is OK to continue, but does not report the actual names of\nuncommitted files.\n\nThis patch adds plumbing to have the outstanding file names reported\nif desired.\n\nBUG\u003dNone\nTEST\u003dverified that \u0027repo upload\u0027 properly operates with the following\n    conditions present in the tree:\n    . file(s) modified locally\n    . file(s) added to index, but not committed\n    . files not known to git\n    . no modified files (the upload proceeds as expected)\n\nChange-Id: If65d5f8e8bcb3300c16d85dc5d7017758545f80d\nSigned-off-by: Vadim Bendebury \u003cvbendeb@chromium.org\u003e\nSigned-off-by: Vadim Bendebury \u003cvbendeb@google.com\u003e\n"
    },
    {
      "commit": "04e52d616625cc61d897a92d5e9a2c068465f8fc",
      "tree": "352054271b7b44e919d39321e41be982a0d91f26",
      "parents": [
        "909d58b2e2e3695ecfa80a54b8700fb889a02677"
      ],
      "author": {
        "name": "Nasser Grainawi",
        "email": "nasser@codeaurora.org",
        "time": "Tue Sep 30 13:34:52 2014 -0600"
      },
      "committer": {
        "name": "Kevin Degi",
        "email": "kdegi@codeaurora.org",
        "time": "Thu Oct 09 13:41:56 2014 -0600"
      },
      "message": "Always fetch the specific revision given\n\nDon\u0027t assume the revision is in refs/heads/.\n\nChange-Id: I1f71be222ed3ed940d2265aad43d1f2d601fc03a\n"
    },
    {
      "commit": "909d58b2e2e3695ecfa80a54b8700fb889a02677",
      "tree": "92056c473d30ec2e96a254a601b2dd37611dc364",
      "parents": [
        "5cf16607d33268ab0320a886c4a7b5e052684fa4"
      ],
      "author": {
        "name": "Nasser Grainawi",
        "email": "nasser@codeaurora.org",
        "time": "Fri Sep 19 12:13:04 2014 -0600"
      },
      "committer": {
        "name": "Kevin Degi",
        "email": "kdegi@codeaurora.org",
        "time": "Thu Oct 09 13:41:51 2014 -0600"
      },
      "message": "Support specifying non-HEADS refs as upstream\n\nWhile not typical, some users might have an upstream that isn\u0027t in\nthe usual refs/heads/* namespace. There\u0027s no reason not to use\nthose refs as the value for the upstream attribute, so support\ndoing so.\n\nChange-Id: I5b119f1135c3268c20e7c4084682e860d3ee1fb1\n"
    },
    {
      "commit": "5cf16607d33268ab0320a886c4a7b5e052684fa4",
      "tree": "e69e4474efeef2fb9a30cae9426aad0eb4ac958b",
      "parents": [
        "c190b98ed55040c58d880d575c32e9c01044378c"
      ],
      "author": {
        "name": "Jeff Davidson",
        "email": "jpd@google.com",
        "time": "Thu Oct 02 10:13:38 2014 -0700"
      },
      "committer": {
        "name": "Jeff Davidson",
        "email": "jpd@google.com",
        "time": "Thu Oct 02 10:17:44 2014 -0700"
      },
      "message": "Allow selection of a target when using smart sync.\n\nChange-Id: I02a24471b9b62dbba3773f22a289825bc566acd9\n"
    },
    {
      "commit": "c190b98ed55040c58d880d575c32e9c01044378c",
      "tree": "81f1f8fa93c397e322362374427adeb888bb6c3c",
      "parents": [
        "4863307299bee9a644a94957f06bed48d898532e",
        "884a387ecae6ce0aa3739771eecfcc0cd376cf61"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Sep 18 23:09:08 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 18 23:09:08 2014 +0000"
      },
      "message": "Merge \"Add extend-project tag to support adding groups to an existing project\""
    },
    {
      "commit": "4863307299bee9a644a94957f06bed48d898532e",
      "tree": "51f200682b734f230e4ce193c23f20f8aea53101",
      "parents": [
        "f75870beac41d046d0abc4cd1c03621a7a460f5a"
      ],
      "author": {
        "name": "T.R. Fullhart",
        "email": "tfullhart@google.com",
        "time": "Wed Sep 10 13:44:39 2014 -0700"
      },
      "committer": {
        "name": "T.R. Fullhart",
        "email": "tfullhart@google.com",
        "time": "Wed Sep 10 13:45:52 2014 -0700"
      },
      "message": "Add support for rpc:// protocol schemes.\n\nChange-Id: I0e500e45cacc20ac04b43435c4bd189299e9e97b\n"
    },
    {
      "commit": "f75870beac41d046d0abc4cd1c03621a7a460f5a",
      "tree": "3ace59640a0ea3db7f34573b81dfb8d38603d0d3",
      "parents": [
        "bf0b0cbc2f40572bc0a72f187647c6409b92928c"
      ],
      "author": {
        "name": "Mani Chandel",
        "email": "mani.chandel@tcs.com",
        "time": "Wed Sep 03 13:54:48 2014 +0530"
      },
      "committer": {
        "name": "Mani Chandel",
        "email": "mani.chandel@tcs.com",
        "time": "Wed Sep 03 13:56:04 2014 +0530"
      },
      "message": "Change implementation of cleanup in case of clone failure during \"repo init\"\n\nFix includes:\n1. It deletes only .repo/repo instead of the whole .repo repository.\n\nBug: Issue 161\nChange-Id: I1ab8caa7538fec5e6206d1b029f63bd3f60dedcd\n"
    },
    {
      "commit": "bf0b0cbc2f40572bc0a72f187647c6409b92928c",
      "tree": "c31b3bf438d210a353839b80ee05b4f44a5c2aed",
      "parents": [
        "3a10968a702a2b80ba03e18739d28af40d219912",
        "588142dfcb464a0db9ebc7b323ab2338d8f730de"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Aug 26 21:11:39 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 26 21:11:40 2014 +0000"
      },
      "message": "Merge \"Provide detail print-out when not all projects of a branch are current.\""
    },
    {
      "commit": "3a10968a702a2b80ba03e18739d28af40d219912",
      "tree": "884a55106d0783670f7a5611e8c68701dedfc810",
      "parents": [
        "c46de6932ac95eb6086a24c6880553f27cf5be44",
        "7a91d51dcfc9516abc38aeaf5462ac55d454bb43"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Aug 22 16:13:16 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 22 16:13:16 2014 +0000"
      },
      "message": "Merge \"Enable transferring of attribute using command \u0027repo manifest -o -\u0027\""
    },
    {
      "commit": "c46de6932ac95eb6086a24c6880553f27cf5be44",
      "tree": "560f4fd500ecb868b592f314c94f6faabc7d4e0a",
      "parents": [
        "303a82f33a1360036b6f70864d3099f9d803f2c7"
      ],
      "author": {
        "name": "Chirayu Desai",
        "email": "chirayudesai1@gmail.com",
        "time": "Wed Aug 20 09:34:10 2014 +0530"
      },
      "committer": {
        "name": "Chirayu Desai",
        "email": "chirayudesai1@gmail.com",
        "time": "Wed Aug 20 11:47:10 2014 +0530"
      },
      "message": "Decode git version\n\nUsed by \u0027repo --version\u0027\nWith Python 3,\n* Before: b\u0027git version 2.1.0\u0027\n* After: git version 2.1.0\n\nChange-Id: I4321bb0f09e92cda1123c35910338b940e82a305\n"
    },
    {
      "commit": "303a82f33a1360036b6f70864d3099f9d803f2c7",
      "tree": "8a6b2c95ac0b06886cabb3118c885d3b128da491",
      "parents": [
        "a8d539189e1c788663f022cbebd3b5ff28aaeb4b"
      ],
      "author": {
        "name": "Chirayu Desai",
        "email": "chirayudesai1@gmail.com",
        "time": "Tue Aug 19 22:57:17 2014 +0530"
      },
      "committer": {
        "name": "Chirayu Desai",
        "email": "chirayudesai1@gmail.com",
        "time": "Tue Aug 19 23:05:44 2014 +0530"
      },
      "message": "Don\u0027t open non-binary files as binary\n\n* Don\u0027t pen the git config file, and the git \".lock\" file as binary.\n\nChange-Id: I7b3939658456f2fd0a0500443cdd8d1ee1a4459d\n"
    },
    {
      "commit": "7a91d51dcfc9516abc38aeaf5462ac55d454bb43",
      "tree": "484ea52178b2a6185916dafe9a7ddce304bb8783",
      "parents": [
        "a8d539189e1c788663f022cbebd3b5ff28aaeb4b"
      ],
      "author": {
        "name": "Mani Chandel",
        "email": "mani.chandel@tcs.com",
        "time": "Thu Jul 24 16:27:08 2014 +0530"
      },
      "committer": {
        "name": "Mani Chandel",
        "email": "mani.chandel@tcs.com",
        "time": "Thu Jul 24 16:27:08 2014 +0530"
      },
      "message": "Enable transferring of attribute using command \u0027repo manifest -o -\u0027\n\n\u0027upstream\u0027 attribute is now transferred to the new manifest xml\nthat is created when using command \u0027repo manifest -o -\u0027.\n\nManifest help is updated for the attributes \u0027sync-c\u0027,\u0027sync-s\u0027 and\n\u0027sync-j\u0027.\n\nBug: Issue 164\nChange-Id: If63f781e91d25c5b5b5ea0696b0c04337b0a686a\n"
    },
    {
      "commit": "a8d539189e1c788663f022cbebd3b5ff28aaeb4b",
      "tree": "d2be60df39b9026dfb1f8733ccbb7df2b01ff5f3",
      "parents": [
        "a6d258b84d0d2fc0f995e6160ab4ccc7cb4c8396"
      ],
      "author": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Tue Jul 15 11:30:06 2014 -0700"
      },
      "committer": {
        "name": "Dave Borowitz",
        "email": "dborowitz@google.com",
        "time": "Tue Jul 15 11:30:06 2014 -0700"
      },
      "message": "Update the commit-msg hook to the version from Gerrit 2.8.2\n\nChange-Id: Id911bc6841f488a42d08580de800c3afafa2937e\n"
    },
    {
      "commit": "588142dfcb464a0db9ebc7b323ab2338d8f730de",
      "tree": "4a2bace371ca6800e19e293a9681acc15a6369f4",
      "parents": [
        "666d534636d262cbfd971509dd0f0be0cddb2e11"
      ],
      "author": {
        "name": "Etan Cohen",
        "email": "etancohen@google.com",
        "time": "Wed Jul 09 21:33:31 2014 -0700"
      },
      "committer": {
        "name": "Etan Cohen",
        "email": "etancohen@google.com",
        "time": "Fri Jul 11 10:56:03 2014 -0700"
      },
      "message": "Provide detail print-out when not all projects of a branch are current.\n\nWhen current is \"split\" (i.e. some projects are current while others are not):\n- Disable \u0027not in\u0027 printout (i.e. will print out all projects)\n- Disable printing of multiple projects on one line\n- Print current projects in green, non-current in white\n\nSince using color to differentiate current from non-current in \"split\" cases:\n- In non-split cases also print out project names in color (green for current\n  white for non-current)\n\nChange-Id: Ia6b826612c708447cecfe5954dc767f7b2ea2ea7\n"
    },
    {
      "commit": "a6d258b84d0d2fc0f995e6160ab4ccc7cb4c8396",
      "tree": "6a676c73db47d246afbc86d6d9bd5882e6d28fe7",
      "parents": [
        "a7694985683a36377841bb365c3a49551fe88a8d",
        "4e4d40f7c07ffe4f8988ee5c225bc897bfcf2206"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Tue Jul 01 17:12:18 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 30 22:21:58 2014 +0000"
      },
      "message": "Merge \"Fix UrlInsteadOf to handle multiple strings\""
    },
    {
      "commit": "a7694985683a36377841bb365c3a49551fe88a8d",
      "tree": "f64cadc58a0be0c73247f6929279985e0ac645dd",
      "parents": [
        "80b87fe6c1a018dacd0f1b57c6cef9889fd66463"
      ],
      "author": {
        "name": "Takeshi Kanemoto",
        "email": "takeshi.kanemoto@sonymobile.com",
        "time": "Mon Apr 14 17:36:57 2014 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Jun 24 01:02:54 2014 +0000"
      },
      "message": "Add --jobs option to forall subcommand\n\nEnable \u0027--jobs\u0027 (\u0027-j\u0027) option in the forall subcommand. For -jn\nwhere n \u003e 1, the \u0027-p\u0027 option can no longer guarantee the\ncontinuity of console output between the project header and the\noutput from the worker process.\n\nSIG_INT is sent to all worker processes upon keyboard interrupt\n(Ctrl+C).\n\nBug: Issue 105\nChange-Id: If09afa2ed639d481ede64f28b641dc80d0b89a5c\n"
    },
    {
      "commit": "884a387ecae6ce0aa3739771eecfcc0cd376cf61",
      "tree": "e2609db54ba18770932c3053152f7aaeb397b1ec",
      "parents": [
        "e9f75b1782dbf6ce9a8f22256316dbb66cdbab11"
      ],
      "author": {
        "name": "Josh Triplett",
        "email": "josh@joshtriplett.org",
        "time": "Thu Jun 12 14:57:29 2014 -0700"
      },
      "committer": {
        "name": "Josh Triplett",
        "email": "josh@joshtriplett.org",
        "time": "Fri Jun 20 11:35:16 2014 -0700"
      },
      "message": "Add extend-project tag to support adding groups to an existing project\n\nCurrently, if a local manifest wants to add groups to an existing\nproject, it must use remove-project and then re-add the project with\nthe new groups.  This makes the local manifest more fragile, requiring\nupdates to the local manifest if the original manifest changes.\n\nAdd a new extend-project tag, which supports adding groups to an\nexisting project.\n\nChange-Id: Ib4d1352efd722a65dd263d02644b9ea5ab6ed400\n"
    },
    {
      "commit": "80b87fe6c1a018dacd0f1b57c6cef9889fd66463",
      "tree": "25d90f8108f76da27ba0a20b9bef006c38f0f6d4",
      "parents": [
        "e9f75b1782dbf6ce9a8f22256316dbb66cdbab11"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri May 09 17:13:44 2014 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri May 09 18:47:35 2014 -0700"
      },
      "message": "Use fetch --unshallow when appropriate.\n\nIf a user reinits to a different manifest or the manifest updates so\nthat a project no longer has a fixed depth, we need to use --unshallow\nwhen we fetch.\n\nChange-Id: I6d3f15e5464b5eaad9205654bc24354947a78aea\n"
    },
    {
      "commit": "e9f75b1782dbf6ce9a8f22256316dbb66cdbab11",
      "tree": "1f645764ff04aa5f104b9c3eb9d287f09c80dddc",
      "parents": [
        "a35e4021619eac80ebc162b91f42c919a145bd5b",
        "36ea2fb6ee0f42144d44cf9aa7196bfa3b56e9e6"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu May 08 18:38:32 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 08 18:38:33 2014 +0000"
      },
      "message": "Merge \"Enable remotes to define their own revision\""
    },
    {
      "commit": "a35e4021619eac80ebc162b91f42c919a145bd5b",
      "tree": "d660680dc22d219fbd0ad13a82b1ee7518daf607",
      "parents": [
        "dd7aea6c11e63749c6b46876ba5c902fd50a65a3",
        "d58bfe5a58caa670c96b060c4c0d926018588000"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed May 07 18:21:30 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 07 18:21:31 2014 +0000"
      },
      "message": "Merge \"Return a list rather than dict_values in XmlManifest.projects()\""
    },
    {
      "commit": "dd7aea6c11e63749c6b46876ba5c902fd50a65a3",
      "tree": "70aed88036c151f038a01676d803e7c219a951e8",
      "parents": [
        "5196805fa28aa8873f76b2baa7b0fd52ec52d915",
        "d792f7928dc32d69b8075e2c499767796ccca7de"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed May 07 18:20:31 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 07 18:20:32 2014 +0000"
      },
      "message": "Merge \"Define unicode as str if using Python 3\""
    },
    {
      "commit": "5196805fa28aa8873f76b2baa7b0fd52ec52d915",
      "tree": "5f53332a6bc401cd372bc852fdec9a5eea366acb",
      "parents": [
        "85b24acd6a11af3d84cc71fc35ebdb6d3c78065f",
        "70f6890352ef8f12cdc859b5a4eb0c4e8e37152c"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed May 07 18:18:55 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 07 18:18:56 2014 +0000"
      },
      "message": "Merge \"Use exec() rather than execfile()\""
    },
    {
      "commit": "85b24acd6a11af3d84cc71fc35ebdb6d3c78065f",
      "tree": "ec326002ea5e985a4f1f5cd5e9f8f002dcd75236",
      "parents": [
        "2cd1f0452eb746ae727218f5dbda0fd1ae0b2e34"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Tue May 06 15:57:48 2014 +0100"
      },
      "committer": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Wed May 07 10:46:24 2014 +0100"
      },
      "message": "Use JSON instead of pickle\n\nUse JSON as it is shown to be much faster than pickle.\nAlso clean up the loading and saving functions.\n\nChange-Id: I45b3dee7b4d59a1c0e0d38d4a83b543ac5839390\n"
    },
    {
      "commit": "36ea2fb6ee0f42144d44cf9aa7196bfa3b56e9e6",
      "tree": "34fc7410de43113f50cf9bdd36c5f8144316eca0",
      "parents": [
        "666d534636d262cbfd971509dd0f0be0cddb2e11"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Tue May 06 11:54:01 2014 +0100"
      },
      "committer": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Wed May 07 08:29:30 2014 +0000"
      },
      "message": "Enable remotes to define their own revision\n\nSome projects use multiple remotes.\nIn some cases these remotes have different naming conventions.\nAdd an option to define a revision in the remote configuration.\n\nThe `project` revision takes precedence over `remote` and `default`.\nThe `remote` revision takes precedence over `default`.\nThe `default` revision acts as a fall back as it originally did.\n\nChange-Id: I2b376160d45d48b0bab840c02a3eef1a1e32cf6d\n"
    },
    {
      "commit": "2cd1f0452eb746ae727218f5dbda0fd1ae0b2e34",
      "tree": "dd8ee9139452c6eb3c759f199cab78d762545cdf",
      "parents": [
        "65e3a78a9e9336dae396cef09b8b23621f4bdc6e"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Mon May 05 21:24:05 2014 +0100"
      },
      "committer": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Wed May 07 08:44:20 2014 +0100"
      },
      "message": "Use next(iterator) rather than iterator.next()\n\niterator.next() was replaced with iterator.__next__() in Python 3.\nUse next(iterator) instead which will select the correct method for\nreturning the next item.\n\nChange-Id: I6d0c89c8b32e817e5897fe87332933dacf22027b\n"
    },
    {
      "commit": "65e3a78a9e9336dae396cef09b8b23621f4bdc6e",
      "tree": "2d1836404960bd37669b598494d333728f0e6d2a",
      "parents": [
        "7446c5954aa2ca2d0353a5a3e91f6f7e4b9b17e7",
        "6efdde9f6eeca185aafa7393f6e61fd3aefa1cbe"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed May 07 06:30:28 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 07 06:30:30 2014 +0000"
      },
      "message": "Merge \"Prevent warning twice about Python 3 usage\""
    },
    {
      "commit": "d792f7928dc32d69b8075e2c499767796ccca7de",
      "tree": "1cd152dff6aefed74bef54353d2bd6ef09e2fabc",
      "parents": [
        "666d534636d262cbfd971509dd0f0be0cddb2e11"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Mon May 05 22:01:07 2014 +0100"
      },
      "committer": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Tue May 06 20:38:51 2014 +0100"
      },
      "message": "Define unicode as str if using Python 3\n\nThe unicode object was renamed to str in Python 3\n\nChange-Id: I1e4972fb07b313d3462587b3059bb3638d779625\n"
    },
    {
      "commit": "6efdde9f6eeca185aafa7393f6e61fd3aefa1cbe",
      "tree": "3ab98d4a7fdd3e250c60a3d069d8b2bb9132938a",
      "parents": [
        "666d534636d262cbfd971509dd0f0be0cddb2e11"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Mon May 05 20:37:05 2014 +0100"
      },
      "committer": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Tue May 06 12:44:22 2014 +0000"
      },
      "message": "Prevent warning twice about Python 3 usage\n\nOnly warn about using Python 3 when running the repo script directly.\nThis prevents the user being warned twice.\n\nChange-Id: I2ee51ea2fa0127ea310598320e460ec9f38c6488\n"
    },
    {
      "commit": "7446c5954aa2ca2d0353a5a3e91f6f7e4b9b17e7",
      "tree": "640c3f8649dcde8ea09f43495ccbd4ccd10c8a7e",
      "parents": [
        "666d534636d262cbfd971509dd0f0be0cddb2e11"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Tue May 06 09:19:39 2014 +0100"
      },
      "committer": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Tue May 06 12:42:35 2014 +0000"
      },
      "message": "Use sorted() rather than .sort()\n\ndict.keys() produces a dict_keys object in Python 3, which does\nnot support .sort(). Use sorted() which will give the same outcome.\n\nChange-Id: If6b33db07a31995b4e44959209d08d8fb74ae339\n"
    },
    {
      "commit": "d58bfe5a58caa670c96b060c4c0d926018588000",
      "tree": "9473020ab74837219c8fa5896108cb35f58bd0b8",
      "parents": [
        "666d534636d262cbfd971509dd0f0be0cddb2e11"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Mon May 05 23:30:49 2014 +0100"
      },
      "committer": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Tue May 06 09:16:52 2014 +0100"
      },
      "message": "Return a list rather than dict_values in XmlManifest.projects()\n\ndict.values() produce dict_values objects rather than list objects.\nConvert this to a list to maintain functionality with certain functions.\n\nChange-Id: Ie76269e19f8d68479a1d7ae03aa965252d759a9e\n"
    },
    {
      "commit": "70f6890352ef8f12cdc859b5a4eb0c4e8e37152c",
      "tree": "be462ac3016d1e455928d9a64287bb85ddf3821f",
      "parents": [
        "666d534636d262cbfd971509dd0f0be0cddb2e11"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Mon May 05 21:15:34 2014 +0100"
      },
      "committer": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Mon May 05 23:41:07 2014 +0100"
      },
      "message": "Use exec() rather than execfile()\n\nexecfile() is not in Python 3.\n\nChange-Id: I5af222340f13c1e8edaa820e7675d3e4d62a1689\n"
    },
    {
      "commit": "666d534636d262cbfd971509dd0f0be0cddb2e11",
      "tree": "f7341695337a3179d7c77c5fb1272d6e4f83f595",
      "parents": [
        "f2af7564256a65221e0ebc45d716672a42cd537a"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu May 01 13:09:57 2014 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu May 01 13:20:32 2014 -0700"
      },
      "message": "Ensure HEAD is correct when skipping remote fetch\n\nA recent optimization (2fb6466f795eb30c1dfa598501f5b5d2981e6a5f) skips\nperforming a remote fetch if we already know we have the sha1 we want.\nHowever, that optimization skipped initialization steps that ensure HEAD\npoints to the correct sha1.  This change makes sure not to skip those\nsteps.\n\nHere is an example of how to test this change:\n\n\"\"\"\"\"\"\"\"\"\nurl\u003d\u003cmanifest url\u003e\nbranch1\u003d\u003cbranch name\u003e\nbranch2\u003d\u003cbranch name\u003e\nproject\u003d\u003cproject with revision set to different sha1 in each branch\u003e\n\nrepo init -u $url -b $branch1 --mirror\nrepo sync $project\nfirst\u003d$(cd $project.git; git rev-parse HEAD)\n\nrepo init -b $branch2\nrepo sync $project\nsecond\u003d$(cd platform/build.git; git rev-parse HEAD)\n\nif [[ $first \u003d\u003d $second ]]\nthen\n    echo \u0027problem!\u0027\nelse\n    echo \u0027no problem!\u0027\nfi\n\"\"\"\"\"\"\"\"\"\n"
    },
    {
      "commit": "f2af7564256a65221e0ebc45d716672a42cd537a",
      "tree": "c28070ea8606341574ed207648726b2322baa2b1",
      "parents": [
        "544e7b0a9774a6366b6a06d25992c46fd5d4f31f"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Apr 30 11:31:01 2014 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Apr 30 11:34:00 2014 -0700"
      },
      "message": "Add \u0027shallow\u0027 gitfile to symlinks\n\nThis fixes the bug that kept clients from doing things like `git log`\nin projects using the clone-depth feature.\n\nChange-Id: Ib4024a7b82ceaa7eb7b8935b007b3e8225e0aea8\n"
    },
    {
      "commit": "544e7b0a9774a6366b6a06d25992c46fd5d4f31f",
      "tree": "4c242f5667a949ec6d76d19e0d0f810ed06e7874",
      "parents": [
        "e0df232da7c92b0776a3e86a70687e2c9f2bad7b",
        "9bc422f1301a54aaabc6ac279989970c4b6f5137"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Thu Apr 24 21:21:01 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 24 21:21:02 2014 +0000"
      },
      "message": "Merge \"Ignore clone-depth attribute when fetching to a mirror\""
    },
    {
      "commit": "e0df232da7c92b0776a3e86a70687e2c9f2bad7b",
      "tree": "d9bb8f70c88f622a29472c49fb253200fb9ed52f",
      "parents": [
        "5a7c3afa73c99ab07c60bb65f5ec57423cac4282"
      ],
      "author": {
        "name": "Jeff Hamilton",
        "email": "jham@android.com",
        "time": "Mon Apr 21 17:10:59 2014 -0500"
      },
      "committer": {
        "name": "Jeff Hamilton",
        "email": "jham@android.com",
        "time": "Tue Apr 22 14:35:47 2014 -0500"
      },
      "message": "Add linkfile support.\n\nIt\u0027s just like copyfile and runs at the same time as copyfile but\ninstead of copying it creates a symlink instead.  This is needed\nbecause copyfile copies the target of the link as opposed to the\nsymlink itself.\n\nChange-Id: I7bff2aa23f0d80d9d51061045bd9c86a9b741ac5\n"
    },
    {
      "commit": "5a7c3afa73c99ab07c60bb65f5ec57423cac4282",
      "tree": "09e995846e7ff06d382a56c3942e9b3f7d161dac",
      "parents": [
        "e81bc030bba802627fd34af472fc0cf451e17c1d",
        "eb5acc9ae9148b21afa82b63daec7753b284c03c"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Fri Apr 18 00:06:07 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 18 00:06:08 2014 +0000"
      },
      "message": "Merge \"Don\u0027t try to remove .repo if it doesn\u0027t exist\""
    },
    {
      "commit": "9bc422f1301a54aaabc6ac279989970c4b6f5137",
      "tree": "1f7eea668663481daef0e6f3a30aa4d191da2c8e",
      "parents": [
        "e81bc030bba802627fd34af472fc0cf451e17c1d"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Apr 15 10:28:56 2014 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Apr 16 11:00:40 2014 +0900"
      },
      "message": "Ignore clone-depth attribute when fetching to a mirror\n\nIf a manifest includes projects with a clone-depth\u003d1 attribute, and a\nworkspace is initialised from that manifest using the --mirror option,\nany workspaces initialised and synced from the mirror will fail with:\n\n  fatal: attempt to fetch/clone from a shallow repository\n\non the projects that had the clone-depth.\n\nIgnore the clone-depth attribute when fetching from the remote to a\nmirror workspace. Thus the mirror will be synched with a complete\nclone of all the repositories.\n\nChange-Id: I638b77e4894f5eda137d31fa6358eec53cf4654a\n"
    },
    {
      "commit": "e81bc030bba802627fd34af472fc0cf451e17c1d",
      "tree": "2d899160e958b00b330e7a50927f1a6cd16eb526",
      "parents": [
        "26c45a79586da17fe2e26a427acb56c81fb3bcc5"
      ],
      "author": {
        "name": "Mitchel Humpherys",
        "email": "mitchelh@codeaurora.org",
        "time": "Mon Mar 31 11:36:56 2014 -0700"
      },
      "committer": {
        "name": "Mitchel Humpherys",
        "email": "mitchelh@codeaurora.org",
        "time": "Mon Mar 31 13:08:26 2014 -0700"
      },
      "message": "Add total count and iteration count to forall environment\n\nFor long-running forall commands sometimes it\u0027s useful to know which\niteration is currently running. Add REPO_I and REPO_COUNT environment\nvariables to reflect the current iteration count as well as the total\nnumber of iterations so that the user can build simple status\nindicators.\n\nExample:\n\n    $ repo forall -c \u0027echo $REPO_I / $REPO_COUNT; git gc\u0027\n    1 / 579\n    Counting objects: 41, done.\n    Delta compression using up to 8 threads.\n    Compressing objects: 100% (19/19), done.\n    Writing objects: 100% (41/41), done.\n    Total 41 (delta 21), reused 41 (delta 21)\n    2 / 579\n    Counting objects: 53410, done.\n    Delta compression using up to 8 threads.\n    Compressing objects: 100% (10423/10423), done.\n    Writing objects: 100% (53410/53410), done.\n    Total 53410 (delta 42513), reused 53410 (delta 42513)\n    3 / 579\n    ...\n\nChange-Id: I9f28b0d8b7debe423eed3b4bc1198b23e40c0c50\nSigned-off-by: Mitchel Humpherys \u003cmitchelh@codeaurora.org\u003e\n"
    },
    {
      "commit": "eb5acc9ae9148b21afa82b63daec7753b284c03c",
      "tree": "74c1931b7930a45ae92f0f4791af29778d0d0af6",
      "parents": [
        "53e902a19b0b80e07ac55966d13c5c84c5b0e8ce"
      ],
      "author": {
        "name": "Mitchel Humpherys",
        "email": "mitchelh@codeaurora.org",
        "time": "Wed Mar 12 10:48:15 2014 -0700"
      },
      "committer": {
        "name": "Mitchel Humpherys",
        "email": "mitchelh@codeaurora.org",
        "time": "Wed Mar 12 15:11:27 2014 -0700"
      },
      "message": "Don\u0027t try to remove .repo if it doesn\u0027t exist\n\nPart of the cleanup path for _Init is removing the .repo\ndirectory. However, _Init can fail before creating the .repo directory,\nso trying to remove it raises another exception:\n\n    fatal: invalid branch name \u0027refs/changes/53/55053/4\u0027\n    Traceback (most recent call last):\n      File \"/home/mitchelh/bin/repo\", line 775, in \u003cmodule\u003e\n        main(sys.argv[1:])\n      File \"/home/mitchelh/bin/repo\", line 749, in main\n        os.rmdir(repodir)\n    OSError: [Errno 2] No such file or directory: \u0027.repo\u0027\n\nFix this by only removing .repo if it actually exists.\n\nChange-Id: Ia251d29e9c73e013eb296501d11c36263457e235\n"
    },
    {
      "commit": "26c45a79586da17fe2e26a427acb56c81fb3bcc5",
      "tree": "8829c11deca6e259c39cab47251b3978ad6ea310",
      "parents": [
        "68425f4da878b5c7c77cc490539eeb83eb46256e"
      ],
      "author": {
        "name": "Mitchel Humpherys",
        "email": "mitchelh@codeaurora.org",
        "time": "Mon Mar 10 14:21:59 2014 -0700"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Wed Mar 12 16:34:53 2014 +0900"
      },
      "message": "Make --no-tags work with -c\n\nCurrently, the --no-tags option is ignored if the user asks to only\nfetch the current branch. There is no reason for this restriction. Fix\nit.\n\nChange-Id: Ibaaeae85ebe9955ed49325940461d630d794b990\nSigned-off-by: Mitchel Humpherys \u003cmitchelh@codeaurora.org\u003e\n"
    },
    {
      "commit": "68425f4da878b5c7c77cc490539eeb83eb46256e",
      "tree": "1e0de684c28e446e7407a35fe2d4b9e4ad569139",
      "parents": [
        "53e902a19b0b80e07ac55966d13c5c84c5b0e8ce"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Mar 11 14:55:52 2014 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Mar 11 14:55:52 2014 +0900"
      },
      "message": "Fix indentation in project.py\n\nChange-Id: I81c630536eaa54d5a25b9cb339a96c28619815ea\n"
    },
    {
      "commit": "53e902a19b0b80e07ac55966d13c5c84c5b0e8ce",
      "tree": "e804b3826be8d5bb6153f2f9f4e482191e8b8642",
      "parents": [
        "093fdb6587bba081c4d34eb9ea500149b1090280"
      ],
      "author": {
        "name": "Dan Sandler",
        "email": "dsandler@android.com",
        "time": "Sun Mar 09 13:20:02 2014 -0400"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Mar 11 05:33:43 2014 +0000"
      },
      "message": "More verbose errors for NoManifestExceptions.\n\nThe old \"manifest required for this command -- please run\ninit\" is replaced by a more helpful message that lists the\ncommand repo was trying to execute (with arguments) as well\nas the str() of the NoManifestException. For example:\n\n\u003e error: in `sync`: [Errno 2] No such file or directory:\n\u003e \t\u0027path/to/.repo/manifests/.git/HEAD\u0027\n\u003e error: manifest missing or unreadable -- please run init\n\nOther failure points in basic command parsing and dispatch\nare more clearly explained in the same fashion.\n\nChange-Id: I6212e5c648bc5d57e27145d55a5391ca565e4149\n"
    },
    {
      "commit": "4e4d40f7c07ffe4f8988ee5c225bc897bfcf2206",
      "tree": "14eb2da6ae555d0eea05e5d9797f16730f537661",
      "parents": [
        "093fdb6587bba081c4d34eb9ea500149b1090280"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@nvidia.com",
        "time": "Mon Oct 28 22:28:42 2013 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@nvidia.com",
        "time": "Thu Mar 06 21:04:18 2014 -0800"
      },
      "message": "Fix UrlInsteadOf to handle multiple strings\n\nFor complex .gitconfig url rewrites, multiple insteadOf lines may be\nused for a url. Search all of them for the right rewrite.\n\nChange-Id: If5e9ecd054e86226924b0baf513801cd57c389cd\n"
    },
    {
      "commit": "093fdb6587bba081c4d34eb9ea500149b1090280",
      "tree": "a8edab76db87f3ff70536e01b11bc5c034a0729e",
      "parents": [
        "2fb6466f795eb30c1dfa598501f5b5d2981e6a5f"
      ],
      "author": {
        "name": "bijia",
        "email": "bijia@xiaomi.com",
        "time": "Thu Nov 28 09:19:22 2013 +0800"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Mar 04 00:51:30 2014 +0000"
      },
      "message": "Add reviewers automatically from project\u0027s git config\n\nThe `review.URL.autocopy` setting sends email notification to the\nnamed reviewers, but does not add them as reviewer on the uploaded\nchange.\n\nAdd a new setting `review.URL.autoreviewer`.  The named reviewers\nwill be added as reviewer on the uploaded change.\n\nChange-Id: I3fddfb49edf346f8724fe15b84be8c39d43e7e65\nSigned-off-by: bijia \u003cbijia@xiaomi.com\u003e"
    },
    {
      "commit": "2fb6466f795eb30c1dfa598501f5b5d2981e6a5f",
      "tree": "09664b3abb134e5cce4af110174e6498523540d8",
      "parents": [
        "724aafb52d546b23658e517278e4d93ec351dbaf"
      ],
      "author": {
        "name": "Chris AtLee",
        "email": "chris.atlee@gmail.com",
        "time": "Thu Jan 16 21:32:33 2014 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon Mar 03 10:17:03 2014 +0000"
      },
      "message": "Don\u0027t fetch from remotes if commit id exists locally\n\nIn existing workspaces where the manifest specifies a commit id in the\nmanifest, we can avoid doing a fetch from the remote if we have the\ncommit locally. This substantially improves sync times for fully\nspecified manifests.\n\nChange-Id: Ide216f28a545e00e0b493ce90ed0019513c61613\n"
    },
    {
      "commit": "724aafb52d546b23658e517278e4d93ec351dbaf",
      "tree": "9f1e19526e4df072490516046e4c9f2f9072b033",
      "parents": [
        "ccd218cd8f6eeb4dab94b22cec6812d7abb7c814",
        "89ece429fbb3047eabe9e8eb3df3076d74926eb3"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Feb 28 21:16:32 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 28 21:16:32 2014 +0000"
      },
      "message": "Merge \"Clean up duplicate logic in subcmds/sync.py.\""
    },
    {
      "commit": "ccd218cd8f6eeb4dab94b22cec6812d7abb7c814",
      "tree": "5897d64dbc22eb4c39c7a9f4cfaeb4a36200f33d",
      "parents": [
        "dd6542268a59834ecff573de974d788f11af775d"
      ],
      "author": {
        "name": "Kwanhong Lee",
        "email": "kwanhong.lee@windriver.com",
        "time": "Mon Feb 17 13:07:32 2014 +0900"
      },
      "committer": {
        "name": "Kwanhong Lee",
        "email": "kwanhong.lee@windriver.com",
        "time": "Thu Feb 20 11:07:23 2014 +0900"
      },
      "message": "Fix to mirror manifest when --mirror is given\n\nCommit 8d201 \"repo: Support multiple branches for the same project.\"\n(Change id is I5e2f4e1a7abb56f9d3f310fa6fd0c17019330ecd) caused missing\nmirroring manifest repository when \u0027repo sync\u0027 after \u0027repo init --mirror\u0027.\n\nWhen the function _AddMetaProjectMirror() is called to add two of\nmeta projects - git-repo itself and manifest repository to mirror,\nit didn\u0027t add them into self._paths which has list of projects to be\nsync\u0027ed by \u0027repo sync\u0027.\n\nIn addition, because member var of Project \u0027relpath\u0027 is used as a key\nof self._paths, it should be set with proper value other than None.\nSince this is only for meta projects which are not described in manifest\nxml, \u0027relpath\u0027 is name of the projects.\n\nChange-Id: Icc3b9e6739a78114ec70bf54fe645f79df972686\nSigned-off-by: Kwanhong Lee \u003ckwanhong.lee@windriver.com\u003e\n"
    },
    {
      "commit": "dd6542268a59834ecff573de974d788f11af775d",
      "tree": "e014028b17f04c230bb8de690d701c2b10a1d93e",
      "parents": [
        "baca5f7e88e07c86f402ae7423bb3171a33688e3"
      ],
      "author": {
        "name": "Julien Campergue",
        "email": "julien.campergue@parrot.com",
        "time": "Thu Jan 09 16:21:37 2014 +0100"
      },
      "committer": {
        "name": "Julien Campergue",
        "email": "julien.campergue@parrot.com",
        "time": "Mon Feb 17 11:20:11 2014 +0000"
      },
      "message": "Add the \"diffmanifests\" command\n\nThis command allows a deeper diff between two manifest projects.\nIn addition to changed projects, it displays the logs of the\ncommits between both revisions for each project.\n\nChange-Id: I86d30602cfbc654f8c84db2be5d8a30cb90f1398\nSigned-off-by: Julien Campergue \u003cjulien.campergue@parrot.com\u003e\n"
    }
  ],
  "next": "baca5f7e88e07c86f402ae7423bb3171a33688e3"
}
