)]}'
{
  "log": [
    {
      "commit": "503d66d8af1f13660b0982746e44060652a92b65",
      "tree": "ec85025f1a6003b2aef177dce6d96751820243b3",
      "parents": [
        "97836cf09f20e229524aff167c205d89edda3d52",
        "679bac4bf3622412c29e8bca506bc670224d2e31"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Jul 15 19:29:13 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 15 19:29:14 2015 +0000"
      },
      "message": "Merge \"project.RemoteFetch: Handle depth cases more robustly\""
    },
    {
      "commit": "679bac4bf3622412c29e8bca506bc670224d2e31",
      "tree": "08e61b881facf5795d24b173bf8a2adf69d5db55",
      "parents": [
        "185307d1dd1e63a8cf139c55f26895a6b378d43b"
      ],
      "author": {
        "name": "Kevin Degi",
        "email": "kdegi@codeaurora.org",
        "time": "Mon Jun 22 15:31:26 2015 -0600"
      },
      "committer": {
        "name": "Kevin Degi",
        "email": "kdegi@codeaurora.org",
        "time": "Wed Jul 15 15:53:14 2015 +0000"
      },
      "message": "project.RemoteFetch: Handle depth cases more robustly\n\nThe fetch logic for the case where depth is set and revision is a\nSHA1 has several failure modes that are not handled well by the\ncurrent logic.\n\n1) \u0027git fetch \u003cSHA1\u003e\u0027 requires git version \u003e\u003d 1.8.3\n2) \u0027git fetch \u003cSHA1\u003e\u0027 can be prevented by a configuration option on the server.\n3) \u0027git fetch --depth\u003d\u003cN\u003e \u003crefspec\u003e\u0027 can fail to contain a SHA1 specified by\n   the manifest.\n\nEach of these cases cause infinite recursion when _RemoteFetch() tries to call\nitself with current_branch_only\u003dFalse because current_branch_only is set to\nTrue when depth !\u003d None.\n\nTo try to prevent the infinite recursion, we set self.clone_depth to None\nbefore the first retry of _RemoteFetch(). This will allow the Fetch to\neventually succeed in the case where clone-depth is specified in the manifest.\nA user specified depth from the init command will still recurse infinitely.\n\nIn addition, never try to fetch a SHA1 directly if the git version being used\nis not at least 1.8.3.\n\nChange-Id: I802fc17878c0929cfd63fff611633c1d3b54ecd3\n"
    },
    {
      "commit": "97836cf09f20e229524aff167c205d89edda3d52",
      "tree": "28265ea07277872db38ebcdf5bbc248c12ac9018",
      "parents": [
        "80e3a37ab546984bd8494a12204ea10d734e6958",
        "551dfecea9667c8ae68e51a327f1ad9712573e27"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon Jul 13 16:36:27 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 13 16:36:28 2015 +0000"
      },
      "message": "Merge \"Always output upstream if specified\""
    },
    {
      "commit": "80e3a37ab546984bd8494a12204ea10d734e6958",
      "tree": "1a5914b71f582f8cfa931df5018aec315e62add8",
      "parents": [
        "bb4a1b5274240235812fe4d533a946b16d6e387e",
        "6944cdb8d1b4765b4e9e6b3f3a09b65495da7ff3"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Sat Jul 11 14:01:15 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jul 11 14:01:16 2015 +0000"
      },
      "message": "Merge changes Iaefcbe14,I697a0f64,I19bfe9fe,I06e942c4\n\n* changes:\n  forall: use smart sync override manifest if it exists\n  sync: Remove smart sync override manifest when not in smart sync mode\n  forall: Don\u0027t try to get lrev of projects in mirror workspace\n  sync: Improve error message when writing smart sync manifest fails\n"
    },
    {
      "commit": "bb4a1b5274240235812fe4d533a946b16d6e387e",
      "tree": "cef11406872fd7e341c712e4f61641bc5a1842dd",
      "parents": [
        "c5ceeb16258d5d787845840036c57f9fdfdcad34",
        "87ea5913f2bd10351ae422985154e740e601669e"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Jul 10 22:00:47 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 10 22:00:47 2015 +0000"
      },
      "message": "Merge \"Improve error message when syncing a project with invalid groups.\""
    },
    {
      "commit": "551dfecea9667c8ae68e51a327f1ad9712573e27",
      "tree": "aefc1d4d14ee6078363bfda3acb4e182f7499ebd",
      "parents": [
        "c5ceeb16258d5d787845840036c57f9fdfdcad34"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Jul 10 14:54:54 2015 -0700"
      },
      "committer": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Jul 10 14:59:10 2015 -0700"
      },
      "message": "Always output upstream if specified\n\nPreviously, in running the `manifest` command, we wouldn\u0027t output the\nupstream if the default upstream would include the pinned sha1.\nHowever, now that fetching refs/heads/* doesn\u0027t guarantee that we will\nhave the sha1, we need to always output the specified upstream branch.\n\nChange-Id: Ib8b409a8ecd439397b38ee9649c530407797f841\n"
    },
    {
      "commit": "6944cdb8d1b4765b4e9e6b3f3a09b65495da7ff3",
      "tree": "e911b1fb2196cf9c3bbe3ad9658d613db9dd6452",
      "parents": [
        "59b417493e0b0a18ba11f9d214308e82872c38e6"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu May 07 14:39:44 2015 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon Jul 06 16:18:06 2015 +0900"
      },
      "message": "forall: use smart sync override manifest if it exists\n\nIf a workspace is synced with the -s or -t option, the included projects\nmay be different to those in the original manifest. However, when using\nthe forall command, the list of the projects from the original manifest\nis used.\n\nIf the smart sync manifest file exists, use it to override the original\nmanifest.\n\nChange-Id: Iaefcbe148d2158ac046f158d98bbd8b5a5378ce7\n"
    },
    {
      "commit": "59b417493e0b0a18ba11f9d214308e82872c38e6",
      "tree": "fce1b823a59a6870dcd813aa6a167a30c6b5bcbb",
      "parents": [
        "30d13eea862bdc9df1b0bcd32318f24250dd96ea"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu May 07 14:36:09 2015 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon Jul 06 16:18:06 2015 +0900"
      },
      "message": "sync: Remove smart sync override manifest when not in smart sync mode\n\nWhen syncing with the -s or -t option, a smart_sync_override.xml file\nis created. This file is left in the file system when syncing again\nwithout the -s or -t option.\n\nRemove the smart sync override manifest, if it exists, when not using\nthe -s or -t option.\n\nChange-Id: I697a0f6405205ba5f84a4d470becf7cd23c07b4b\n"
    },
    {
      "commit": "30d13eea862bdc9df1b0bcd32318f24250dd96ea",
      "tree": "0013a0160ef6a57eb474cf746d0f8466133ddf40",
      "parents": [
        "727cc3e32424886b90df2094063549189cbbb390"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu May 07 15:01:15 2015 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon Jul 06 16:18:06 2015 +0900"
      },
      "message": "forall: Don\u0027t try to get lrev of projects in mirror workspace\n\ngit rev-parse fails for projects that don\u0027t have an explicit revision\nspecified, and don\u0027t have a branch of the same name as the default\nrevision. This can be the case in a workspace synced with the smart\nsync (-s) or smart tag (-t) option.\n\nChange-Id: I19bfe9fe7396170379415d85f10f6440dc6ea08f\n"
    },
    {
      "commit": "727cc3e32424886b90df2094063549189cbbb390",
      "tree": "59247c708be1db7c94f8a5ba6196d9a823d96cf8",
      "parents": [
        "c5ceeb16258d5d787845840036c57f9fdfdcad34"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu May 07 14:16:49 2015 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon Jul 06 16:18:06 2015 +0900"
      },
      "message": "sync: Improve error message when writing smart sync manifest fails\n\nThe error message only states that writing the manifest failed.\n\nInclude the exception message, so it\u0027s easier to track down the reason\nthat the write failed.\n\nChange-Id: I06e942c48a19521ba45292199519dd0a8bdb1de7\n"
    },
    {
      "commit": "c5ceeb16258d5d787845840036c57f9fdfdcad34",
      "tree": "613698381def3d70986cef771ba6226003845a75",
      "parents": [
        "185307d1dd1e63a8cf139c55f26895a6b378d43b",
        "db75704bfc12546bfbce96aea0be5c283df18314"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Jun 25 14:53:46 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 25 14:53:46 2015 +0000"
      },
      "message": "Merge \"Fix \u0027repo cherry-pick\u0027 to avoid hanging on commit-msg update.\""
    },
    {
      "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": "87ea5913f2bd10351ae422985154e740e601669e",
      "tree": "6ab009f70ea9339176b4fdabf88e8ad85cb0979b",
      "parents": [
        "185307d1dd1e63a8cf139c55f26895a6b378d43b"
      ],
      "author": {
        "name": "Jarkko Pöyry",
        "email": "jpoyry@google.com",
        "time": "Fri Jun 19 15:39:25 2015 -0700"
      },
      "committer": {
        "name": "Jarkko Pöyry",
        "email": "jpoyry@google.com",
        "time": "Fri Jun 19 15:55:15 2015 -0700"
      },
      "message": "Improve error message when syncing a project with invalid groups.\n\nChange-Id: Iaf5c2a0f00667dc09bcf455cfe2f39bfbaa2bfc0\n"
    },
    {
      "commit": "185307d1dd1e63a8cf139c55f26895a6b378d43b",
      "tree": "2945070b5db6ae3379e7e7ce5c7625ea8e7e1606",
      "parents": [
        "c116f94261cf0e6d33b3910b68d08d3b0e4bccdd",
        "4c426ef1d4c1399feb170447ca3090810ab3c02e"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Jun 09 00:14:13 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 09 00:14:13 2015 +0000"
      },
      "message": "Merge \"Teach _LinkFile._Link to handle globs.\""
    },
    {
      "commit": "c116f94261cf0e6d33b3910b68d08d3b0e4bccdd",
      "tree": "ceef154d627d37f33eed5e945c58133263a95ebd",
      "parents": [
        "7993f3cdda0c66d97aae5c4570921130023e6048"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Wed Jun 03 17:29:29 2015 +0100"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Jun 04 00:34:19 2015 +0000"
      },
      "message": "forall: setenv, only encode val if encode exists\n\nChange-Id: I655e3043d0118c4e929897d3a51e5e013e5758dc\n"
    },
    {
      "commit": "7993f3cdda0c66d97aae5c4570921130023e6048",
      "tree": "80bf292fbb28bb219c684087a8a5512731748aeb",
      "parents": [
        "b1d1fd778d5d3d3217023df8b428c5b7fa22a337"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Wed Jun 03 17:21:56 2015 +0100"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Jun 04 00:33:33 2015 +0000"
      },
      "message": "init: don\u0027t call urllib.parse\n\nit\u0027s actually urllib.parse.urlparse\n\nChange-Id: Ie3532e54625e887c8682d92b932ea21a629e8d60\n"
    },
    {
      "commit": "b1d1fd778d5d3d3217023df8b428c5b7fa22a337",
      "tree": "a26fa0c97b6e1f11cc09b2bc0c79a33cf392e4f4",
      "parents": [
        "be4456cf249f29371eef41bed4e15f6d3c1a2cc0"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Wed Jun 03 17:02:26 2015 +0100"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Jun 04 00:22:23 2015 +0000"
      },
      "message": "git_config: fix _SaveJson typo\n\nChange-Id: I35ca2b3733e6d1508669f9a6690c6645c582912e\n"
    },
    {
      "commit": "be4456cf249f29371eef41bed4e15f6d3c1a2cc0",
      "tree": "e3dfa419b63de611a4f24a7056943f8470233f1f",
      "parents": [
        "cf738ed4a1acacc1dac5746ab3090f56c6f5df86"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Wed Jun 03 16:59:18 2015 +0100"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Thu Jun 04 00:21:16 2015 +0000"
      },
      "message": "error: fix typos\n\nChange-Id: I09c47024ef54c360ea3c15c5d4f169e13444e412\n"
    },
    {
      "commit": "cf738ed4a1acacc1dac5746ab3090f56c6f5df86",
      "tree": "32d7f056e01af700324e05d776fe172038eb055e",
      "parents": [
        "6cfc68e1e635162926d27f3421f1dbc729c55116"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Wed Jun 03 16:50:39 2015 +0100"
      },
      "committer": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Wed Jun 03 16:50:39 2015 +0100"
      },
      "message": "git_command: only decode when needed\n\nstrings no longer need decoding, since unicode is str\n\nChange-Id: I9516d298fee7ddc058452394b7759327fe3aa7a8\n"
    },
    {
      "commit": "6cfc68e1e635162926d27f3421f1dbc729c55116",
      "tree": "be03513ffb7232002969971c5355dda81fe32ee5",
      "parents": [
        "472ce9f5fa61a953b9275cfe36b8b86f3dad5c73"
      ],
      "author": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Wed Jun 03 16:39:32 2015 +0100"
      },
      "committer": {
        "name": "Anthony King",
        "email": "anthonydking@slimroms.net",
        "time": "Wed Jun 03 16:39:32 2015 +0100"
      },
      "message": "decode the buffer before appending\n\noutput from a process is in bytes in python3. we need\nto decode it.\n\nin Python3, bytes don\u0027t have an encode attribute. use this\nto identify it.\n\nChange-Id: I152f2ec34614131027db680ead98b53f9b321ed5\n"
    },
    {
      "commit": "4c426ef1d4c1399feb170447ca3090810ab3c02e",
      "tree": "d824eb1ac7f677979c1fce3ac984db48f210bca3",
      "parents": [
        "472ce9f5fa61a953b9275cfe36b8b86f3dad5c73"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@saville.com",
        "time": "Wed Jun 03 08:05:17 2015 -0700"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@saville.com",
        "time": "Wed Jun 03 08:05:17 2015 -0700"
      },
      "message": "Teach _LinkFile._Link to handle globs.\n\nThis allows a project to use globs in the linkfile src attribute. When\na glob is used in the src the dest field must be a directory. Then\n_LinkFile._Link(self) calls will create symbolic links in the dest\ndirectory to all of the entries in the src as defined by the glob\nspecification.\n\nBelow all of the entries in master-configs/ will have symbolic links\nin \u003croot dir\u003e/configs directory:\n\n  \u003cproject name\u003d\"helloworld.git\" path\u003d\"apps/helloworld\"\u003e\n      \u003clinkfile src\u003d\"master-configs/*\" dest\u003d\"configs\"/\u003e\n  \u003c/project\u003e\n\nChange-Id: Idfed8fa47c83d2ca6e2b8e867731b8e2f9e2eb47\n"
    },
    {
      "commit": "472ce9f5fa61a953b9275cfe36b8b86f3dad5c73",
      "tree": "bce9a6d31b48a6cde2bf0f09b34e7fd3923500d7",
      "parents": [
        "0184dcc510969d6e7cb2525da8e7e2a87ed5f012",
        "c4b301f988ad7499257538070f78f5e50e61b3ae"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Tue Jun 02 00:14:43 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 02 00:14:43 2015 +0000"
      },
      "message": "Merge changes I32da12c2,Ie4a65b3e\n\n* changes:\n  Skip sleep and retry if git remote update exits with a signal\n  Catch exceptions in project list generator\n"
    },
    {
      "commit": "0184dcc510969d6e7cb2525da8e7e2a87ed5f012",
      "tree": "26bfadcbc767c526e1f275cc7f52ac9d1490bf16",
      "parents": [
        "35de228f331101ba17bbc658c3cd910e54725517"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue May 05 00:24:54 2015 -0700"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "david.pursehouse@sonymobile.com",
        "time": "Mon Jun 01 01:24:38 2015 +0000"
      },
      "message": "Make linkfile symlinks relative\n\nThe source (target) of the symlink is specified relative to a project\nwithin a tree, and the destination is specified relative to the top\nof the tree, so it should always be possible to create a relative symlink\nto the target file.  Relative symlinks will allow moving an entire tree\nwithout breaking the symlink, and copying a tree (with -p) without leaving\na symlink to the old tree.\n\nChange-Id: I16492a8b59a137d2abe43ca78e3b212e2c835599\n"
    },
    {
      "commit": "c4b301f988ad7499257538070f78f5e50e61b3ae",
      "tree": "f19c83f4c06684361ffb2fec3028b34f89211a29",
      "parents": [
        "31a7be561ef34c134447d92a3d391b17ecd7c790"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed May 13 00:10:02 2015 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed May 13 18:11:34 2015 +0000"
      },
      "message": "Skip sleep and retry if git remote update exits with a signal\n\nPressing ctrl-c during repo sync often hangs for 30 to 45 seconds\ndue to the time.sleep and retry in _RemoteFetch.  If git exits with\na signal, for example -2 for SIGINT triggered by ctrl-c, skip the\nsleep and retry.\n\nChange-Id: I32da12c2dcc96d9cc0b12a066e824b12ebfb52a0\n"
    },
    {
      "commit": "31a7be561ef34c134447d92a3d391b17ecd7c790",
      "tree": "afaefd046551596817595c4dbd10534461cc0d7d",
      "parents": [
        "35de228f331101ba17bbc658c3cd910e54725517"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed May 13 00:04:36 2015 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed May 13 11:09:38 2015 -0700"
      },
      "message": "Catch exceptions in project list generator\n\nIf the generator that produces per-project worker arguments raises an\nexception it triggers python bug http://bugs.python.org/issue8296.\nRewrite the generator expression as a generator function, and catch\nExceptions and KeyboardInterrupts to end the iteration.\n\nAlso add a pool worker initializer to disable SIGINT to prevent\nKeyboardInterrupts inside multiprocessing.Pool in the worker threads\ncausing the same problem.\n\nFixes easy-to-reproduce hangs when hitting ctrl-c during\nrepo forall -c echo\n\nChange-Id: Ie4a65b3e1e07a64ed6bb6ff20f3912c4326718ca\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"
    }
  ],
  "next": "2cd1f0452eb746ae727218f5dbda0fd1ae0b2e34"
}
