)]}'
{
  "log": [
    {
      "commit": "a99f19f40e531418b7997518eced8309acb68eca",
      "tree": "9f9344896e9bc2376519cacaa3151666c1a9bc6e",
      "parents": [
        "1f20776dbb3b87ba39928dc4baba58f9c2d17c80"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Jan 04 12:41:32 2024 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Jan 04 17:47:22 2024 +0000"
      },
      "message": "docs: add deprecated branch banner\n\nThe master branch is dead.  Add banners to all the docs in case people\ntry referring to these and don\u0027t realize they\u0027re on the wrong branch.\n\nChange-Id: I3488d0d96df25fafd7285848fe9f519b4205519c\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/400918\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Josip Sokcevic \u003csokcevic@google.com\u003e\n"
    },
    {
      "commit": "1f20776dbb3b87ba39928dc4baba58f9c2d17c80",
      "tree": "5a5e1711ae9b00d0fc935a3e6b6bfa12c3b11d4f",
      "parents": [
        "16c1328fecdbd950bb4f2c24f9c49a8ed0992c50"
      ],
      "author": {
        "name": "Miguel Gaio",
        "email": "miguel.gaio@renault.com",
        "time": "Fri Jul 17 14:09:13 2020 +0200"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Nov 12 09:00:08 2020 +0000"
      },
      "message": "manifest_xml: correct project revisionId for extend-project\n\nUsing sha1 manifest, project\u0027s revisionId is initialized\nfirst by the manifest.\nAn update of a projet revision by extend-project node does\nnot apply to the revisionId which is therefore kept to the\ninitial value.\n\nResets revisionId value when revision is updated by an\nextend-project node.\n\nChange-Id: I873af283890cebaeaabde966f04b125642af929f\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/275715\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: Miguel Gaio \u003cmiguel.gaio@renault.com\u003e\n"
    },
    {
      "commit": "16c1328fecdbd950bb4f2c24f9c49a8ed0992c50",
      "tree": "0363dfa17bb9fd58a8afb4086c4b20b1928e7df7",
      "parents": [
        "6248e0fd1dcc5e0f76cb38056aa68af55fee5f3f"
      ],
      "author": {
        "name": "Remy Bohmer",
        "email": "github@bohmer.net",
        "time": "Thu Sep 10 10:38:04 2020 +0200"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Nov 03 22:08:08 2020 +0000"
      },
      "message": "Move RepoHook class from project.py file to dedicated file\n\nThe project.py file is huge and contains multiple\nclasses. By moving it to seperate class files the code\nbecomes more readable and maintainable.\n\nSigned-off-by: Remy Bohmer \u003cgithub@bohmer.net\u003e\nChange-Id: Ida9d99d31751d627ae1ea0373418080696d2e14b\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/281293\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: Remy Bohmer \u003clinux@bohmer.net\u003e\n"
    },
    {
      "commit": "6248e0fd1dcc5e0f76cb38056aa68af55fee5f3f",
      "tree": "fe84aa0b4f27c9ae05e66a9e3e2eb980d6afdf62",
      "parents": [
        "50a81de2bc9f2074d56c368f651cf9f50c8d8a87"
      ],
      "author": {
        "name": "Jonathan Nieder",
        "email": "jrn@google.com",
        "time": "Wed Oct 28 11:27:41 2020 -0700"
      },
      "committer": {
        "name": "Jonathan Nieder",
        "email": "jrn@google.com",
        "time": "Tue Nov 03 20:27:19 2020 +0000"
      },
      "message": "launcher: simplify .repo search ceiling check\n\nIn the .repo discovery loop\n\n  while curdir !\u003d \u0027/\u0027 and curdir !\u003d olddir:\n    ... break if we found .repo ...\n    olddir \u003d curdir\n    curdir \u003d os.path.dirname(curdir)\n\nthe \"while\" condition is meant to avoid searching forever if we do not\nfind .repo before reaching the top-level directory of the filesystem.\nFor that purpose, the first half of the condition is redundant; once\nwe reach \"/\", the parent directory will be \"/\" again and the curdir !\u003d\nolddir check would suffice to terminate the search.  Simplify by\nremoving the redundant first half of the check.\n\nNoticed by code inspection.  The first half of the check was retained\nwhen introducing the second half in df14a70c (\"Make path references OS\nindependent\", 2011-01-09), in an excess of caution.\n\nThis also improves consistency a little: if I start with curdir \u003d\n\u0027/home/me\u0027, then with the redundant check in place we search\n\n\t/home/me\n\t/home\n\nbefore hitting / and giving up.  On Windows, if I start with\n\u0027c:/users/me\u0027, then we search\n\n\tc:/users/me\n\tc:/users\n\tc:/\n\nbefore hitting a repetition and giving up.  Fortunately it is not\ncommon for people to set up repo clients at the top level of\nfilesystems, but consistently following the latter behavior should\nmake debugging a little easier in case it comes up.\n\nLink: https://gerrit-review.googlesource.com/id/Ib9e830e3b9adfb1c4e56f3bcfba4746c401fb84f\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/286002\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: Jonathan Nieder \u003cjrn@google.com\u003e\n"
    },
    {
      "commit": "50a81de2bc9f2074d56c368f651cf9f50c8d8a87",
      "tree": "b72dbba8f5915686c8c10f6de501949003685164",
      "parents": [
        "0501b29e7ae072e0b10ea9ddd913ec6d5975f690"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sun Sep 06 15:51:21 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Sep 09 05:46:07 2020 +0000"
      },
      "message": "init: use the remote default manifest branch\n\nInstead of hardcoding \"master\" as our default, use the remote server\u0027s\ndefault branch instead.  For most people, this should be the same as\n\"master\" already.  For projects moving to \"main\", it means we\u0027ll use\nthe new name automatically rather than forcing people to use -b main.\n\nFor repositories that never set up a default HEAD, we should still use\nthe historical \"master\" default.\n\nBug: https://crbug.com/gerrit/13339\nChange-Id: I4117c81a760c9495f98dbb1111a3e6c127f45eba\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/280799\nReviewed-by: Michael Mortensen \u003cmmortensen@google.com\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "0501b29e7ae072e0b10ea9ddd913ec6d5975f690",
      "tree": "95cc04852cbebe2365d0667c865c3995780fdda7",
      "parents": [
        "4e1fc1013c9203d3f5e7bdfba909d175a522c1f3"
      ],
      "author": {
        "name": "Kimiyuki Onaka",
        "email": "kimiyuki@google.com",
        "time": "Fri Aug 28 10:05:27 2020 +0900"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Sep 09 03:52:24 2020 +0000"
      },
      "message": "status: Use multiprocessing for `repo status -j\u003cnum\u003e` instead of threading\n\nThis change increases the speed of the command with parallelization with\nprocesses.  The parallelization with threads doesn\u0027t work well, and\nincreasing the number of jobs to many (8 threads ~) didn\u0027t increase the speed.\nPossibly, the global interpreter lock of Python affects.\n\nBug: https://crbug.com/gerrit/12389\nChange-Id: Icbe5df8ba037dd91422b96f4e43708068d7be924\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/279936\nTested-by: Kimiyuki Onaka \u003ckimiyuki@google.com\u003e\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "4e1fc1013c9203d3f5e7bdfba909d175a522c1f3",
      "tree": "d15174fed0c8ad157a4deba18a20d657d11d6b9b",
      "parents": [
        "4b325813fc0ba3f6525a9bacb4daf78fccccc3f6"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sun Sep 06 14:42:47 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Sep 08 17:00:06 2020 +0000"
      },
      "message": "manifest: drop support for local_manifest.xml\n\nWe deprecated this 8 years ago.  Time to drop it to simplify the code\nas it\u0027ll help with refactoring in this module to not migrate it.\n\nChange-Id: I2deae5496d1f66a4491408fcdc95cd527062f8b6\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/280798\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Michael Mortensen \u003cmmortensen@google.com\u003e\n"
    },
    {
      "commit": "4b325813fc0ba3f6525a9bacb4daf78fccccc3f6",
      "tree": "a2d818d5ad22e047a290b876b6c5a020097cfe6f",
      "parents": [
        "0578ebf61a6269e4045153c7d618baebaf00d869"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Fri Mar 13 05:35:00 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sun Sep 06 17:53:47 2020 +0000"
      },
      "message": "stop testing Python 2.7\n\nA recent change broke `repo version` on Python 2.7.  Rather than\nfix it, lets drop Python 2.7 support so it can slowly rot.\n\nBug: https://crbug.com/gerrit/10418\nChange-Id: I5c6e3d18e4a193b0a978062c23f7cea392e95d0f\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259155\nReviewed-by: David Pursehouse \u003cdavid.pursehouse@gmail.com\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "0578ebf61a6269e4045153c7d618baebaf00d869",
      "tree": "58c6b2b7679a40143178dd4126932f42ed3b5afa",
      "parents": [
        "65f51ad29b69986148a3eebd58683f0c4755d10a"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Aug 27 01:50:12 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Sep 02 07:53:16 2020 +0000"
      },
      "message": "init: reject unknown args\n\nIf you pass args to `repo init` when first creating a checkout, the\nrepo launcher throws an error.  But the init subcommand that runs in\nan existing checkout silently ignores them.  Throw a proper error.\n\nChange-Id: I433bfcc73902d25f6b6a2974e77f6a977a75ed16\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/279696\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "65f51ad29b69986148a3eebd58683f0c4755d10a",
      "tree": "0de0fce41372cfae4bf54c4bbc3703d4419a70c5",
      "parents": [
        "80944b538d606a8ee143db85ca9e50305d3c73e4"
      ],
      "author": {
        "name": "Adrien Bioteau",
        "email": "adrien.bioteau@gmail.com",
        "time": "Fri Jul 24 14:56:20 2020 +0200"
      },
      "committer": {
        "name": "Adrien Bioteau",
        "email": "adrien.bioteau@gmail.com",
        "time": "Thu Jul 30 20:46:11 2020 +0000"
      },
      "message": "Fix Git base version for worktreeconfig extension\n\nworktreeconfig extension only appears with version Git 2.20.0\n\nChange-Id: I3ea8b7d9f8a1f7953e536edd77b09cbc4f8f3158\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/276700\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: Adrien Bioteau \u003cadrien.bioteau@gmail.com\u003e\n"
    },
    {
      "commit": "80944b538d606a8ee143db85ca9e50305d3c73e4",
      "tree": "1f35e59909e8f91366c3812a0c559bfd469960fe",
      "parents": [
        "89f3ae5ae65de412bdde50e6e01ca666a1b7c2bb"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Jul 22 03:23:20 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Jul 25 08:31:52 2020 +0000"
      },
      "message": "upload: exit non-zero when preupload hooks fail\n\nBug: https://crbug.com/gerrit/13159\nChange-Id: Id140b619242c841223c6bc5d4aa0c37a7ce0219d\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/276294\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "89f3ae5ae65de412bdde50e6e01ca666a1b7c2bb",
      "tree": "88993fe7004aad25196b7041930efd1cf6ad0395",
      "parents": [
        "ac29ac397fdaacd1bcec8fad59d3ad62a1a1867c"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Jul 08 15:02:39 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Jul 23 08:07:38 2020 +0000"
      },
      "message": "release-process: document schedule (including freezes) publicly\n\nChange-Id: Ic037b54630017740d7859292b32b8c57f4af7854\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/274772\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\n"
    },
    {
      "commit": "ac29ac397fdaacd1bcec8fad59d3ad62a1a1867c",
      "tree": "7ba85916bf67373c3cf46e7c0312fb34c30d264f",
      "parents": [
        "cebf227026d3ef9e849a7d7d54bef638544d65ad"
      ],
      "author": {
        "name": "Roger Shimizu",
        "email": "rosh@debian.org",
        "time": "Sat Jun 06 02:33:40 2020 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@digital.ai",
        "time": "Sat Jun 06 23:46:00 2020 +0000"
      },
      "message": "subcmds/sync.py: Fix typo in help\n\nChange-Id: I70b63477241284249e395b8b0a220cb6f44f836b\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/270183\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@digital.ai\u003e\nTested-by: David Pursehouse \u003cdpursehouse@digital.ai\u003e\n"
    },
    {
      "commit": "cebf227026d3ef9e849a7d7d54bef638544d65ad",
      "tree": "8b175284dd58b3ae0313cdba91083a47458705db",
      "parents": [
        "7ae210a15bcf319744c2f4c3a3ea19f63444f14c"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue May 26 01:02:29 2020 -0400"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@digital.ai",
        "time": "Tue May 26 05:15:58 2020 +0000"
      },
      "message": "manifest: normalize name \u0026 path when constructing fs paths\n\nIf the manifest uses a trailing slash on the name attribute, repo\nwill construct bad internal filesystem paths which confuses tools\nlater on.\n\nFor example, this manifest entry:\n  \u003cproject name\u003d\"aosp/platform/system/libhidl/\" ...\nwill cause repo to use paths like:\n  .repo/project-objects/aosp/platform/system/libhidl/.git/\nwhen it really should be using:\n  .repo/project-objects/aosp/platform/system/libhidl.git\n\nApply the normalization when we construct the local filesystem paths\nas we cannot guarantee that the remote URL constructed from these\nwill behave the same.  A server might really want:\n  https://example.com/aosp/platform/system/libhidl/\nand would throw an error if we instead tried to fetch:\n  https://example.com/aosp/platform/system/libhidl\n\nUnfortunately, any existing repo client checkouts that use such a\nmanifest will hit a one-time sync error as the internal git location\nhas changed.  I\u0027m not sure there\u0027s a way to cleanly migrate that.\n\nBug: https://crbug.com/1086043\nChange-Id: I30bea0ffd23e478de89a035f408055e48a102658\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/268742\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@digital.ai\u003e\n"
    },
    {
      "commit": "7ae210a15bcf319744c2f4c3a3ea19f63444f14c",
      "tree": "afae26d818cf53feeded925d66b806c205bb3848",
      "parents": [
        "60fc51bb1dcf8970189a544c2ca75f2cdcfdb6f8"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sun May 24 14:56:52 2020 -0400"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@digital.ai",
        "time": "Sun May 24 23:51:28 2020 +0000"
      },
      "message": "sync: fix duplicate word in description\n\nBug: https://crbug.com/gerrit/12814\nChange-Id: Id722eec9a59dded588f13bc605ce2c94b4047265\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/268739\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@digital.ai\u003e\n"
    },
    {
      "commit": "60fc51bb1dcf8970189a544c2ca75f2cdcfdb6f8",
      "tree": "4b0417e376c2d21c79891793b0243165db8e1d34",
      "parents": [
        "72325c5f3e64711f575bd3e04a5cbe3fb320be18"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu May 21 18:13:49 2020 -0400"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@digital.ai",
        "time": "Thu May 21 22:46:11 2020 +0000"
      },
      "message": "launcher: fix version to latest\n\nWe\u0027ve already released 2.7, and the next tag is 2.8, so this should\nbe pulled up to 2.8 so it\u0027ll stay in sync.\n\nChange-Id: Id47bdbdb8050b29ea36442ac2149dd948648237f\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/268572\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@digital.ai\u003e\n"
    },
    {
      "commit": "72325c5f3e64711f575bd3e04a5cbe3fb320be18",
      "tree": "973f3b1eb2a4029d80de5eb2bd128ccce9036f67",
      "parents": [
        "d79a4bc51b6ca5b47bbea861143c72bccc0ad13a"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu May 21 16:13:32 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu May 21 21:04:42 2020 +0000"
      },
      "message": "launcher: bump version for cli changes\n\nChange-Id: I9b2194df0c1af3bc5b42115a25992747368a7383\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/268532\nReviewed-by: Xin Li \u003cdelphij@google.com\u003e\nTested-by: Xin Li \u003cdelphij@google.com\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "d79a4bc51b6ca5b47bbea861143c72bccc0ad13a",
      "tree": "f2d8de86fc76c9207af7be2b0c7ff683471df761",
      "parents": [
        "682f0b6426a06ed1e89b130d50c6521b1c67d529"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Wed May 20 16:03:45 2020 -0700"
      },
      "committer": {
        "name": "Jonathan Nieder",
        "email": "jrn@google.com",
        "time": "Thu May 21 19:47:36 2020 +0000"
      },
      "message": "Make partial clone imply no-clone-bundle by default.\n\nFor large projects, clone bundle is useful because it provided a way to\nefficiently transfer a large portion of git objects through CDN, without\nneeding to interact with git server. However, with partial clones, the\nintention is to not download most of the objects, so the use of clone\nbundles would defeat the space savings normally seen with partial\nclones, as they are downloaded before the first fetch.\n\nA new option, --clone-bundle is added to override this behavior.\nAdd a new repo.clonebundle variable which remembers the choice if\nexplicitly given from command line at repo init.\n\nChange-Id: I03638474af303a82af34579e16cd4700690b5f43\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/268452\nTested-by: Xin Li \u003cdelphij@google.com\u003e\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\n"
    },
    {
      "commit": "682f0b6426a06ed1e89b130d50c6521b1c67d529",
      "tree": "6d1bcc4dc2c754ce5fccb633d0145c5d11335dac",
      "parents": [
        "e7082ccb54ad870b185e99d7e39d1959c65ff899"
      ],
      "author": {
        "name": "Sean McAllister",
        "email": "smcallis@google.com",
        "time": "Mon May 18 09:15:51 2020 -0600"
      },
      "committer": {
        "name": "Sean McAllister",
        "email": "smcallis@google.com",
        "time": "Tue May 19 15:25:42 2020 +0000"
      },
      "message": "Fix how we format the full destination branch when uploading.\n\nIf the dest-branch attribute is set in the project manifest, then\nwe need to push to that branch.  Previously, we would unconditionally\npre-pend the refs/heads prefix to it.  The dest-branch attribute is\nallowed to be a ref expression though, so it may already have it.\n\nSimple fix is to check if it already has the prefix before adding it.\n\nBug: crbug.com/gerrit/12770\n\nChange-Id: I45d6107ed6cf305cf223023b0ddad4278f7f4146\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/268152\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: Sean McAllister \u003csmcallis@google.com\u003e\n"
    },
    {
      "commit": "e7082ccb54ad870b185e99d7e39d1959c65ff899",
      "tree": "202d3b90442beba913cd8aefadaf66abeea5368c",
      "parents": [
        "dbfbcb14c162ef8233a5a13a462ba86f5b99921a"
      ],
      "author": {
        "name": "Daniel Kutik",
        "email": "daniel.kutik@lavawerk.com",
        "time": "Fri May 08 13:46:51 2020 +0800"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue May 12 16:15:01 2020 +0000"
      },
      "message": "repo info findRemoteLocalDiff use short branch\n\nWhen running repo info -d an error would be thrown saying:\n  fatal: bad revision \u0027refs/remotes/m/refs/heads/master..\u0027\n\nUsing the short branch name here instead, like \u0027refs/remotes/m/master..\u0027\nresolves this issue.\n\nSigned-off-by: Daniel Kutik \u003cdaniel.kutik@lavawerk.com\u003e\nChange-Id: I50ea92c45c011b2c3e3a63803decb88e7837a380\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/266578\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "dbfbcb14c162ef8233a5a13a462ba86f5b99921a",
      "tree": "ef0b8b9f046f95817229ad3f95dfde53fc1dc56a",
      "parents": [
        "d0ca0f6814247d18d28e35de08ba193c4cf8e028"
      ],
      "author": {
        "name": "Angel Petkov",
        "email": "apetkov86@gmail.com",
        "time": "Sat May 02 23:16:20 2020 +0300"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue May 05 17:53:11 2020 +0000"
      },
      "message": "project.py: Fix check for wild cards\n\nThe intention of the check is to verify whether the target\nfile name contains a wild card. The code, however, assumes\nthat if the file is non-existent - it contains a wild card.\nThis has the side effect that a target file that does not\nexist at the moment of the check is considered to contain a\nwild card, this leads itself to softlink not being created.\n\nChange-Id: I4e4cd7b5e1b8ce2e4b2edc9abf5a1147cd86242f\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/265736\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: Angel Petkov \u003capetkov86@gmail.com\u003e\n"
    },
    {
      "commit": "d0ca0f6814247d18d28e35de08ba193c4cf8e028",
      "tree": "39304ca4332f02fbaf5e069de82a191a3debb89b",
      "parents": [
        "433977e95812f0839796efdf4fae5863efe2025b"
      ],
      "author": {
        "name": "Ulrik Laurén",
        "email": "ulrik.lauren@gmail.com",
        "time": "Tue Apr 28 01:09:57 2020 +0200"
      },
      "committer": {
        "name": "Ulrik Laurén",
        "email": "ulrik.lauren@gmail.com",
        "time": "Wed Apr 29 18:28:41 2020 +0000"
      },
      "message": "Parse included files when reading git config files\n\nGit config files may have an include tag pointing to another file.\nThe included file is not parsed unless “git config --list” is\nexplicitly told to follow includes by adding the argument ”--includes”.\n\nThis change add the \"--includes\" when parsing the global gitconfig file.\n\nChange-Id: I892c9a3a748754c1eb8c9e220578305ca5850dd5\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/264759\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: Ulrik Laurén \u003culrik.lauren@gmail.com\u003e\n"
    },
    {
      "commit": "433977e95812f0839796efdf4fae5863efe2025b",
      "tree": "7956575dc9bc11a3e9df7e25c4f5943f6e0a2574",
      "parents": [
        "dd37fb22227f2abfb4b4f657dded42d422ac2e9c"
      ],
      "author": {
        "name": "Konrad Weihmann",
        "email": "kweihmann@outlook.com",
        "time": "Fri Apr 17 21:39:32 2020 +0200"
      },
      "committer": {
        "name": "K Weihmann",
        "email": "kweihmann@outlook.com",
        "time": "Tue Apr 28 17:02:46 2020 +0000"
      },
      "message": "repo: exit on missing entry point\n\nexit if no repo_main can be found right before executing the command.\nThis happens for instance when \u0027repo init\u0027 is run on root path\n(for example in a container). Without this counter measure the tool\nwill crash at exec_command with\nTypeError: sequence item 1: expected str instance, NoneType found\n\nChange-Id: Ia8480cfe2151c3b35c9572789ad8cb619288cce1\nSigned-off-by: Konrad Weihmann \u003ckweihmann@outlook.com\u003e\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/263457\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@digital.ai\u003e\n"
    },
    {
      "commit": "dd37fb22227f2abfb4b4f657dded42d422ac2e9c",
      "tree": "0d1b74afbe98d1da948c6b8f5a22c80c52996836",
      "parents": [
        "af908cb5438ec3c03a9a32d1a9f286aa5657ff88"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Apr 16 12:38:04 2020 -0400"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@digital.ai",
        "time": "Tue Apr 28 02:54:50 2020 +0000"
      },
      "message": "main: re-exec self with the current interp\n\nThe launcher already raised itself up to use Python 3 on the fly, and\nthe main.py script uses a plain `python` shebang.  So make sure we use\nthe active interpreter when re-execing ourselves to avoid falling back\ndown to Python 2 (which then triggers warnings).\n\nChange-Id: Ic53c07dead3bc9233e4089a0a422f83bb5ac2f91\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/263272\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@digital.ai\u003e\n"
    },
    {
      "commit": "af908cb5438ec3c03a9a32d1a9f286aa5657ff88",
      "tree": "6d02df8ce08d244716807f842b4058c965bda5fd",
      "parents": [
        "74e8ed4bde37a3ce42579e4601e0a54120853c89"
      ],
      "author": {
        "name": "Sean McAllister",
        "email": "smcallis@google.com",
        "time": "Mon Apr 20 08:41:58 2020 -0600"
      },
      "committer": {
        "name": "Sean McAllister",
        "email": "smcallis@google.com",
        "time": "Mon Apr 20 16:35:02 2020 +0000"
      },
      "message": "When writing manifest, set the dest-branch attribute for projects\n\nWhen generating a revision locked manifest, we need to know what\nref to push changes to when doing \u0027repo upload\u0027.  This information\nis lost when we lock the revision attribute to a particular commit\nhash, so we need to expose it through the dest-branch attribute.\n\nBug: https://crbug.com/1005103\nTest: manual execution\nChange-Id: Ib31fd77ad8c9379759c4181dac1ea97de43eec35\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/263572\nTested-by: Sean McAllister \u003csmcallis@google.com\u003e\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "74e8ed4bde37a3ce42579e4601e0a54120853c89",
      "tree": "ca0c74f490498124d784d8f2c2ed4c146d10097f",
      "parents": [
        "2fe84e17b923f29139dc6056756ab30078864c18"
      ],
      "author": {
        "name": "Sean McAllister",
        "email": "smcallis@google.com",
        "time": "Wed Apr 15 12:24:43 2020 -0600"
      },
      "committer": {
        "name": "Sean McAllister",
        "email": "smcallis@google.com",
        "time": "Thu Apr 16 18:42:53 2020 +0000"
      },
      "message": "Expose upstream and dest-branch attributes through environment\n\nRecent changes in ChromeOS Infra to ensure we\u0027re reading from\nsnapshot manifests properly have exposed several bugs in our\nassumptions about manifest files.  Mainly that the revision field\nfor a project does _not_ have to refer to a ref, it can just be\na commit hash.\n\nSeveral places assume that the revision field can be parsed as a\nref to get the branch the project is on, which isn\u0027t true.  To fix\nthis we need to be able to look at the upstream and dest-branch\nattributes of the repo, so we expose them through the environment\nvariables set in `repo forall`.\n\nTest: manual \u0027repo forall\u0027 run\nBug: https://crbug.com/1032441\n\nChange-Id: I2c039e0f4b2e0f430602932e91b782edb6f9b1ed\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/263132\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: Sean McAllister \u003csmcallis@google.com\u003e\n"
    },
    {
      "commit": "2fe84e17b923f29139dc6056756ab30078864c18",
      "tree": "6159d6949c98d7592b3b42adad226d37b975c491",
      "parents": [
        "1122353683fa5e8a4e2236d4b607310e57a0476a"
      ],
      "author": {
        "name": "George Engelbrecht",
        "email": "engeg@google.com",
        "time": "Wed Apr 15 11:28:00 2020 -0600"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Apr 15 19:55:44 2020 +0000"
      },
      "message": "project.py: Remove extraneous \u0027,\u0027\n\nBug: https://crbug.com/1061473\nChange-Id: I0f02f122d6313679c1ae5ad6fb4e05f68b764186\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/263112\nTested-by: George Engelbrecht \u003cengeg@google.com\u003e\nReviewed-by: George Engelbrecht \u003cengeg@google.com\u003e\nReviewed-by: SPA SARC \u003cspanc.sarc@gmail.com\u003e\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "1122353683fa5e8a4e2236d4b607310e57a0476a",
      "tree": "84146fea7274affad126013b53e2bf0b27e4b132",
      "parents": [
        "b6871899be405178e8557fd9097918143532dd8f"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Apr 15 06:55:13 2020 +0000"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Apr 15 07:17:16 2020 +0000"
      },
      "message": "Revert \"commit-msg: Insert Change-Id at start of trailers\"\n\nThis reverts commit 653f8b711be3344e8c617512629270661b24fa86.\n\nReason for revert: This requires git-2.15 which is much newer than\nrepo itself requires.  Lets pull it until we can figure out something\non the Gerrit side.\n\nBug: https://crbug.com/gerrit/12546\nChange-Id: I5148f8a9cab5f0c305c020e31627b4af88cd5c95\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/263012\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "b6871899be405178e8557fd9097918143532dd8f",
      "tree": "2f0c10c4f4cb2dd594e7c9561564ce6f300ebadb",
      "parents": [
        "8e0fe1920eee959ad14225ad2327793371be05d1"
      ],
      "author": {
        "name": "George Engelbrecht",
        "email": "engeg@google.com",
        "time": "Thu Apr 02 13:53:01 2020 -0600"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Apr 15 06:52:52 2020 +0000"
      },
      "message": "project: have clone.bundle failures print better diagnostics\n\nBug: https://crbug.com/1061473\n\nChange-Id: If066dc56ca575720bfb25c1a9892dbd6f4af15c6\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/261852\nTested-by: George Engelbrecht \u003cengeg@google.com\u003e\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "8e0fe1920eee959ad14225ad2327793371be05d1",
      "tree": "db8cb7e6cf088cdcd5fdd411c75ea62ccc51f27c",
      "parents": [
        "d086467012e1970f44f27b67b4296a2a6fb097d5"
      ],
      "author": {
        "name": "Anders Björklund",
        "email": "anders.bjorklund.2@volvocars.com",
        "time": "Tue Feb 18 14:08:35 2020 +0100"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Apr 15 06:51:22 2020 +0000"
      },
      "message": "Use hash for ControlPath instead of full variables\n\nThe generated socket path can be too long, if your FQDN is very long...\n\nTypical error message from ssh client:\nunix_listener: path \"/tmp/ssh-fqduawon/master-USER@HOST:PORT.qfCZ51OAZgTzVLbg\" too long for Unix domain socket\n\nUse a hashed version instead, to keep within the socket file path limit.\n\nThis requires OpenSSH_6.7p1, or later.\n\nChange-Id: Ia4bb9ae8aac6c4ee31d5a458f917f3753f40001b\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/255632\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Anders Björklund \u003canders.bjorklund.2@volvocars.com\u003e\n"
    },
    {
      "commit": "d086467012e1970f44f27b67b4296a2a6fb097d5",
      "tree": "05507d1ec39195eba657eb1b2b851261981564b9",
      "parents": [
        "2735bfc5ff6599fd3ca9a361484259908d03804d"
      ],
      "author": {
        "name": "Karsten Pfeiffer-Raddatz",
        "email": "raddatz.karsten@gmail.com",
        "time": "Mon Apr 13 13:48:04 2020 +0200"
      },
      "committer": {
        "name": "Karsten Pfeiffer-Raddatz",
        "email": "raddatz.karsten@gmail.com",
        "time": "Tue Apr 14 06:49:31 2020 +0000"
      },
      "message": "forall.py: Close file after removing the stream\n\nIn order to remove the stream fileno() will be called on the filedescriptor.\nIf the file is already closed fileno() will raise an error and forall\nwill fail.\n\nBug: https://crbug.com/gerrit/12563\nChange-Id: Ib7b895fe881c844e3eb3672b011fdcdbdae63024\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/262838\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Karsten Pfeiffer-Raddatz \u003craddatz.karsten@gmail.com\u003e\n"
    },
    {
      "commit": "2735bfc5ff6599fd3ca9a361484259908d03804d",
      "tree": "624fdda61fa690fdb44b9fb5621581e60296a36a",
      "parents": [
        "653f8b711be3344e8c617512629270661b24fa86"
      ],
      "author": {
        "name": "Marcos Marado",
        "email": "mindboosternoori@gmail.com",
        "time": "Thu Apr 09 19:44:28 2020 +0100"
      },
      "committer": {
        "name": "Marcos Marado",
        "email": "mindboosternoori@gmail.com",
        "time": "Sun Apr 12 17:12:14 2020 +0000"
      },
      "message": "tests: fix SetupGnuPG test\n\nThe SetupGnuPG test tries to test the full setup, including the\ncreation of the directories. In order to do that, it create a\ntemporary directory, and redefines the home_dot_repo to point there.\n\nWhen a home_dot_repo directory does not exist, it should be created.\nThe gpg_dir, which should exist inside home_dot_repo, also needs to be\ncreated if it does not exist. However, since the gpg_dir path is\nrelative to home_dot_repo, once we redefine one, we need to redifine\nthe other.\n\nThe failure of this test might have gone unnoticed so far, since in\nonly fails if you do not have a ~/.repoconfig/gnupg/ on the\nenvironment you are running the tests on.\n\nChange-Id: Ic69d59e56137eea43349a61b5cf81f215c6a7f9a\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/262573\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Marcos Marado \u003cmindboosternoori@gmail.com\u003e\n"
    },
    {
      "commit": "653f8b711be3344e8c617512629270661b24fa86",
      "tree": "ee9624d6cd4b8b38f8f09dce86d1a7fd193dda71",
      "parents": [
        "9bc283e49bcb2663dc8c06a4efad289a3683aaa4"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Apr 08 10:38:41 2020 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Apr 08 01:47:54 2020 +0000"
      },
      "message": "commit-msg: Insert Change-Id at start of trailers\n\nIn older versions of Gerrit the Change-Id field was inserted at the\nstart of the trailers. Commit 68296f71804feab2e0ae18ae33f834a8a41621e4\nsimplified the trailers code by using git trailers instead of custom\ncode but now inserts Change-Id at the end of the trailers section.\n\nA consequence of this is that folks who sign-off their commits using\n`git commit -s` now has the sign-off appear first followed by\nChange-Id. If the user then runs `git commit -s --amend` to update\nthe change because the Sign-off-by line is not last, git inserts\na 2nd duplicate Signed-off-by line.\n\nThis patch simply restores the previous behaviour of the Gerrit\ncommit-msg hook where Change-Id would be inserted before the\nSign-off-by line to avoid this issue.\n\nBackported from [1] by Thanh Ha.\n\n[1] https://gerrit-review.googlesource.com/c/gerrit/+/262072\n\nBug: https://crbug.com/12546\nChange-Id: I1406c763a3935761247f6771f55e02367f698e6e\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/262352\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "9bc283e49bcb2663dc8c06a4efad289a3683aaa4",
      "tree": "7ef2de8ce8b076a07704542c8f88597dea45db6a",
      "parents": [
        "b4a6f6d7981fb6f4861485381b0b5ee761ab3ae8"
      ],
      "author": {
        "name": "George Engelbrecht",
        "email": "engeg@google.com",
        "time": "Thu Apr 02 12:36:09 2020 -0600"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Apr 02 21:17:54 2020 +0000"
      },
      "message": "sync: add retry to fetch operations\n\nAdd retries with exponential backoff and jitter to the fetch\noperations. By default don\u0027t change behavior and enable\nbehind the new flag \u0027--fetch-retries\u0027.\n\nBug: https://crbug.com/1061473\n\nChange-Id: I492710843985d00f81cbe3402dc56f2d21a45b35\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/261576\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: George Engelbrecht \u003cengeg@google.com\u003e\n"
    },
    {
      "commit": "b4a6f6d7981fb6f4861485381b0b5ee761ab3ae8",
      "tree": "14b28336095d41598c3e258795d32a520f3c03b2",
      "parents": [
        "3e5b269fc6e0b0691e571ca7f818a43f10ca2cbe"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Mon Mar 30 18:51:19 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Mar 31 03:27:57 2020 +0000"
      },
      "message": "version: include tag commit date for easy reference\n\nThis is more for users trying to get a sense of how old/new their\ncurrent version of repo is when debugging issues.\n\nChange-Id: Ifb413c679bb8c8dbf4f9334137adf086bb000a68\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/261192\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "3e5b269fc6e0b0691e571ca7f818a43f10ca2cbe",
      "tree": "08a8a1eb5dbe75e105f8ab8c9bb98ea925544762",
      "parents": [
        "cdb344c0e7a92e478d738e29a995726c98ae1ffb"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Mar 25 01:00:29 2020 -0400"
      },
      "committer": {
        "name": "Jonathan Nieder",
        "email": "jrn@google.com",
        "time": "Wed Mar 25 05:54:26 2020 +0000"
      },
      "message": "launcher: bump version for accumulated fixes\n\nChange-Id: I45da9facb525355c4963735e087d87024dea2017\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/260232\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\n"
    },
    {
      "commit": "cdb344c0e7a92e478d738e29a995726c98ae1ffb",
      "tree": "4e792f93edd1c0ce025cece6b7689664c18b78b2",
      "parents": [
        "e257d5666568a9621b7dfece313c705e41e17070"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Mar 24 02:43:46 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Mar 25 04:56:16 2020 +0000"
      },
      "message": "launcher: avoid crash when executing out of checkout\n\nWhen developing repo itself, it helps to run repo directly out of it\nand to run bisection tools.  The current _SetDefaultsTo logic fails\nin that situation though as it wants a branch, but the source isn\u0027t\nchecked out to one.  Now that we support tracking commits via the\n--repo-rev setting, fall back to using the current HEAD commit.\n\nChange-Id: I37d79fd9f7bea87d212421ebed6c8267ec95145f\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/260192\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\n"
    },
    {
      "commit": "e257d5666568a9621b7dfece313c705e41e17070",
      "tree": "82720ced71c4aaa1a12cecd79a95c83d506fd644",
      "parents": [
        "3599cc397581086b7fddcd2e07308bfdac7751b1"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Mon Mar 23 16:55:02 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Mar 25 04:56:07 2020 +0000"
      },
      "message": "version: fix running under Python 2\n\nThis gets the unittests passing again for now.\n\nChange-Id: Ibed430a305bc26b907ad0ea424c7eec7de37e942\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259994\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\n"
    },
    {
      "commit": "3599cc397581086b7fddcd2e07308bfdac7751b1",
      "tree": "5ae663f1830fa7d29ec66c86e2088244f7fa2e5a",
      "parents": [
        "cfc8111f5e04ece139892bb9af4bd63aac2b75f3"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Feb 29 02:53:41 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Mar 25 04:55:50 2020 +0000"
      },
      "message": "init: respect --repo-rev changes\n\nWe respect this option when running the first `repo init`, but then\nsilently ignore it once the initial sync is done.  Make sure users\nare able to change things on the fly.\n\nWe refactor the wrapper API to allow reuse between the two init\u0027s.\n\nBug: https://crbug.com/gerrit/11045\nChange-Id: Icb89a8cddca32f39a760a6283152457810b2392d\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/260032\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\n"
    },
    {
      "commit": "cfc8111f5e04ece139892bb9af4bd63aac2b75f3",
      "tree": "3bf1cac8e36d3ae01112b3bf481deb350fce1759",
      "parents": [
        "587f162033b3d39e394cfb0cd13e5703af913901"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Feb 29 02:56:32 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Mar 24 05:01:23 2020 +0000"
      },
      "message": "init: allow REPO_REV/--repo-rev to specify commits/tags\n\nWhile the help/usage suggested that revisions would work, they never\nactually did, and just throw confusing errors.  Now that we warn if\nthe checkout isn\u0027t tracking a branch, allow people to specify commits\nor tags explicitly.  Hopefully our nags will be sufficient to keep\nmost people on the right path.\n\nBug: https://crbug.com/gerrit/11045\nChange-Id: I6ea32c677912185f55ab20faaa23c6c0a4c483b3\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259492\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\n"
    },
    {
      "commit": "587f162033b3d39e394cfb0cd13e5703af913901",
      "tree": "a5c7730bf47441ec5396d2da3a6d59aeb1382d48",
      "parents": [
        "78964472adc5c92e0aad7bf513c50df5331d9d66"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Mon Mar 23 16:49:11 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Mar 24 03:08:25 2020 +0000"
      },
      "message": "tests: add more wrapper unittests\n\nChange-Id: Ic6b4eb96b871793bc9463c9047674cf3cfbe4b5e\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259993\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\n"
    },
    {
      "commit": "78964472adc5c92e0aad7bf513c50df5331d9d66",
      "tree": "42b0024464f8f3bdc1548a3773bedb41ca3cf1d8",
      "parents": [
        "05097c622231eeb095c17c5f5c4e791c57f382bc"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sun Mar 22 13:54:55 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Mon Mar 23 00:31:10 2020 +0000"
      },
      "message": "download: add a --branch option\n\nThis allows people to quickly create new branches when pulling down\nchanges rather than having to juggle the git calls themselves.\n\nBug: https://crbug.com/gerrit/11609\nChange-Id: Ie6a4d05e9f4e9347fe7f7119c768e6446563ae65\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259855\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "05097c622231eeb095c17c5f5c4e791c57f382bc",
      "tree": "5f7f474f64cbfb85ebcc179475fcb2bb232cc632",
      "parents": [
        "915fda130efa14b9314b500d122f9af707518508"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sun Mar 22 13:36:27 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Mon Mar 23 00:28:54 2020 +0000"
      },
      "message": "download: unify error handling with sub git calls\n\nWe gracefully handle cherry-pick errors, but none of the others\nwhich means people get confusing Python tracebacks.  Move the\nmain logic in a single GitError try block so we can show pretty\nerror messages for all of them.\n\nChange-Id: I52cdf6468d21a98de7f65b86d5267b3caabd5af8\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259854\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "915fda130efa14b9314b500d122f9af707518508",
      "tree": "054e7a0322bbd7927cfe57792dea28f6e855839c",
      "parents": [
        "ea43176de0a46eadb12be814517532a13eec8b1d"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sun Mar 22 12:15:20 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Mon Mar 23 00:27:52 2020 +0000"
      },
      "message": "download: support -x when cherry-picking\n\nThis is a pretty common option for people to want too use, so include\nit as a pass-thru option when cherry-picking.\n\nBug: https://crbug.com/gerrit/9418\nChange-Id: I2a24c1ed7544541719caa4d3c0574347a151a1b0\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259853\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "ea43176de0a46eadb12be814517532a13eec8b1d",
      "tree": "32adc185cc21afba8462fa662e4bc1ccc1fcd827",
      "parents": [
        "58ac1678e8438fd029a22365741fc57276eda404"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sun Mar 22 12:14:01 2020 -0400"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Mon Mar 23 00:26:26 2020 +0000"
      },
      "message": "download: support --ff when cherry-picking\n\nThe git cherry-pick already supports this, so plumb the existing repo\noption down.  Otherwise it\u0027s confusing when people use -c --ff and it\ndoesn\u0027t use that behavior.\n\nChange-Id: Id68932ffa09204bb30b92a21aff185c00394a520\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259852\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "58ac1678e8438fd029a22365741fc57276eda404",
      "tree": "ddadc39f70fa728e5cf75f2220716da42cef4d55",
      "parents": [
        "e1111f5710acf16d91975a9ee5e2c9464730becf"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Mar 14 14:35:26 2020 -0400"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Mar 18 00:24:43 2020 +0000"
      },
      "message": "init: rename --repo-branch to --repo-rev\n\nWe refer to this as \"revision\" in help text, and in REPO_REV envvar,\nso rename to --repo-rev to be consistent.  We keep --repo-branch for\nbackwards compatibility, but as a hidden option.\n\nBug: https://crbug.com/gerrit/11045\nChange-Id: I1ecc282fba32917ed78a63850360c08469db849a\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259352\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "e1111f5710acf16d91975a9ee5e2c9464730becf",
      "tree": "e4e5473bc89c9a78887cf073716471c79740eff4",
      "parents": [
        "7936ce867707658929df8b234ff3449dea4d4a0a"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Mar 14 16:28:31 2020 -0400"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Tue Mar 17 09:24:04 2020 +0000"
      },
      "message": "launcher: init: stop passing --repo-url/--repo-branch down\n\nWhen the launcher handles the init subcommand, it takes care of\nsetting the repo url \u0026 branch itself when cloning.  So we don\u0027t\nneed to pass them down to the checked out init subcommand.\n\nFurther, the init subcommand has never actually done anything\nwith those options, so there\u0027s no point in passing them.\n\nWe\u0027ll be changing the latter behavior so that init will reset\nthe url/branch when specified with an existing repo checkout\nwhich means passing them through adds overhead: the launcher\nwill checkout to the right value, then chain to the sub-init\nwhich will then reset the checkout to the same value.\n\nBug: https://crbug.com/gerrit/11045\nChange-Id: Ia2a4ab9d86febc470aea4abd73d75bb10e848b56\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259312\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "7936ce867707658929df8b234ff3449dea4d4a0a",
      "tree": "46ed3aa440a2f6e9fd7661b70a4cc62012b5999f",
      "parents": [
        "23c900f105dd88bb404cfada0377fa817881cff8"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Feb 29 02:53:41 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Tue Mar 17 05:39:17 2020 +0000"
      },
      "message": "init: respect --repo-url changes\n\nWe respect this option when running the first `repo init`, but then\nsilently ignore it once the initial sync is done.  Make sure users\nare able to change things on the fly.\n\nBug: https://crbug.com/gerrit/11045\nChange-Id: I129ec5fec43a85067d555bb60c0d1ae02465f139\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/258893\nTested-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "23c900f105dd88bb404cfada0377fa817881cff8",
      "tree": "837488a4bf3c983607bac71ddb8eb3f8ed6c8d22",
      "parents": [
        "bb930461cee056de210816e58c36a8d6dfd122be"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Feb 29 02:52:44 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Tue Mar 17 05:38:19 2020 +0000"
      },
      "message": "sync: warn if not tracking a branch\n\nSince tracking a branch prevents repo from updating, make sure we\nwarn people about the situation when using `repo sync`.\n\nBug: https://crbug.com/gerrit/11045\nChange-Id: I966513f510827cc93194f8df176c6745946bd739\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/258892\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "bb930461cee056de210816e58c36a8d6dfd122be",
      "tree": "3f98c279580f02ecf7c1608a20caa294f1075f45",
      "parents": [
        "d3639c53d56feaea81474ffd28395a124744dab7"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Feb 25 15:18:31 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Tue Mar 17 00:08:52 2020 +0000"
      },
      "message": "subcmds: stop instantiating at import time\n\nThe current subcmds design has singletons in all_commands.  This isn\u0027t\nexactly unusual, but the fact that our main \u0026 help subcommand will then\nattach members to the classes before invoking them is.  This makes it\nhard to keep track of what members a command has access to, and the two\ncode paths (main \u0026 help) attach different members depending on what APIs\nthey then invoke.\n\nLets pull this back a step by storing classes in all_commands and leave\nthe instantiation step to when they\u0027re used.  This doesn\u0027t fully clean\nup the confusion, but gets us closer.\n\nChange-Id: I6a768ff97fe541e6f3228358dba04ed66c4b070a\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259154\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "d3639c53d56feaea81474ffd28395a124744dab7",
      "tree": "e48227c75bb55a08c342f0a2d8e6ced9cadad5a7",
      "parents": [
        "f725e548db17281037d794f18aab3320d2580865"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Feb 25 15:12:37 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Tue Mar 17 00:08:52 2020 +0000"
      },
      "message": "subcmds: centralize all_commands logic\n\nThe branch-\u003ebranches alias is setup in the main module when that\nreally belongs in the existing all_commands setup.\n\nFor help, rather than monkey patching all_commands to the class,\nswitch it to use the state directly from the module.  This makes\nit a bit more obvious where it\u0027s coming from rather than this one\nsubcommand having a |commands| member added externally to it.\n\nChange-Id: I0200def09bf4774cad8012af0f4ae60ea3089dc0\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259153\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "f725e548db17281037d794f18aab3320d2580865",
      "tree": "5669eedc913551e8e53c5d11bd39ee90e972e12c",
      "parents": [
        "4847e0574303f90438335a7c6c7c009145deb8ef"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Mar 14 17:39:03 2020 -0400"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Sun Mar 15 08:31:35 2020 +0000"
      },
      "message": "upload: add config setting for upload notifications\n\nThis allows people to set default e-mail notifications via gitconfig.\n\nBug: https://crbug.com/gerrit/12451\nChange-Id: Ic04ea3b7df0c5603c491961112c5be8cabb9dddd\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/259014\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "4847e0574303f90438335a7c6c7c009145deb8ef",
      "tree": "97190c4cad95c1b4ece90394ec5023d3a63ac7c1",
      "parents": [
        "bb8ee7f54a4e0bf07d466304d800f13ec41ac21c"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Feb 22 00:07:35 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Mar 14 04:02:42 2020 +0000"
      },
      "message": "repo/init/sync: rework default git download output\n\nWhen we download git sources, we get a progress bar (good) and we get\na dump of all the refs we downloaded (bad) as it can easily be 100+ if\nnot 1000+ depending on the project (for each git repo!).  Lets rework\nthe output behavior so that:\n* quiet: Only errors.\n* default: Progress bars (if on a tty).\n* verbose: Full output (progress bars \u0026 downloaded refs).\n\nBug: https://crbug.com/gerrit/11293\nChange-Id: I87a380075e79de6805f91095876dd1b37d32873a\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256456\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Michael Mortensen \u003cmmortensen@google.com\u003e\n"
    },
    {
      "commit": "bb8ee7f54a4e0bf07d466304d800f13ec41ac21c",
      "tree": "af0dec0603951b94f2cb7a73d273edd486df0fbf",
      "parents": [
        "23d7dafd10e382f42c34618f7c86b3ff1c9d4245"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Feb 22 05:30:12 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Fri Mar 13 18:48:52 2020 +0000"
      },
      "message": "manifest_xml: unify bool \u0026 int parsing\n\nWe\u0027ve been overly lenient with boolean parsing by ignoring invalid\nvalues as \"false\" even if the user didn\u0027t intend that.  Turn all\nunknown values into warnings to avoid breaking existing manifests,\nand unify the parsing logic in a helper to simplify.\n\nWe\u0027ve been stricter about numbers, but still copying \u0026 pasting\ninconsistent code.  Add a helper for this too.  For out of range\nsync-j numbers (i.e. less than 1), throw a warning for now, but\nmark it for future hard failures.\n\nChange-Id: I924162b8036e6a5f1e31b6ebb24b6a26ed63712d\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256457\nReviewed-by: Michael Mortensen \u003cmmortensen@google.com\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "23d7dafd10e382f42c34618f7c86b3ff1c9d4245",
      "tree": "4e1214edd3fe0de53af09bd3e0e25745c3e64ff3",
      "parents": [
        "8b40c00eab2a08e99eb27f21ef286dd0af155a4a"
      ],
      "author": {
        "name": "Theodore Dubois",
        "email": "tbodt@google.com",
        "time": "Thu Mar 12 01:06:57 2020 +0000"
      },
      "committer": {
        "name": "Theodore Dubois",
        "email": "tbodt@google.com",
        "time": "Fri Mar 13 17:45:36 2020 +0000"
      },
      "message": "Reland \"Port _FileDescriptorStreamsNonBlocking to use poll()\"\n\nNow that repo 2 requires Python 3, we can reland this.\n\nThis reverts commit 91d9587e45608a5f95cd842426b43452a60abb5e.\n\nChange-Id: Id5b178ebb53bdba04bfa79cbb5c698ae5080c957\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/258672\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: Theodore Dubois \u003ctbodt@google.com\u003e\n"
    },
    {
      "commit": "8b40c00eab2a08e99eb27f21ef286dd0af155a4a",
      "tree": "627fcc220049756f6d959baf8c07123a5e1cce41",
      "parents": [
        "e20da3eeedf03dcffbb882ca10b159719f8e334d"
      ],
      "author": {
        "name": "Connor Newton",
        "email": "connor@ifthenelse.io",
        "time": "Wed Mar 11 17:25:20 2020 +0000"
      },
      "committer": {
        "name": "Connor Newton",
        "email": "connor@ifthenelse.io",
        "time": "Fri Mar 13 09:50:46 2020 +0000"
      },
      "message": "diffmanifests: honour --pretty-format when printing --raw\n\nEnable using --pretty-format to build a custom subject line\neven when using the --raw option.\n\nChange-Id: I0c1e682d984e56698fe65939aa6de12a653cd0f1\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/258565\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: Connor Newton \u003cconnor@ifthenelse.io\u003e\n"
    },
    {
      "commit": "e20da3eeedf03dcffbb882ca10b159719f8e334d",
      "tree": "31e3eca7a95fb1dbf9baaad5aaa9bc3a7c17d20b",
      "parents": [
        "910dfe84978b6ed3400e367c6a9f3cb3f17a2384"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Mar 07 01:53:53 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Sat Mar 07 13:10:14 2020 +0000"
      },
      "message": "sync: fix os.environ logic errors\n\nThis is a dict to index, not a function to call.\n\nChange-Id: I0117eeaaa8b2ef4762ab6f0d22f9ffdaee961f52\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/258132\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "910dfe84978b6ed3400e367c6a9f3cb3f17a2384",
      "tree": "966282d12058690d95455944678dd377637afec1",
      "parents": [
        "21b7fbe14d9457400a90683a9bd3febe4b7f8840"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Feb 29 02:55:19 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Sun Mar 01 03:44:03 2020 +0000"
      },
      "message": "launcher: warn when verification is disabled\n\nMake it clear(er) to the user that this option is dangerous.\n\nBug: https://crbug.com/gerrit/11045\nChange-Id: I5580996c26653a7c823b69008de3626abf1b0068\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/257333\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "21b7fbe14d9457400a90683a9bd3febe4b7f8840",
      "tree": "658712eafc8754a4b7e2382d299c8dd207baaf75",
      "parents": [
        "b967f5c17a04d6a01c234427b3b5c9b49dff6ca5"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 26 23:53:36 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Sat Feb 29 07:22:08 2020 +0000"
      },
      "message": "project: fix m/ pseudo ref handling with git worktrees\n\nSince most ref namespaces are shared among all worktrees, trying to\nset the pseudo m/\u003cbranch\u003e in the common git repo ends up clobbering\neach other when using shared checkouts.  For example, in CrOS:\n  \u003cproject path\u003d\"src/third_party/kernel/v3.8\"\n           name\u003d\"chromiumos/third_party/kernel\"\n           revision\u003d\"refs/heads/chromeos-3.8\" /\u003e\n  \u003cproject path\u003d\"src/third_party/kernel/v3.10\"\n           name\u003d\"chromiumos/third_party/kernel\"\n           revision\u003d\"refs/heads/chromeos-3.10\" /\u003e\n\nTrying to set m/master in chromiumos/third_party/kernel.git/ will\nkeep clobbering the other.\n\nInstead, when using git worktrees, lets set the m/ pseudo ref to\npoint into the refs/worktree/ namespace which is unique to each\ngit worktree.  So we have in the common dir:\n  chromiumos/third_party/kernel.git/:\n    refs/remotes/m/master:\n      ref: refs/worktree/m/master\nAnd then in each worktree we point refs/worktree/m/master to the\nrespective manifest revision expression.  Now people can use the\nm/master in each git worktree and have it resolve to the right\ncommit for that worktree.\n\nBug: https://crbug.com/gerrit/12404\nChange-Id: I78814bdd5dd67bb13218c4c6ccd64f8a15dd0a52\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256952\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "b967f5c17a04d6a01c234427b3b5c9b49dff6ca5",
      "tree": "67b67650e33b46a2cbdead7ca921ae5b03a58cc0",
      "parents": [
        "dc15532beef6641346382228e81b81ce4bf64dc8"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Feb 29 01:49:56 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Sat Feb 29 07:20:24 2020 +0000"
      },
      "message": "release: add tips for when to push prod changes\n\nChange-Id: Iabfdd322acbc60ee16e5222ecdb261cd3a3c2cf9\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/257332\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "dc15532beef6641346382228e81b81ce4bf64dc8",
      "tree": "0ce723f317d42b7d9110c83fc42f91e7688f4453",
      "parents": [
        "eea23b44a97ad84b5a81bd969a04a8b9822448f1"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 26 13:57:44 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Feb 26 23:20:43 2020 +0000"
      },
      "message": "README: use new bug template\n\nThis will prefill all the settings so users can report things better.\n\nChange-Id: I1ccfd3a2c6835489db1fd2ba71aee39058ffe597\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256872\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "eea23b44a97ad84b5a81bd969a04a8b9822448f1",
      "tree": "461577fd7ef069ff675d8989b49d461f165605e4",
      "parents": [
        "5f11eac1478fb4797766ca4f5225a7f60d9cb993"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 26 16:21:08 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Feb 26 23:20:10 2020 +0000"
      },
      "message": "main: improve launcher update messaging wrt system installs\n\nSome users get repo from their distro (e.g. /usr/bin/repo), so the\nsuggestion to copy over top of it makes people uneasy, if it\u0027s even\npossible in the first place.\n\nBug: https://crbug.com/gerrit/12335\nChange-Id: I9a0c83d6ba0f466fa8e6d61f674ee13396f9a968\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256893\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "5f11eac1478fb4797766ca4f5225a7f60d9cb993",
      "tree": "e3707343a6314343dc711740f095922c599a1faf",
      "parents": [
        "b0fbc7fb58af8ee1875993daad481b87bf8c2f94"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Feb 25 15:09:01 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Feb 25 23:31:47 2020 +0000"
      },
      "message": "launcher/version: include OS/CPU info in output\n\nWe often ask users what OS/version they\u0027re running when debugging.\nInclude that in the version output to simplify the process.\n\nChange-Id: Ie480b6d1c874e6f4c6f4996a03795077b844f858\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256732\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "b0fbc7fb58af8ee1875993daad481b87bf8c2f94",
      "tree": "8c433776a7fed38dffbe208c8a8d4d976f626bae",
      "parents": [
        "4c418bf423300b0cc4c82ce9ecca5579274a29fa"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Feb 25 02:58:04 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Feb 25 20:58:09 2020 +0000"
      },
      "message": "upload: drop support for drafts\n\nDraft CLs were replaced by private/wip CLs in Gerrit instead years ago.\n\nChange-Id: If4f3d6606aad40a6f1617a49681dfd45c64d3d37\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256673\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "4c418bf423300b0cc4c82ce9ecca5579274a29fa",
      "tree": "9a5a70addf1b831658d8a2354d2d255fa5afe9ba",
      "parents": [
        "fc1b18ae9e39afc69b37ef4ada7a990e74b2c075"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Mon Feb 24 12:52:49 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Mon Feb 24 23:36:21 2020 +0000"
      },
      "message": "README: link to mailing list \u0026 add Contact section\n\nChange-Id: I65834e74c1c74f257d17b9da84b00e855ad42599\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256464\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "fc1b18ae9e39afc69b37ef4ada7a990e74b2c075",
      "tree": "1041653f3c0e3c1917fff2939c5e9af0850c5071",
      "parents": [
        "d957ec6a834e333a3812546911f786b0c20b808f"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Mon Feb 24 15:38:07 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Mon Feb 24 23:35:47 2020 +0000"
      },
      "message": "upload: allow users to set labels when uploading\n\nBug: https://crbug.com/gerrit/11801\nChange-Id: I060465105b4e68ddfc815e572f62bf5dac2c1ffd\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256614\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Jack Rosenthal \u003cjrosenth@chromium.org\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "d957ec6a834e333a3812546911f786b0c20b808f",
      "tree": "b1451a20fd82b68e2204cd8054d018d2c7db138a",
      "parents": [
        "9f91c4395acf03b89738225b329c19fecaf46a3e"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Mon Feb 24 14:40:25 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Mon Feb 24 21:17:08 2020 +0000"
      },
      "message": "manifest_xml: skip config lookup during first init\n\nTrying to use the config state when the git tree hasn\u0027t yet been\ncreated hits bad side effects.  Add a check to avoid probing the\nconfig logic during the first run.  It\u0027s not clear what\u0027s going\nwrong at the lower layers, but this gets us back to the behavior\nbefore we added worktree support, so lets settle the status quo.\n\nBug: https://crbug.com/gerrit/12387\nChange-Id: I85b56797455f3c2e249d02c18496e060be05501d\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256592\nReviewed-by: Xin Li \u003cdelphij@google.com\u003e\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "9f91c4395acf03b89738225b329c19fecaf46a3e",
      "tree": "ef21b3f41e55968d657b6152870b6ffb5ef35cd6",
      "parents": [
        "4b0eb5a4418babdb12ae6fc50150473dc6dd5733"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sun Feb 23 23:24:40 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Mon Feb 24 17:41:40 2020 +0000"
      },
      "message": "project: replace GetHeadPath with new git helper\n\nChange-Id: I79931cb484508c78f6a8b8413d05b85ed8bc6d98\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256533\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "4b0eb5a4418babdb12ae6fc50150473dc6dd5733",
      "tree": "a8b7b139e81431fbdd8024d377e47c466c3e1af3",
      "parents": [
        "d38300c7565461d4e0b9d7bedf88552e9fd6bf3b"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sun Feb 23 23:22:34 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Mon Feb 24 17:41:36 2020 +0000"
      },
      "message": "project: fix rebase check with worktrees\n\nAdd a helper to our git wrapper to find the .git subdir,\nand then use that to detect internal rebase state.\n\nChange-Id: I3b3b6ed4c1f45cc8c3c98dc19c7ca3aabdc46905\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256532\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "d38300c7565461d4e0b9d7bedf88552e9fd6bf3b",
      "tree": "209e2dfb74027133769f6d9cc207f7a53c456c64",
      "parents": [
        "dcbfadf814aeb31bb66a265c74ef681d9dcb4875"
      ],
      "author": {
        "name": "Sean McAllister",
        "email": "smcallis@google.com",
        "time": "Thu Feb 20 13:49:01 2020 -0700"
      },
      "committer": {
        "name": "Sean McAllister",
        "email": "smcallis@google.com",
        "time": "Sat Feb 22 19:17:40 2020 +0000"
      },
      "message": "manifest: support optional --manifest-name\n\nStill use the repo manifest by default as before, but gives us\nthe option of overriding it to support e.g.: using a subset of\nthe full manifest.\n\nChange-Id: Ia42cd1cb3a0a58929d31bb01c9724e9d31f68730\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256372\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: Sean McAllister \u003csmcallis@google.com\u003e\n"
    },
    {
      "commit": "dcbfadf814aeb31bb66a265c74ef681d9dcb4875",
      "tree": "7cb94b6e75d8a497acde6ad03d3f115e00cca79c",
      "parents": [
        "edd3d45b35c33e06f9d2f569d4fb1d9c9c739151"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Feb 22 00:04:39 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Sat Feb 22 08:23:51 2020 +0000"
      },
      "message": "repo/init: improve basic progress messages\n\nWe produce some simple \"Get\" messages that aren\u0027t super clear as to\nwhat they\u0027re doing, especially for people not familiar with repo.\nRephrase these to explicitly state the thing we\u0027re doing so it\u0027s\nclear why we\u0027re downloading a particular source.\n\nBug: https://crbug.com/gerrit/11293\nChange-Id: I0749504f17c5385c6c65274a274e0ae25b117413\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256455\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "edd3d45b35c33e06f9d2f569d4fb1d9c9c739151",
      "tree": "73158f67275ef5a95ead8b2f8736cd2c86a7eaf1",
      "parents": [
        "71928c19a671b78ed39578d675d1d8b969a21a38"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Fri Feb 21 23:55:07 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Feb 22 06:31:22 2020 +0000"
      },
      "message": "repo/init: add --verbose flags\n\nWe don\u0027t use these for much yet, but init passes it down to the\nproject sync layers which already has support for verbose mode.\n\nChange-Id: I651794f1b300be1688eeccf3941ba92c776812b5\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256454\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\n"
    },
    {
      "commit": "71928c19a671b78ed39578d675d1d8b969a21a38",
      "tree": "0f512e34513424b8e3f18a26d27ac0818408f62f",
      "parents": [
        "f5dbd2eb07f6a9cdb49b7a2dd157925963192ded"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Fri Feb 21 23:45:08 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Feb 22 05:56:06 2020 +0000"
      },
      "message": "repo: show redirects when tracing commands\n\nThis copies the output style we use in git_command for showing output\nand input redirections.\n\nChange-Id: I449b27e7b262e1b30b24333109a1d91d9c7b1ce7\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256453\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "f5dbd2eb07f6a9cdb49b7a2dd157925963192ded",
      "tree": "f770843cf2af6af2451140f0db05111528ac41f4",
      "parents": [
        "0b888912cb8ebaa5357997dbecd2bbe64ebb9161"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Fri Feb 21 01:19:46 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Feb 22 04:56:24 2020 +0000"
      },
      "message": "docs: update Windows info\n\nAdd a section on worktrees to avoid symlink problems, and\nnote that Python 3 is now a hard requirement.\n\nChange-Id: I83811db88692127c40cec8270f6f9486c639dc3f\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256314\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "0b888912cb8ebaa5357997dbecd2bbe64ebb9161",
      "tree": "724e4d7df5751e1307e71b9368976d1e93d2b370",
      "parents": [
        "75264789c04bbdaffd479ab7725c85b1b8876d8e"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Fri Feb 21 22:48:40 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sat Feb 22 04:54:28 2020 +0000"
      },
      "message": "init: hide summary output when using --quiet\n\nChange-Id: I5e30a6d6a1c95fb8d75d8b0f4d63b497e9aac526\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256452\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "75264789c04bbdaffd479ab7725c85b1b8876d8e",
      "tree": "81950ac125fc73fd4d26d86804342709944b36eb",
      "parents": [
        "a269b1cb9dc21dfd598bfea3766206b606ad4589"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Fri Feb 21 18:55:07 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Sat Feb 22 04:39:55 2020 +0000"
      },
      "message": "project: fix worktree init under Windows\n\nGit likes to create .git files with read-only permissions which makes\nit difficult to open+truncate+write in situ under Windows.  Delete it\nbefore we write the file content to workaround.\n\nChange-Id: I3effd96525f0dfe0b90e298b6bf0b856ea26aa03\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256412\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "a269b1cb9dc21dfd598bfea3766206b606ad4589",
      "tree": "70d4344fcac2b422486046ed8394fa5c68d901c2",
      "parents": [
        "7951e143852bd861da21253275131d1fa79714d0"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Fri Feb 21 00:49:41 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Sat Feb 22 04:38:17 2020 +0000"
      },
      "message": "manifest_xml: change .repo/manifest.xml to a plain file\n\nChanging this to a file instead of using a symlink serves two purposes:\n* We can insert some comments \u0026 doc links to help users learn what this\n  is for, discover relevant documentation, and to discourage them from\n  modifying things.\n* Windows requires Administrator access to use symlinks.  With this\n  last change, Windows users can get repo client checkouts with the new\n  --worktree option and not need symlinks anywhere at all.  Which means\n  they no longer need to be an Administrator in order to `repo sync`.\n\nChange-Id: I9bc46824fd8d4b0f446ba84bd764994ca1e597e2\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256313\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "7951e143852bd861da21253275131d1fa79714d0",
      "tree": "2787c21296ad34c5451eba0ca4b2b21b9c165194",
      "parents": [
        "8c268c0e7bd18d1e2f4f526cd406c569312a5f23"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Fri Feb 21 00:04:15 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Fri Feb 21 23:46:54 2020 +0000"
      },
      "message": "project: fallback to hardlinks with git hooks\n\nWindows requires Administrator access to create symlinks.  We can\nmitigate this a bit by falling back to hardlinks as those may be\ncreated by any user on the system.  Do this with the git hooks as\nthese are supposed to be internal only and people shouldn\u0027t be\nmodifying them.  If they do, they\u0027ll have to delink first.  This\nseems worth it to allow repo usage without extra privileges.\n\nChange-Id: I996ea9c9238f7bd7d27d1d9b1f2786593bf75ef7\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256312\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "8c268c0e7bd18d1e2f4f526cd406c569312a5f23",
      "tree": "e10fd5adc97ec9321c6a351134a1d031e1ac0adf",
      "parents": [
        "d9254599f9bb47632313ecb90c5f281ceca5da3a"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Feb 20 15:13:51 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Fri Feb 21 05:20:58 2020 +0000"
      },
      "message": "release: import some helper scripts for managing official releases\n\nChange-Id: I9abebfef5ad19f6a637bc3b12effea9dd6d0269d\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256234\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "d9254599f9bb47632313ecb90c5f281ceca5da3a",
      "tree": "5c1bdb0815f5a027f0de194b488ba254719c7c11",
      "parents": [
        "746e7f664e306e823a40cd95a127516aa522ed8f"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 22:36:26 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Fri Feb 21 05:17:05 2020 +0000"
      },
      "message": "manifest/tests: get them passing under Windows\n\nWe also need to check more things in the manifest/project handlers,\nand use platform_utils in a few places to address Windows behavior.\n\nDrop Python 2.7 from Windows testing as it definitely doesn\u0027t work\nand we won\u0027t be fixing it.\n\nChange-Id: I83d00ee9f1612312bb3f7147cb9535fc61268245\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256113\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "746e7f664e306e823a40cd95a127516aa522ed8f",
      "tree": "d8d697039729fdb05c69566001f221bd23230a30",
      "parents": [
        "f241f8c094364722c33dd879ff6a0dc132a24bc2"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 15:49:02 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Fri Feb 21 05:12:47 2020 +0000"
      },
      "message": "project: unify StartBranch flows behind git-update-ref\n\nWe\u0027re using this for git worktrees because it handles the .git file\nformat, but it should work for all flows.  Unify to simplify.  This\nalso fixes the worktree logic which duplicated .git/config settings.\n\nChange-Id: Ie3af2e206710859dccfc376b3593f415d6830738\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256034\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\n"
    },
    {
      "commit": "f241f8c094364722c33dd879ff6a0dc132a24bc2",
      "tree": "ce4e7334d5bd89b7d3da9273a1b8a1b4f2b7ce53",
      "parents": [
        "a1e24b1f003eea8b053db2ab2586602d71dd1971"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Feb 20 17:08:43 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu Feb 20 23:11:17 2020 +0000"
      },
      "message": "repo: fix up license text\n\nSwitch the copyright holder to \"The Android Open Source Project\" to\nmatch all the other source files in the tree, and move it to the top\nof the file to match everything else we do.\n\nChange-Id: Ie15d8e2bc004a626e45f715271deeaf3919dc44a\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256235\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "a1e24b1f003eea8b053db2ab2586602d71dd1971",
      "tree": "ab35abc6ef837d52e697b3b18916733cb74202a8",
      "parents": [
        "e6e27b338b31ec5b1e7567c3639523c3739e4c2e"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 22:21:21 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Feb 20 06:55:22 2020 +0000"
      },
      "message": "tests: add git_require coverage\n\nChange-Id: I0c8fb45f6d5808caf361240a3a0b68eef670eeaa\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256112\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "e6e27b338b31ec5b1e7567c3639523c3739e4c2e",
      "tree": "d1f7581c0c16b5b1e2f93ae7df6f64a2c50c24ee",
      "parents": [
        "aa611a2ca284333521624f7095c9cff42278a4b9"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Feb 20 00:48:39 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Feb 20 06:14:00 2020 +0000"
      },
      "message": "abandon: add support for --quiet\n\nAlso fix the normal output to write to stdout.\n\nChange-Id: I6c117eea9cec08f5be9a44b90dbe9bf1f824ec95\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256114\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "aa611a2ca284333521624f7095c9cff42278a4b9",
      "tree": "a7b697729db89ec0f3cfbd705916d04859969955",
      "parents": [
        "949bc34267245d35b066ebbc9e5ae8be081db86f"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu Feb 20 10:47:26 2020 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Thu Feb 20 02:17:08 2020 +0000"
      },
      "message": "sync: Fix flake8 E125 and E129 warnings\n\n- E129 visually indented line with same indent as next logical line\n- E125 continuation line with same indent as next logical line\n\nFixed automatically by:\n\n autopep8 --in-place --select E125,E129 subcmds/sync.py\n\nChange-Id: Ia2f82f443e1e6a23ba22c6f9849c8485405aed0e\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256092\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\nTested-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "949bc34267245d35b066ebbc9e5ae8be081db86f",
      "tree": "5cf3d4e49fd971863b8084cd0f97e11d0478442a",
      "parents": [
        "f841ca48c150e8a62728c5875fb01dcf7c5756a7"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Feb 18 21:37:00 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Feb 20 00:53:46 2020 +0000"
      },
      "message": "main/repo: add support for subcommand aliases\n\nThis supports [alias] sections with repo subcommands just like git.\n\nChange-Id: Ie9235b5d4449414e6a745814f0110bd6af74ea93\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/255833\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "f841ca48c150e8a62728c5875fb01dcf7c5756a7",
      "tree": "29983898948da9ada7ea80dd33386cf643fa4c1b",
      "parents": [
        "c0d1866b35d3e8d0bee3760a9f52574fa2ab8491"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Tue Feb 18 21:31:51 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Feb 20 00:53:39 2020 +0000"
      },
      "message": "git_config: add support for repo-specific settings\n\nThis allows people to write ~/.repoconfig/config akin to ~/.gitconfig\nand .repo/config akin to .git/config.  This allows us to add settings\nspecific to repo without mixing up git, and to persist in general.\n\nChange-Id: I1c6fbe31e63fb8ce26aa85335349c6ae5b1712c6\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/255832\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "c0d1866b35d3e8d0bee3760a9f52574fa2ab8491",
      "tree": "c6be761e1dbf5e93dfe499e8f53d90386a2d6769",
      "parents": [
        "f81c72ed7727ca408d1859a86c56b532a8de8d59"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 19:19:18 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Thu Feb 20 00:51:42 2020 +0000"
      },
      "message": "project/sync: move DeleteProject helper to Project\n\nSince deleting a source checkout involves a good bit of internal\nknowledge of .repo/, move the DeleteProject helper out of the sync\ncode and into the Project class itself.  This allows us to add git\nworktree support to it so we can unlock/unlink project checkouts.\n\nChange-Id: If9af8bd4a9c7e29743827d8166bc3db81547ca50\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256072\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "f81c72ed7727ca408d1859a86c56b532a8de8d59",
      "tree": "9cdd3f23feed26c922528e8d1db86c3ebde03cc8",
      "parents": [
        "77b4397a7376fe52fe0725ed538891c89da161ed"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 15:50:00 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 23:44:10 2020 +0000"
      },
      "message": "project: set core.repositoryFormatVersion\u003d1 when using extensions\n\nWhen using extensions, make sure we set the git repo format version\nso git knows to check the extension compatibility.  We can add a\nhelper to the Project API to simplify this and make it foolproof.\n\nChange-Id: I9ab6c32d92fe2b8e5df6e2b080ca71556332e909\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256035\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\n"
    },
    {
      "commit": "77b4397a7376fe52fe0725ed538891c89da161ed",
      "tree": "2cfc3683cf4ae3ec9a48fd766865bfb1492eb5fc",
      "parents": [
        "0334b8c6738929ed5982a6572135714045a977fa"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 17:55:22 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 23:09:05 2020 +0000"
      },
      "message": "git_config: add GetInt helper\n\nChange-Id: Ic034ae2fd962299d1b352e597b391b6582ecf44b\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256052\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\n"
    },
    {
      "commit": "0334b8c6738929ed5982a6572135714045a977fa",
      "tree": "7c70dd546e4ddcdd7c89cd9d46c0379a34977a35",
      "parents": [
        "7ff80afdf66e8a00745300c0375d98f2ba8887b5"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 15:47:46 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 21:58:43 2020 +0000"
      },
      "message": "docs: improve project-objects \u0026 worktrees layout info\n\nMake it clear that the paths have a .git suffix, and clarify the\nreason for not using remote servers in the layout.\n\nChange-Id: I62c6977ee6f4e1e9882d45727eb239cf5489d2b6\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/256033\nReviewed-by: Jonathan Nieder \u003cjrn@google.com\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "7ff80afdf66e8a00745300c0375d98f2ba8887b5",
      "tree": "5068e7e9cf5c3e9176f29a524d01689522168aa0",
      "parents": [
        "19ec797f8173cdd7a95d91306c5a8c96832e16e0"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 03:00:26 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 18:12:28 2020 +0000"
      },
      "message": "upload: add a --hashtag-branch option akin to -t\n\nThis will automatically add the current local branch name as a hashtag.\n\nBug: https://crbug.com/gerrit/10477\nChange-Id: I888f8be8419c801f2d98b7a2ad2486799e94f32c\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/255893\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "19ec797f8173cdd7a95d91306c5a8c96832e16e0",
      "tree": "285a63f5e56b08577abca411fa31829a1c1dec7e",
      "parents": [
        "979d5bdc3ebe45998a76dbbaff46c33d4e59683b"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sun Feb 16 12:02:01 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 18:11:57 2020 +0000"
      },
      "message": "repo: reexec into Python 3 under Windows\n\nHopefully enough issues should be resolved now that we can start\nforcing Windows users into Python 3 too.\n\nChange-Id: Ic4aad6a0b35ffec7d1372e3da6fca11a2b6fde0b\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/255353\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "979d5bdc3ebe45998a76dbbaff46c33d4e59683b",
      "tree": "97c639570a60dd02a6ee9b712dff091a83ac8110",
      "parents": [
        "56ce3468b4f2faa1cccfea01dc91e7db73fb3843"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Sun Feb 09 02:28:34 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 18:11:33 2020 +0000"
      },
      "message": "add experimental git worktree support\n\nThis provides initial support for using git worktrees internally\ninstead of our own ad-hoc symlink tree.  It\u0027s been lightly tested\nwhich is why it\u0027s not currently exposed via --help.\n\nWhen people opt-in to worktrees in an existing repo client checkout,\nno projects are migrated.  Instead, only new projects will use the\nworktree method.  This allows for limited testing/opting in without\nhaving to completely blow things away or get a second checkout.\n\nBug: https://crbug.com/gerrit/11486\nChange-Id: Ic3ff891b30940a6ba497b406b2a387e0a8517ed8\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/254075\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "56ce3468b4f2faa1cccfea01dc91e7db73fb3843",
      "tree": "ae5ef606503262f21ac53e336196bfb9975c98e2",
      "parents": [
        "02aa889ecd54d69fd6c3708d2e7f8654d57ac1e8"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Dec 04 19:30:48 2019 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 18:03:46 2020 +0000"
      },
      "message": "assume environment always accepts strings\n\nDifferent Python \u0026 OS versions have different environ behavior wrt\naccepted types \u0026 encoding.  Since we\u0027re migrating to be Python 3 only,\nlets change our code to assume strings always work as that\u0027s what the\nnewer Python 3 does.  This will fail under Python 2 for some env vars,\nmostly on Windows, but the effort of maintaining shim layers that can\nhandle these edge cases isn\u0027t worth it when we\u0027re dropping that code.\n\nWe leave the logic in the `repo` launcher for now as it is simple, and\nwe want it to be able to switch versions a bit longer than the rest of\nthe tree.\n\nHere\u0027s the support table:\n          |    *NIX      |         Windows           |\n Python 2 | ASCII string | str or bytes, not unicode |\n Python 3 | str or bytes | str only                  |\n\nWindows uses strings natively in its environment all the time.  But it\ndoesn\u0027t allow unicode strings under Python 2, so we have to encode.\n\nPython 2 on *NIX is funky in that it always lowers to ASCII, so we had\nto manually encode to avoid errors regardless of unicode or str.\n\nPython 3 on Windows \u0026 *NIX will accept strings.  *NIX will also accept\nbytes but Windows will not.\n\nBug: https://crbug.com/gerrit/12145\nChange-Id: I3cf8f95a06902754ea1f08ad4b28503f7063531b\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/248972\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: Michael Mortensen \u003cmmortensen@google.com\u003e\nReviewed-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "02aa889ecd54d69fd6c3708d2e7f8654d57ac1e8",
      "tree": "56c2eb1940402e6a1355ca9032d27ed6806532e6",
      "parents": [
        "819cc81c57848a1b2331c603c036547fad6caa75"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 02:32:52 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 16:04:14 2020 +0000"
      },
      "message": "upload: add support for --yes\n\nThis adds a CLI option to the existing autoupload gitconfig knob that\nallows people to automatically answer \"yes\" to the various prompts.\n\nBug: https://crbug.com/gerrit/12368\nChange-Id: I819ebca01b9a40240b33866ae05907c7469703e3\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/255892\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "819cc81c57848a1b2331c603c036547fad6caa75",
      "tree": "77757cc8a44d0d9d7fef774b3bb0816a7ba64b93",
      "parents": [
        "84685ba1875db265051cdd043d5dba768c7c42e5"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 02:27:22 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Feb 19 08:32:12 2020 +0000"
      },
      "message": "upload: add support for standard --dry-run\n\nChange-Id: I69ea2f3170ba17bfb9e0e3771db4ecc66a736797\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/255856\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "84685ba1875db265051cdd043d5dba768c7c42e5",
      "tree": "426cb29f23da77aac700bce1c08cba935d6f96aa",
      "parents": [
        "72ebf19e52e7c4b270e40ba07fec1048b3612797"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 02:22:22 2020 -0500"
      },
      "committer": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 08:31:18 2020 +0000"
      },
      "message": "upload: add support for setting hashtags\n\nThis allows users to specify custom hashtags when uploading, both via\nthe CLI and via the same gitconfig settings as other upload options.\n\nBug: https://crbug.com/gerrit/11174\nChange-Id: Ia0959e25b463e5f29d704e4d06e0de793d4fc77c\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/255855\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\n"
    },
    {
      "commit": "72ebf19e52e7c4b270e40ba07fec1048b3612797",
      "tree": "2543c616eaae25fca8bc198dd2dac4f1142de6fa",
      "parents": [
        "e50b6a7c4f0a0cf3a97c8a1eec835156f68539f8"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 01:20:18 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Feb 19 08:23:04 2020 +0000"
      },
      "message": "command: add a `repo help` tip to --help output\n\nFor people used to running `repo xxx --help`, they might not realize\nthat there are detailed man pages behind `repo help xxx`.  Add a note\nto all --help commands to improve discoverability.\n\nChange-Id: I84af58aa0514cc7ead185f6c2534a8f88e09a236\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/255853\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    },
    {
      "commit": "e50b6a7c4f0a0cf3a97c8a1eec835156f68539f8",
      "tree": "cc17ed606d928bea9f7f9f0f23339a15d063b787",
      "parents": [
        "8a98efee5ceffcdbe952101e5b4126531cb0bd7e"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@google.com",
        "time": "Wed Feb 19 01:45:48 2020 -0500"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@collab.net",
        "time": "Wed Feb 19 08:01:40 2020 +0000"
      },
      "message": "project: handle verbose with initial clone bundle\n\nIf we\u0027re not in --verbose mode with repo sync, then omit the\nper-project clone bundle progress bar.\n\nBug: https://crbug.com/gerrit/11293\nChange-Id: Ibdf3be86d35fcbccbf6788c192189f38c577e6e9\nReviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/255854\nTested-by: Mike Frysinger \u003cvapier@google.com\u003e\nReviewed-by: David Pursehouse \u003cdpursehouse@collab.net\u003e\n"
    }
  ],
  "next": "8a98efee5ceffcdbe952101e5b4126531cb0bd7e"
}
