)]}'
{
  "log": [
    {
      "commit": "62cfd87a6d2f75a92a0b3fb5629387730859aa09",
      "tree": "7d232c4c9acb62c39c77bd26bfa390e6fa104736",
      "parents": [
        "f8e8ada171c74085dd5ac222e08e5067d1858ce4"
      ],
      "author": {
        "name": "Chris Poucet",
        "email": "poucet@google.com",
        "time": "Mon Jan 15 16:00:24 2024 +0000"
      },
      "committer": {
        "name": "Chris Poucet",
        "email": "poucet@google.com",
        "time": "Mon Jan 15 16:00:24 2024 +0000"
      },
      "message": "Delete gerrit/zoekt.\n\nThe source-code is hosted on https://github.com/sourcegraph/zoekt\n\nChange-Id: Icb6e8dd6d9479fe8f78b6868e90f28e508bd2e2b\n"
    },
    {
      "commit": "f8e8ada171c74085dd5ac222e08e5067d1858ce4",
      "tree": "b9ebaf7cafafd46f19d5b189beb125d50579d26c",
      "parents": [
        "f7d54faa261b31f7258a2d1291531ebd89ce8ee5"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Mon Nov 08 15:56:52 2021 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Mon Nov 08 15:56:52 2021 +0200"
      },
      "message": "Add notice in README pointing to sourcegraph/zoekt\n\nChange-Id: I132d0b816c337be8ee7b1ded6087c9d6b8469efd\n"
    },
    {
      "commit": "f7d54faa261b31f7258a2d1291531ebd89ce8ee5",
      "tree": "4e8e8bd242c88d4fddc3a6f2521789314b0ce239",
      "parents": [
        "fcc0c9ab67c5e237fa886ef7a105d96c1b264d27"
      ],
      "author": {
        "name": "Ryan Hitchman",
        "email": "hitchman@sourcegraph.com",
        "time": "Sat Aug 21 14:48:08 2021 -0600"
      },
      "committer": {
        "name": "Ryan Hitchman",
        "email": "hitchman@sourcegraph.com",
        "time": "Wed Sep 29 12:50:36 2021 -0600"
      },
      "message": "toc: modify disk format to include names for backwards/forwards compatiblity.\n\nIncluding section names in the table of contents permits simpler\nforwards and backwards compatibility. Instead of having to bump\nthe entire IndexFormatVersion when a new section is added, there is\nsimply a new section present in the table of contents.\n\nOlder versions can read TOCs with unknown sections and skip over them\nwith a warning. This is useful to permit downgrades without always\nrequiring a reindex.\n\nNewer versions can read TOCs from older version with missing sections\nand handle them gracefully, by checking for empty sections when loading\nan index file and implementing whatever fallback code is necessary.\n\nSection evolution is possible by having a new name for a tagged section,\nadding the old section to the CompatibilityList, and writing the\nconversion code when loading the file, or modifying the users of the\nsection to use whichever one is loaded.\n\nChange-Id: I9aa05f29eb9d64fd0fff218f008d2031f1a15c8c\n"
    },
    {
      "commit": "fcc0c9ab67c5e237fa886ef7a105d96c1b264d27",
      "tree": "3b7d241de1b595a591aab22ca7fdc9616d7d7698",
      "parents": [
        "88436ac05ffdb586e65d18461c7c13c4bc33de9b"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Thu Aug 19 10:45:41 2021 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Thu Aug 19 10:47:12 2021 +0200"
      },
      "message": "doc: note on distro support for ctags with seccomp\n\nChange-Id: Id6d8a2fdb6d59480ffb1ec38e123bce20e9c51d2\n"
    },
    {
      "commit": "88436ac05ffdb586e65d18461c7c13c4bc33de9b",
      "tree": "476cc59a489926a860918e184bf2d136c5e91836",
      "parents": [
        "b214ed5aae784a99b695a076dd4db493f95d28ed"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Thu Aug 12 11:41:39 2021 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Aug 17 10:31:50 2021 +0200"
      },
      "message": "shards: log a summary of shards in toLoad\n\nWe don\u0027t log every shard we load due to logspam on startup. However,\nwhile zoekt-webserver is running it is useful to see more detailed\ninformation since we are normally only loading a small number of shards\nat a time.\n\nThis commit strikes a balance by only logging 5 of the shard names in\nthe list of shards to load.\n\nAdditionally for the unloading log line we only mention the base of the\npath since it should always be in the indexdir.\n\nChange-Id: I444a594cf5ea3359772b5f42651ee860b2a0fc1f\n"
    },
    {
      "commit": "b214ed5aae784a99b695a076dd4db493f95d28ed",
      "tree": "6c7c825205bc77712f2daa8a1d5441017de33710",
      "parents": [
        "1b03f8a223fb2637c2071772a3b7d98ecd8ee2b2"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Aug 05 11:12:55 2021 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Aug 05 11:19:27 2021 +0200"
      },
      "message": "gitindex: add test for indexing an empty repo\n\nChange-Id: I061544bec28823d2266456d92d4150c0adf21877\n"
    },
    {
      "commit": "1b03f8a223fb2637c2071772a3b7d98ecd8ee2b2",
      "tree": "fb9d538bd8f07c7796cdadeeb0b010ae6d38c704",
      "parents": [
        "e056565d5231c2af4b7ad579ba4720420bd2cb57"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Aug 05 11:18:18 2021 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Aug 05 11:19:22 2021 +0200"
      },
      "message": "gitindex: set initial branch explicitly\n\nLocal settings may set the default to \"main\" for the initial branch,\nleading to spurious test failures.\n\nChange-Id: Ia23b8e837265503b1f0b64982b8b95f7ab7c02aa\n"
    },
    {
      "commit": "e056565d5231c2af4b7ad579ba4720420bd2cb57",
      "tree": "4cf8edefb398ddc88a2aeb9dbec3fa2c360720b3",
      "parents": [
        "5118231428f3b0ff69b0455f909573c65248586d"
      ],
      "author": {
        "name": "Ryan Hitchman",
        "email": "hitchman@sourcegraph.com",
        "time": "Wed Aug 04 00:42:16 2021 -0600"
      },
      "committer": {
        "name": "Ryan Hitchman",
        "email": "hitchman@sourcegraph.com",
        "time": "Wed Aug 04 01:39:19 2021 -0600"
      },
      "message": "eval: fix bug where /(foo){2,}/ was equivalent to /foo/\n\nregexpToMatchTreeRecursive was incorrectly dropping ignoring repeat\ndirectives for two or more matches and reporting that the simplified\nmatch tree was still identical, yielding incorrect results.\n\nChange-Id: I4f05767aea05d402b293681feec2e9e0a6a3e09a\n"
    },
    {
      "commit": "5118231428f3b0ff69b0455f909573c65248586d",
      "tree": "57db8cdc4753596b08440b8d74daffc5760dc6bf",
      "parents": [
        "0a98eeed9b5869fbe2a7c7aefb37d147d3715f01"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Wed Jul 21 17:20:02 2021 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Wed Jul 21 17:20:02 2021 +0200"
      },
      "message": "indexbuilder: remove subrepo branch validation\n\nIt is deadcode and has been for a long time. The last attempt to revive\nit broke uses of subrepo.\n\nChange-Id: Ie8570598d1244320fa5fe0472b1eb212d4892b53\n"
    },
    {
      "commit": "0a98eeed9b5869fbe2a7c7aefb37d147d3715f01",
      "tree": "708e2fbce9b251ae0ca719ac27f2fbbea2484d87",
      "parents": [
        "253a9c52c3f10110a93ee75474c1df8d3b4fe914"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jul 20 22:03:08 2021 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jul 20 22:03:08 2021 +0200"
      },
      "message": "indexbuilder: avoid writing root in SubRepoMap\n\nWe currently duplicate the root Repository under SubRepoMap[\"\"]. From\nwhat I can tell this is unnecessary since we never read it. The only\nread path for subRepoPaths never read the root SubRepoMap (it checked\nsubRepoID \u003e 0).\n\nIndexBuilder now avoids marshalling out the root in\nSubRepoMap. Additionally when reading we ignore the root SubRepoMap for\nbackwards compatibility.\n\nChange-Id: I4455ed1019b1ae3debce789da51c5e009c7058c5\n"
    },
    {
      "commit": "253a9c52c3f10110a93ee75474c1df8d3b4fe914",
      "tree": "4687e5fe8348f89e5cadeb4fb38ee0619cdda374",
      "parents": [
        "d5ee8b074530f291e1173f8e79f7fcdb4d972cc5"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Thu May 27 10:23:40 2021 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jul 13 11:01:41 2021 +0200"
      },
      "message": "index: pre-allocate size of ngram map\n\nWe know the number of entries we will add to the ngram maps. By\nspecifying the go runtime can avoid over allocating as it grows. Locally\non a small corpus this reduced the map byte size by 15%.\n\nCo-authored-by: Stefan Hengl \u003cstefan@sourcegraph.com\u003e\nChange-Id: I060e7aa12db726b093e7971ec6bc54ce193ec405\n"
    },
    {
      "commit": "d5ee8b074530f291e1173f8e79f7fcdb4d972cc5",
      "tree": "3c50665241a44ec5ff806deffeed512760a31f4b",
      "parents": [
        "68ffcf060d8ab341ad5d7e6e3eef0a3961073ab0"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Wed May 26 16:43:26 2021 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jul 13 10:59:34 2021 +0200"
      },
      "message": "index: read in ngrams in own function\n\nOur heap profiles are dominated by readIndexData. By moving some of the\nwork into its own functions, the heap profiles will tell us where in\nparticular data is allocated from. We suspect most data is from\nreadNgrams, but want to confirm emperically.\n\nCo-authored-by: Stefan Hengl \u003cstefan@sourcegraph.com\u003e\nChange-Id: I85cb05f27ac2c2d9135c816173a8a97cea6a706b\n"
    },
    {
      "commit": "68ffcf060d8ab341ad5d7e6e3eef0a3961073ab0",
      "tree": "f90bd2a65aa757ba01997570421672fcc367d8e8",
      "parents": [
        "0d5782d46e32eb9064d51e4955a02950bc1d66aa"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Fri Jun 25 11:13:01 2021 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Jul 08 09:51:47 2021 +0000"
      },
      "message": "web: serve robots.txt, disallowing /search\n\nThe example queries on the entry page are not limited by repository,\nso they may touch a large amount of memory. For public servers,\navoiding robots may increase availability. Anecdotally, cs.bazel.build\nis having fits of crashing, ostensibly caused by crawlers overloading\nthe search engine\n\nChange-Id: I4417c9389ce57f4d5ebee7695397e20540d15779\n"
    },
    {
      "commit": "0d5782d46e32eb9064d51e4955a02950bc1d66aa",
      "tree": "6fb5381f3645642b896688e9f5db42ba09bb7d8f",
      "parents": [
        "57d69c7edd4d330929f91e6573f1ec9c81caadb7"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri Jul 02 11:05:16 2021 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri Jul 02 11:05:46 2021 +0200"
      },
      "message": "Revert \"add back subrepo branch validation\"\n\nThis reverts commit c09f4eb6d5c9fb700b135de323f29d26ed9aa756.\n\nChange-Id: Ifac7d7d1ecbac6abffa07ee95db403410ff93b11\n"
    },
    {
      "commit": "57d69c7edd4d330929f91e6573f1ec9c81caadb7",
      "tree": "bbd03689fe68e141aa88b94660e08d624f225df4",
      "parents": [
        "c09f4eb6d5c9fb700b135de323f29d26ed9aa756"
      ],
      "author": {
        "name": "Stefan Hengl",
        "email": "stefan.hengl@gmail.com",
        "time": "Fri Jun 18 17:17:14 2021 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue Jun 29 14:56:57 2021 +0000"
      },
      "message": "docMatchTree: compute document ids lazily\n\nInstead of precomputing all document ids for a docMatchTree, we compute\nthem lazily based on a predicate.\n\nChange-Id: I3acf414f6bb18fc1d71f2cde2bdc784c3dd984b3\n"
    },
    {
      "commit": "c09f4eb6d5c9fb700b135de323f29d26ed9aa756",
      "tree": "34358aabe775c0243f0c99b350ad4bab0e3ae3e0",
      "parents": [
        "8d919baff972610a8eb4d57bf738d8f159bf8941"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Mon Jun 21 23:24:53 2021 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jun 22 10:41:29 2021 +0200"
      },
      "message": "add back subrepo branch validation\n\nThis condition is checked, but no action is ever taken if branchEqual is\nfalse. The error seems to have been lost during the refactor in\nId5671685ec65c3b52ba35c9b2f4c66fb0558a82b. This commit adds it back.\n\nChange-Id: Iac19da9ebdb79e62127b7f1950a429f2a466636b\n"
    },
    {
      "commit": "8d919baff972610a8eb4d57bf738d8f159bf8941",
      "tree": "c7bd169535e689ee0cf4d24d13c4f766c2caf904",
      "parents": [
        "43b32ad40b09b4f4a48592f0a97227b8eb78d899"
      ],
      "author": {
        "name": "Ryan Hitchman",
        "email": "hitchman@sourcegraph.com",
        "time": "Wed Mar 17 10:51:32 2021 -0600"
      },
      "committer": {
        "name": "Ryan Hitchman",
        "email": "hitchman@sourcegraph.com",
        "time": "Wed Jun 09 13:59:04 2021 -0600"
      },
      "message": "Support ** for LargeFiles patterns.\n\nThis is done by simply changing from filepath.Match to\ndoublestar.PathMatch. A few minor tests are included.\n\nThe only syntax change is that ** now matches any number of directories,\nso \"**/*.lock\" will match a file with a \"lock\" extension anywhere in the\npath. Since \"**\" had no special meaning before, this change should not\ncause any surprising changes.\n\nChange-Id: Ifbbc8227fa235372521cfbe517ce338920091eef\n"
    },
    {
      "commit": "43b32ad40b09b4f4a48592f0a97227b8eb78d899",
      "tree": "8a27cb23f9b0d343660544863b55253f34ccb28c",
      "parents": [
        "0314dee638e2b18be32ff3cc81efc2d4d4fc9f2f"
      ],
      "author": {
        "name": "Son Luong Ngoc",
        "email": "sluongng@gmail.com",
        "time": "Sun May 23 18:14:47 2021 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue May 25 10:33:30 2021 +0000"
      },
      "message": "gitindex/index.go: fix func name in godoc\n\nChange-Id: I35d0a86e370bab5296873987bde081a476efc404\n"
    },
    {
      "commit": "0314dee638e2b18be32ff3cc81efc2d4d4fc9f2f",
      "tree": "59bf36f9a2087506d3e884aa9744793b8f79c4de",
      "parents": [
        "fd1d0fdc9446512022c7e4f481f0466c4b8e1133"
      ],
      "author": {
        "name": "Son Luong Ngoc",
        "email": "sluongng@gmail.com",
        "time": "Sun May 23 18:13:59 2021 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue May 25 10:33:12 2021 +0000"
      },
      "message": "gitindex/index.go: rename unused variables\n\nChange-Id: Id2ce7598b6afd52c2455f5c3233103474e5a37d5\n"
    },
    {
      "commit": "fd1d0fdc9446512022c7e4f481f0466c4b8e1133",
      "tree": "d6d416c4bf2421b66076306e7bb043a2f6d81e20",
      "parents": [
        "9239cf5254b80013178d9d16e0fe3f2d5f378818"
      ],
      "author": {
        "name": "Son Luong Ngoc",
        "email": "sluongng@gmail.com",
        "time": "Sun May 09 23:30:19 2021 +0200"
      },
      "committer": {
        "name": "Son Luong Ngoc",
        "email": "sluongng@gmail.com",
        "time": "Sun May 09 23:30:19 2021 +0200"
      },
      "message": "gitindex/index.go: inline isMissingBranchError\n\nSince isMissingBranchError is only used in one place, inline the func.\nAlso only handle AllowMissingBranch check when err occur.\n\nChange-Id: I9d629df5bfebd9254a88203669c03f4eae840ab1\n"
    },
    {
      "commit": "9239cf5254b80013178d9d16e0fe3f2d5f378818",
      "tree": "3ab04d5a521eec1ef10af5a4182c9fde6d09ff93",
      "parents": [
        "1b4f58eae39c5fbe27007e085f85405ac9ebf6d9"
      ],
      "author": {
        "name": "Son Luong Ngoc",
        "email": "sluongng@gmail.com",
        "time": "Sun May 09 23:11:05 2021 +0200"
      },
      "committer": {
        "name": "Son Luong Ngoc",
        "email": "sluongng@gmail.com",
        "time": "Sun May 09 23:11:05 2021 +0200"
      },
      "message": "gitindex/index.go: replaced usage of configLookupString\n\nThis utility func exists in go-git as a method of Options struct.\nSwitch to using the provided method instead of custom func to simplify\nthe code.\n\nChange-Id: I44518f37273ac1e8af5f70175a5261d5a9c81614\n"
    },
    {
      "commit": "1b4f58eae39c5fbe27007e085f85405ac9ebf6d9",
      "tree": "0393e02611c1b24b4032e6481e7dabbaa8269089",
      "parents": [
        "44a5ef918dc2c06d5c42d4db4088cfcd8caaaf36"
      ],
      "author": {
        "name": "Son Luong Ngoc",
        "email": "sluongng@gmail.com",
        "time": "Tue Apr 27 00:12:26 2021 +0200"
      },
      "committer": {
        "name": "Son Luong Ngoc",
        "email": "sluongng@gmail.com",
        "time": "Tue Apr 27 00:12:26 2021 +0200"
      },
      "message": "mirror-gerrit: remove redundant declarations\n\nThis was found when running staticcheck over the Zoekt codebase.\n\n\u0027page\u0027 was init outside the for loop but the value is immediately\noverwritten by the value returned by gerrit client.\nValue of \u0027page\u0027 is not used outside of the for loop so let\u0027s move the\ndeclarations inside.\n\nChange-Id: Ie449814864a5bcdaca7cc4297117c68d0e524f2e\n"
    },
    {
      "commit": "44a5ef918dc2c06d5c42d4db4088cfcd8caaaf36",
      "tree": "6502eafe49aa87adbbf6780978018db6f015edf1",
      "parents": [
        "816dc9b59e2b952c674ffcdbeebe8652cd72c124"
      ],
      "author": {
        "name": "Son Luong Ngoc",
        "email": "sluongng@gmail.com",
        "time": "Mon Apr 26 21:37:07 2021 +0200"
      },
      "committer": {
        "name": "Son Luong Ngoc",
        "email": "sluongng@gmail.com",
        "time": "Mon Apr 26 23:58:04 2021 +0200"
      },
      "message": "update dependencies\n\nRan: `go get -u -t . \u0026\u0026 go mod tidy \u0026\u0026 go test ./...` to update all\ndependencies and verified that all tests passed.\n\nChange-Id: Ic85705907200e4ffc77e9da6849539a1f1774975\n"
    },
    {
      "commit": "816dc9b59e2b952c674ffcdbeebe8652cd72c124",
      "tree": "5f2e76833948d52cfd373e7a728ad592e2da7596",
      "parents": [
        "d92b3b80e582e735b2459413ee7d9dbbf294d629"
      ],
      "author": {
        "name": "Son Luong Ngoc",
        "email": "sluongng@gmail.com",
        "time": "Mon Apr 26 21:29:13 2021 +0200"
      },
      "committer": {
        "name": "Son Luong Ngoc",
        "email": "sluongng@gmail.com",
        "time": "Mon Apr 26 23:57:24 2021 +0200"
      },
      "message": "Format with gofumpt\n\nImprove overall formatting by running `gofumpt -w .`\n\nChange-Id: I53da7e8c42b518c0719216ac20a0c176cd9addd5\n"
    },
    {
      "commit": "d92b3b80e582e735b2459413ee7d9dbbf294d629",
      "tree": "de8c3817badc2f1b42bb101eb32170da663770da",
      "parents": [
        "1b04f75645d067232d26f6e81fbd533613efa28e"
      ],
      "author": {
        "name": "Stefan Hengl",
        "email": "stefan.hengl@gmail.com",
        "time": "Wed Mar 17 15:13:03 2021 +0100"
      },
      "committer": {
        "name": "Stefan Hengl",
        "email": "stefan.hengl@gmail.com",
        "time": "Wed Mar 17 16:24:59 2021 +0100"
      },
      "message": "RepoStats: set default shard count to 1\n\nCurrently, Zoekt always reports 0 shards even if a repository has more\nthan 1 shard.\n\nThe reason is that `shardedSeacher.List` aggregates stats by calling\n`Stats.Add` while looping over shards. However, since shards have a\ndefault shard count of 0, the shard count never changes.\n\nChange-Id: I06ca00952240a21cd27581055169683366562be8\n"
    },
    {
      "commit": "1b04f75645d067232d26f6e81fbd533613efa28e",
      "tree": "7ad97b830b547c084ed4e5e5c7cd9139cfb25569",
      "parents": [
        "031d44576f1fc0d6cfa9214d7e0155b2414d53f8"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Feb 23 13:41:25 2021 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Feb 23 13:41:25 2021 +0200"
      },
      "message": "shards: export DirectoryWatcher\n\nPreviously we exported the interface Stopper from\nNewDirectoryWatcher. However, the only implementation of it was\nshardWatcher. So instead we just export that and return it.\n\nChange-Id: Ide01ff5568e686bfff55e1119facd5f50f627724\n"
    },
    {
      "commit": "031d44576f1fc0d6cfa9214d7e0155b2414d53f8",
      "tree": "b275fd55e72d734d10745d509f42b0f3c2b86c4a",
      "parents": [
        "217568b78b544d81d789b0ae9b7e7848d6ac5db0"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Feb 23 12:13:03 2021 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Feb 23 13:12:03 2021 +0200"
      },
      "message": "shards: wait for watcher to stop when closing\n\nPreviously we never shutdown the shardWatcher. This meant that when\nclosing shardedSearcher, the shardWatcher would still interact with it\nif it noticed shards changing. This can happen in practice but is\nrare. It can more easily be triggered by running e2e tests which cleanup\nthe index files.\n\nChange-Id: I372e9f1723485ae092d82f0502deb64b4b3c976f\n"
    },
    {
      "commit": "217568b78b544d81d789b0ae9b7e7848d6ac5db0",
      "tree": "87277c7aa47c8305acd87bb01bd2dfe11de41527",
      "parents": [
        "cd15fd3c7944a08426b47609702005580e46d58d"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Feb 23 11:50:35 2021 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Feb 23 12:17:32 2021 +0200"
      },
      "message": "shards: clear out shards map when closing\n\nIf something calls the sharded searcher after closing it will lead to a\npanic since shards will have shards which are closed. In practice this\ncan happen with the directory watcher. The issue with the directory\nwatcher is fixed in a later commit.\n\nChange-Id: I11a2300ff9ffc41f3be94ebb550b16c6c68ac59b\n"
    },
    {
      "commit": "cd15fd3c7944a08426b47609702005580e46d58d",
      "tree": "b625d3d7b57cf885d6923777c011e2bacd99c75b",
      "parents": [
        "9b867fb6188e91f3b2cd04921acc919f648a4152"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Feb 23 12:04:27 2021 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Feb 23 12:17:32 2021 +0200"
      },
      "message": "zoekt-archive-index: disable log in tests unless verbose\n\nWas running this test a lot and the log output was spammy.\n\nChange-Id: I8cb4fe7ad9372abbb1cf9f46edddeadb2584b55b\n"
    },
    {
      "commit": "9b867fb6188e91f3b2cd04921acc919f648a4152",
      "tree": "8c7966fc6997f1a4695ba66798001659a47fbdc1",
      "parents": [
        "1539ef83faa632f08d947a67e2c017dc049e1813"
      ],
      "author": {
        "name": "Stefan Hengl",
        "email": "stefan.hengl@gmail.com",
        "time": "Fri Oct 23 17:20:20 2020 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Nov 19 16:23:21 2020 +0000"
      },
      "message": "Use newline index for regexp content searches\n\nFor content searches trying to match multiple terms on the same line, we\ncheck whether the matches of the individual terms intersect before\ncalling the regex engine. If they don\u0027t intersect, we skip the document.\n\nThis optimisation is useful whenever terms of the query appear often in\nthe same document but rarely on the same line.\n\nThe table below shows latencies of search queries of master vs.\nthis change on a set of medium-sized repos. All latencies are\nreported in ms.\n\n+-------------------------+-------------+-----------------+-----------+\n| Query                   | Master (ms) | Patchset 7 (ms) | Delta (%) |\n+-------------------------+-------------+-----------------+-----------+\n| (func).*?(rtoorg)       | 21.43       | 2.67            | 87.56     |\n+-------------------------+-------------+-----------------+-----------+\n| (func).*?(bool).*?(bar) | 723.60      | 170.1           | 76.49     |\n+-------------------------+-------------+-----------------+-----------+\n| (func).*?(bool).*?      | 1320        | 186.2           | 85.89     |\n| (int32).*?(error)       |             |                 |           |\n+-------------------------+-------------+-----------------+-----------+\n| (func).*?(return)       | 236.97      | 73.73           | 68.88     |\n+-------------------------+-------------+-----------------+-----------+\n| (config).*?(override)   | 827.90      | 328.67          | 60.30     |\n+-------------------------+-------------+-----------------+-----------+\n\nChange-Id: Ic4e4c3e7a4ad61ec56efada35a70aa14d0766ff7\n"
    },
    {
      "commit": "1539ef83faa632f08d947a67e2c017dc049e1813",
      "tree": "8a5f8bd3c5694add0401e63dc1b933675897e7cf",
      "parents": [
        "a75291ac202e088f8edf20ab57f724b49f2f4faf"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue Nov 17 19:33:49 2020 +0100"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue Nov 17 19:34:34 2020 +0100"
      },
      "message": "cmd/zoekt-hg-index: barebones mercurial indexing\n\nChange-Id: I42063215dfe913944bfed4ddea313a2394179b73\n"
    },
    {
      "commit": "a75291ac202e088f8edf20ab57f724b49f2f4faf",
      "tree": "dfc6f4d5a990d4d7028995e4e8acc98843cde736",
      "parents": [
        "3c99d42f219c1d7c1d11728f7587324543cf6150"
      ],
      "author": {
        "name": "Ed Babcock",
        "email": "ed@edbabcock.com",
        "time": "Sat Mar 28 16:12:23 2020 -0500"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Sep 17 10:28:08 2020 +0000"
      },
      "message": "mirror-bitbucket-server: use TLS by default\n\nChange-Id: I0c3eb10b0a328597582548ace3055952ad62cb9e\n"
    },
    {
      "commit": "3c99d42f219c1d7c1d11728f7587324543cf6150",
      "tree": "1d6f3f7e66d2413e824d4c544fcdd43408a591af",
      "parents": [
        "8df90ab93cf919cb6f460a3f404da8ec4130e1dc"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Wed Sep 09 12:34:03 2020 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Wed Sep 09 12:34:03 2020 +0200"
      },
      "message": "write: exact allocation for newLinesIndices\n\nMinor change which makes the function slightly slower, but use much less\nmemory / allocations. A benchmark on a medium sized repo showed this\nfunction was 4% slower, but 60% less memory allocated. This is a minor\npart of indexing so is likely not noticeable. However, was a quick\nwin.\n\nCan also update the algorithm to use bytes.IndexByte. However, that code\nis more tricky and this function doesn\u0027t contribute much time indexing.\n\nChange-Id: I2e0f037878db08055c1b7d092667a53a0715c0d1\n"
    },
    {
      "commit": "8df90ab93cf919cb6f460a3f404da8ec4130e1dc",
      "tree": "ed58a55137ab3234593a8a5323b21ec5699194b2",
      "parents": [
        "d2a0ffb913115ead8afc8dbe35e230cb665590ad"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Aug 27 12:31:05 2020 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Aug 27 12:31:05 2020 +0200"
      },
      "message": "build: filter out CTags setting from flag parse test\n\nThe CTags default value depends on $PATH, and whether ctags is\ninstalled.\n\nChange-Id: I3e6fd9d5e69ddbe37120eb0cab9c3f1208184dac\n"
    },
    {
      "commit": "d2a0ffb913115ead8afc8dbe35e230cb665590ad",
      "tree": "fbaccb8f7bf09d2a73c5a00d14a19f0acbd3836a",
      "parents": [
        "68f6f793740ae82802f6aadebb25dee0686942a0"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed Aug 26 12:55:30 2020 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed Aug 26 13:17:06 2020 +0200"
      },
      "message": "cmd/zoekt-indexserver: delete tmp files after indexing\n\nThese otherwise accumulate, causing indexing failures.\n\nChange-Id: I0693a8359fdb31eb042d37bb71f4519609c8047b\n"
    },
    {
      "commit": "68f6f793740ae82802f6aadebb25dee0686942a0",
      "tree": "0270c22256df42bdb817bb17af4e244bb1647645",
      "parents": [
        "b48e35d16e83ef9f751e8da712ba89d7e07923bf"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed Aug 26 12:47:01 2020 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed Aug 26 13:17:06 2020 +0200"
      },
      "message": "build: name temp files as *.tmp\n\nChange-Id: I83791dc61510c9ef4b9635e7366afb2b7540941b\n"
    },
    {
      "commit": "b48e35d16e83ef9f751e8da712ba89d7e07923bf",
      "tree": "f1ce9a05e01883bbbd22ff26d33e1fd3254f63c5",
      "parents": [
        "4481f7bb7c346375d92b579dddf80d5ce53e66dc"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Mon Jul 20 11:50:54 2020 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Mon Jul 20 11:50:54 2020 +0200"
      },
      "message": "shards: a progress message every 10s when loading\n\nA zoekt-webserver does not start listening until it has loaded all\nshards. In some cases (eg misconfigured IO) the startup time can be very\nlarge. This commit adds a progress message so admins can understand what\nis going on.\n\nChange-Id: I997543ce4204f1de48f4071f635668b70c299bb4\n"
    },
    {
      "commit": "4481f7bb7c346375d92b579dddf80d5ce53e66dc",
      "tree": "95df4d7d389b33dbea881c7576bc7f9716572fee",
      "parents": [
        "b5d5c95a579c9550839df477090795d32c6c698b"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Mon Jul 20 11:44:28 2020 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Mon Jul 20 11:44:28 2020 +0200"
      },
      "message": "shards: throttle loading in watcher\n\nBy throttling in the watcher we can prevent spinning up N goroutines. On\nlarge instances when starting up N can be very large. Additionally since\nonly one \"scan\" is running at a time, we can move the throttle semaphore\nto a local variable.\n\nWe also rename throttledLoader to loader since it no longer does\nthrottling.\n\nChange-Id: Ifece1d85b4d40f5a331369b3a9d7566cf08ce5e8\n"
    },
    {
      "commit": "b5d5c95a579c9550839df477090795d32c6c698b",
      "tree": "e63cd054ceda5241c94d081ba459b9b0c35a9f2d",
      "parents": [
        "1ba953d33f4f4e27983ec030c5ba2820b5b6b8d4"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Jun 15 13:03:47 2020 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Jun 15 13:03:47 2020 +0200"
      },
      "message": "web: \u0027/\u0027 only focuses searchbox if it wasn\u0027t yet in focus\n\nFixes #109 \n\nChange-Id: I158c10409cc9a370c83fc2167e36826b3516cf44\n"
    },
    {
      "commit": "1ba953d33f4f4e27983ec030c5ba2820b5b6b8d4",
      "tree": "f0a6636128a05774a764a597db543364d1112b26",
      "parents": [
        "a0c8067426f6123170c7587c36727569e47e3589"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jun 02 11:57:49 2020 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jun 02 11:57:49 2020 +0200"
      },
      "message": "shards: ignore fsnotify.ErrEventOverflow\n\nChange-Id: I4c648f539f226be0e286083789d4e4e44376abc3\n"
    },
    {
      "commit": "a0c8067426f6123170c7587c36727569e47e3589",
      "tree": "adbfcd08479e392643b2b7cf7b03034f1cd16d26",
      "parents": [
        "9d90c1c4866f2426a4124c01eb25cd8dd1d407e3"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jun 02 11:50:56 2020 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jun 02 11:50:56 2020 +0200"
      },
      "message": "shards: consolidate events before calling scan\n\nWe call scan for each fsnotify event. However, multiple events may\nhappen during a single call to scan, leading to multiple needless calls\nto scan. Instead we can consolidate the events from fsnotify so we only\ncall scan if it isn\u0027t running, or only one more time if it is running.\n\nChange-Id: I7b8c3891a202c28357beb8e4bcf74a3c33b3faf0\n"
    },
    {
      "commit": "9d90c1c4866f2426a4124c01eb25cd8dd1d407e3",
      "tree": "68ddc25b8983369042d53007b0c6c931465604ae",
      "parents": [
        "aa0e6679c6866ed30cf6bd92286812c2d1449641"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri May 08 22:24:00 2020 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon May 11 10:40:35 2020 +0000"
      },
      "message": "gitindex: allocate buffer of correct size\n\nMinor optimization which will avoid the need to grow the intermediate\nbuffer used by ioutil.ReadAll.\n\nChange-Id: I7c06c041baeed27188b7d41a5bf04a2c48088a67\n"
    },
    {
      "commit": "aa0e6679c6866ed30cf6bd92286812c2d1449641",
      "tree": "72e58825eb74fbd86cf098e7953238eb50608032",
      "parents": [
        "b6829cd649950a83cb1c0fcd08f9524242e569bf"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri May 08 22:17:47 2020 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon May 11 10:40:30 2020 +0000"
      },
      "message": "zoekt: verbose flag prints shard metadata\n\nThis is a convenient way to look at the metadata for a shard. Now when\nyou run the zoekt command on a shard with the verbose flag we will log\nthe shard\u0027s metadata.\n\nChange-Id: I14a7711b0bcd7a8582fbf3e5cfa1caa5f3d6fe7a\n"
    },
    {
      "commit": "b6829cd649950a83cb1c0fcd08f9524242e569bf",
      "tree": "299896bf5fb02c03829bb9dc23942830d163a6f2",
      "parents": [
        "bc26cf14a14619915702d87ae9dc225a2cdc2d70"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri May 08 09:03:10 2020 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri May 08 09:07:23 2020 +0200"
      },
      "message": "build: handle nil Options in largeFilesFlag\n\nThe flag package may call the String method with a zero-valued receiver,\nsuch as a nil pointer. For example this happens when passing in the flag\n\"-help\", so this fixes a panic in that case. This was a panic introduced\nin 5dd4713 build: factor out build flags.\n\nChange-Id: I27e5b66637fe2f3ad8231baa3e5b355b579e052f\n"
    },
    {
      "commit": "bc26cf14a14619915702d87ae9dc225a2cdc2d70",
      "tree": "39ce4bb49d0855e07b0d8b7eeed2d4145814c684",
      "parents": [
        "3a0c63c685a6eb91e0ee1bf35b9f6c37fe4574cc"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue May 05 16:27:58 2020 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue May 05 16:29:09 2020 +0200"
      },
      "message": "build: test for Flags\n\nRan into a panic in a Sourcegraph test and I thought this was the\nproblem. I ended up narrowing the problem down to something Sourcegraph\nspecific. But in the process wrote this useful test.\n\nChange-Id: I7f2d5d48b840076106995b714d25f8eaa587a652\n"
    },
    {
      "commit": "3a0c63c685a6eb91e0ee1bf35b9f6c37fe4574cc",
      "tree": "d253ce2bc0b7fccb4e50c14610c3b2d08083e2a1",
      "parents": [
        "6a12018b3558c8dc021f307c3e2db2a6f829f897"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue May 05 12:06:48 2020 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue May 05 13:14:30 2020 +0000"
      },
      "message": "build: SetDefaults uses same defaults as cmd line\n\nCurrently SetDefaults uses different defaults to the command line for\nShardMax, SizeMax and Parallelism. We change it to use the same as the\ncommand line flags, since those are the effective defaults.\n\nChange-Id: I5278570a91c05e84800b1e772edc15cb7cd791c2\n"
    },
    {
      "commit": "6a12018b3558c8dc021f307c3e2db2a6f829f897",
      "tree": "e19945120980f0f49ef7ed4c3fe26bb419a61795",
      "parents": [
        "f53752c4173530ec141b369d6c7425574150c0d4"
      ],
      "author": {
        "name": "Asdine El Hrychy",
        "email": "asdine.elhrychy@gmail.com",
        "time": "Tue May 05 15:27:55 2020 +0400"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue May 05 13:10:41 2020 +0000"
      },
      "message": "Do not ignore large files.\n\nThis removes a condition that ignores large files in the zoekt-archive-index, preventing them from appearing in search results.\nIndexation of these files is still skipped in the index builder, only filepaths are recorded.\n\nChange-Id: I4250899e69f9577c42f5de81e0d5fcbcf322e263\n"
    },
    {
      "commit": "f53752c4173530ec141b369d6c7425574150c0d4",
      "tree": "8024257b34c89bf3b169550a9aced234394428f4",
      "parents": [
        "3a7bd0040160619709f4f93ceaf99302a54e368f"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue May 05 10:34:32 2020 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue May 05 10:54:09 2020 +0000"
      },
      "message": "build: move incremental decision into options\n\nCurrently build.Options returns a list of indexed versions. This is used\nin each command to decide if we should incrementally index. However, it\nhas been updated over time to also do extra checks for incremental\nindexing. If one of those checks fail, it returns nil to force the\nindexing.\n\nThis commit updates the function to encapsulate what we want, the\ndecision of should we index given the build options.\n\nChange-Id: I3a8b9073408cb785a299bc287af1e10570415c96\n"
    },
    {
      "commit": "3a7bd0040160619709f4f93ceaf99302a54e368f",
      "tree": "181e2ecd9639299ba954ef1b781663a08dc81485",
      "parents": [
        "ba74b6d718f1e176604b2b42bbbd86a06533b540"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue May 05 11:00:49 2020 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue May 05 10:51:20 2020 +0000"
      },
      "message": "all: migrate go-git to new package\n\ngo-git now lives at github.com/go-git/go-git. v5 exists to allow the\nmigration to the new location and is API compatible with v4 [1].\n\n[1]: https://github.com/go-git/go-git/releases/tag/v5.0.0\n\nChange-Id: If68ba927e38ae8ef81447f995e449994928f0cfa\n"
    },
    {
      "commit": "ba74b6d718f1e176604b2b42bbbd86a06533b540",
      "tree": "c5b1b8b6b5443c62146668568a9a7ca6e9d59e2f",
      "parents": [
        "5dd47134b5c134e3c308c74f13d21dfc7822572f"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue May 05 10:55:01 2020 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue May 05 10:47:28 2020 +0000"
      },
      "message": "gomod: set minimum version to go 1.13\n\nNew versions of go add this directive if it doesn\u0027t exist. So we should\nset one with the minimum version of go we want to support. I picked 1.13\nsince it was the first version to make go.mod support default.\n\nChange-Id: I539d1d8da43d96d86ca61a82a8f7e5d2c3cdbb06\n"
    },
    {
      "commit": "5dd47134b5c134e3c308c74f13d21dfc7822572f",
      "tree": "0122b1f9edcf4a0e3010f36fb71863c91f619054",
      "parents": [
        "4ff72d6d43fda30e996140e1c0a4746122829ca0"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue May 05 11:57:02 2020 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue May 05 10:38:18 2020 +0000"
      },
      "message": "build: factor out build flags\n\nWe currently have all flags related to build options defined in the cmd\npackage. These flags are as a side-effect to the CommandLine\nflagset. This commit factors it out into the build package and allows\nsetting it on a different flagset.\n\nThis is working towards creating command line arguments from a\nBuildOptions struct. This can be used by indexserver.\n\nChange-Id: Ibb711b3620d68571325d52f5507f99b7fab234e3\n"
    },
    {
      "commit": "4ff72d6d43fda30e996140e1c0a4746122829ca0",
      "tree": "fd8e797ae356902e6d4c9709f66cfcc06645ed12",
      "parents": [
        "9220fb21599266e64ef0af4f99d6206920ff8420"
      ],
      "author": {
        "name": "Asdine El Hrychy",
        "email": "asdine.elhrychy@gmail.com",
        "time": "Thu Apr 23 15:50:15 2020 +0400"
      },
      "committer": {
        "name": "Asdine El Hrychy",
        "email": "asdine.elhrychy@gmail.com",
        "time": "Thu Apr 30 11:17:25 2020 +0400"
      },
      "message": "Improve performance for concatened queries\n\nThis modifies the behaviour of the regexpToQuery method to make it return whether the generated query has the exact same behaviour as the original regexp.\nWhen that happens, the matchTree method skips creating a regexpMatchTree node, which prevents running the regex engine.\n\nChange-Id: I26532b238fb5f03f2d145fe7ca118ec9eb331b18\n"
    },
    {
      "commit": "9220fb21599266e64ef0af4f99d6206920ff8420",
      "tree": "cae9cfd2357e135e3c577bf49f34171caba35d0c",
      "parents": [
        "983e877dba55963e63ebabb4af4a2e5b8d7a2f03"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Feb 24 07:51:08 2020 +0100"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Apr 06 17:00:53 2020 +0000"
      },
      "message": "web: print name in file view\n\nChange-Id: If18c6711a0ba69b36e771bde7a35306e48c6718f\n"
    },
    {
      "commit": "983e877dba55963e63ebabb4af4a2e5b8d7a2f03",
      "tree": "286af2d4a45ff8fe92f424175e866b83e42ca8b0",
      "parents": [
        "77beb0fe608a1bd5f8561bfa16031868cedfe23d"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Fri Jan 31 11:24:28 2020 +0100"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Apr 06 17:00:53 2020 +0000"
      },
      "message": "web: focus on searchbox for \u0027/\u0027 keypress\n\nChange-Id: Idd9b88bac4371438e289bce8d6072e61381db9d0\n"
    },
    {
      "commit": "77beb0fe608a1bd5f8561bfa16031868cedfe23d",
      "tree": "bb0c2272016e07d11da29aa174183da68037ae06",
      "parents": [
        "b0c18f686b11d13a10f11b4e3e35297f426e9b1a"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Fri Apr 03 23:34:25 2020 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Apr 06 18:49:56 2020 +0200"
      },
      "message": "cmd/zoekt: support -l flag, for compatibility with grep\n\nChange-Id: Iabd3a189031e9f36a0c12961f208b2a1a1f3d412\n"
    },
    {
      "commit": "b0c18f686b11d13a10f11b4e3e35297f426e9b1a",
      "tree": "8b2e0b6d81a2c361abcc123e72afdd297bab383e",
      "parents": [
        "30af23a141986fe9f6f773b8d1208b576baa6a89"
      ],
      "author": {
        "name": "Denis Fortin",
        "email": "denis.fortin@adevinta.com",
        "time": "Tue Mar 24 18:28:55 2020 +0100"
      },
      "committer": {
        "name": "Denis Fortin",
        "email": "denis.fortin@adevinta.com",
        "time": "Fri Apr 03 00:59:11 2020 +0200"
      },
      "message": "zoekt-mirror-github: add arguments to filter repos on topics criteria\n\nAdded `topic` and `exclude_topic` options to the zoekt-mirror-github command.\nThese options are lists.\nGithub repositories are now filtered according to the topics they have.\n\n`topic` option will include only the repositories having at least on topic in the list.\n`exclude_topic` will exclude the repositories having at least one topic in the list.\nThe two options can be combined:\n`exclude_topic` filter is applied to repositories previously filtered with `topic`\n\nChange-Id: I8dceb805cd1aa5455a03c7d3cc425795a614f1f0\n"
    },
    {
      "commit": "30af23a141986fe9f6f773b8d1208b576baa6a89",
      "tree": "4700350510d4f7cf48e95f271d5426e63db36910",
      "parents": [
        "172db892e9a2c5e7833c6f2ca150fa0120c4437d"
      ],
      "author": {
        "name": "Denis Fortin",
        "email": "denis.fortin@adevinta.com",
        "time": "Mon Mar 30 16:21:27 2020 +0200"
      },
      "committer": {
        "name": "Denis Fortin",
        "email": "denis.fortin@adevinta.com",
        "time": "Tue Mar 31 18:53:17 2020 +0200"
      },
      "message": "build-deploy: use bash interpreter\n\nChange-Id: I23e139f6cbd98c360a3dadac611ad856e975fda2\n"
    },
    {
      "commit": "172db892e9a2c5e7833c6f2ca150fa0120c4437d",
      "tree": "bb3f6802d5d159a66e540227977822859c4e3924",
      "parents": [
        "ebb246887d7c0f9c9088440a1762f0337cde1484"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Mon Mar 16 13:57:18 2020 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue Mar 24 10:37:59 2020 +0000"
      },
      "message": "gitindex: remove ignoreMissingSubmodules field\n\nignoreMissingSubmodules is always true, so we can remove it.\n\nChange-Id: I42ffef55300a063d2bb502a2eae8f47c4f001706\n"
    },
    {
      "commit": "ebb246887d7c0f9c9088440a1762f0337cde1484",
      "tree": "09b2b9b90b692f84b455bc3a612fd0ee502350a7",
      "parents": [
        "e55b1e7b0d97fce3066a9d553e5a3b8567f47770"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri Mar 20 17:15:03 2020 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri Mar 20 17:17:51 2020 +0200"
      },
      "message": "gitindex: set git username and email in tests\n\nIf running in a clean environment (eg CI), the git may not have been configured\nwith a username or email yet. This leads to commits failing. We can set the\nusername and email just for the repository we want to commit in.\n\nChange-Id: Id85fb9799bc99231779eb0622aecdb4dab58b8c6\n"
    },
    {
      "commit": "e55b1e7b0d97fce3066a9d553e5a3b8567f47770",
      "tree": "7b0eac14183733c776a0d1f4bb7b9237546b52db",
      "parents": [
        "8a492e33f4d5de9778a94ae741e4a14aa5a71004"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Wed Mar 18 13:08:05 2020 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri Mar 20 08:31:41 2020 +0200"
      },
      "message": "shards: prometheus metrics for sharded search\n\nWe add several metrics and add the prometheus http handler to zoekt-webserver\nif pprof is enabled.\n\n- Gauges for number of running searches and lists.\n- Gauges for number of searches and lists within a shard.\n- Histogram for search duration.\n- Counter for number of search failures.\n- A counter per zoekt.Stats\n\nThe gauge should for searches should help with noticing a queue forming. The\ngauges in shards should be bounded, but are useful to understand load. The\nrest of the metrics are pretty straightforward.\n\nChange-Id: I24c55204a0e742479f9bae01301cc258289a4101\n"
    },
    {
      "commit": "8a492e33f4d5de9778a94ae741e4a14aa5a71004",
      "tree": "c62abb0732b57d62c23d50257e8ef2e5ecb50a1e",
      "parents": [
        "52baaad082fcfdf63c15dc14a43dbb0d08ef9838"
      ],
      "author": {
        "name": "Kevni",
        "email": "kprettre@gmail.com",
        "time": "Mon Mar 16 18:40:58 2020 +0100"
      },
      "committer": {
        "name": "Kevni",
        "email": "kprettre@gmail.com",
        "time": "Mon Mar 16 18:41:35 2020 +0100"
      },
      "message": "Handle pagination on gerrit project list API\n\nChange-Id: I74ee8c9d159780e77f34433cd6e9c732bd258811\n"
    },
    {
      "commit": "52baaad082fcfdf63c15dc14a43dbb0d08ef9838",
      "tree": "67080dfc857cc2211f5b8ac20643cc2371bfecc1",
      "parents": [
        "bf94827b699bb323b41eaf71cdcf57a3efc94e88"
      ],
      "author": {
        "name": "Kevni",
        "email": "kprettre@gmail.com",
        "time": "Fri Feb 28 16:27:16 2020 +0100"
      },
      "committer": {
        "name": "Kevni",
        "email": "kprettre@gmail.com",
        "time": "Mon Mar 16 18:41:35 2020 +0100"
      },
      "message": "Allow gerrit mirror to be defined in config\n\nindexserver cmd config file was not including Gerrit type\nmirror. It handles http basic auth in a CredentialPath entry\nand call zoekt-mirror-gerrit with the according flags.\n\nIt also implement gerrit default weblink implementation of\nGitiles (WebLink.Name \u003d browse)\n\nChange-Id: Ia2fd0921ad9fc4e11914fbc61f07fd9601980492\n"
    },
    {
      "commit": "bf94827b699bb323b41eaf71cdcf57a3efc94e88",
      "tree": "58c23d60e9fce48659d27d96220cb24a8a78c479",
      "parents": [
        "c215f933cf8312bfb042632c7082e9b173e15e23"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Thu Mar 12 14:57:17 2020 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Thu Mar 12 14:58:59 2020 +0200"
      },
      "message": "indexfile: use mmap on darwin\n\nWe can use mmap on darwin. I additionally renamed indexfile files to match the\nusual names used when differentiating between different build tags.\n\nChange-Id: Ie712ee0e7e3634a9bf4e0cb4fd9a0670c4846fc3\n"
    },
    {
      "commit": "c215f933cf8312bfb042632c7082e9b173e15e23",
      "tree": "36e730ebbd74ff06106c2f62f9877a63b7927d87",
      "parents": [
        "abd3a189031e9f36a0c12961f208b2a1a1f3d412"
      ],
      "author": {
        "name": "Kevni",
        "email": "kprettre@gmail.com",
        "time": "Fri Feb 28 16:27:08 2020 +0100"
      },
      "committer": {
        "name": "Kevni",
        "email": "kprettre@gmail.com",
        "time": "Fri Feb 28 16:27:08 2020 +0100"
      },
      "message": "Make all.bash 755\n\nChange-Id: Ib9007af2150288517f5ed961536f5eddbe9ce551\n"
    },
    {
      "commit": "abd3a189031e9f36a0c12961f208b2a1a1f3d412",
      "tree": "be9a0cd64dbd156db7d70faed02e8f0aa24627c5",
      "parents": [
        "5edf6a5f5758062e2d9f7f181f14fc08f99f3030"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri Feb 21 09:47:32 2020 +0000"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri Feb 21 09:52:31 2020 +0000"
      },
      "message": "zoekt-webserver: trigger watchdog after 3 failures\n\nWe have observed zoekt-webserver being killed by the watchdog. This typically\ncan happen on boot were a few other services are also competing for\nresources. Used a failure count rather than a longer timeout since that is\nusually how I configure the health checks in Kubernetes.\n\nChange-Id: I0698840477bc188768badef25fcd81a89c3ac911\n"
    },
    {
      "commit": "5edf6a5f5758062e2d9f7f181f14fc08f99f3030",
      "tree": "8e6187f1624d5c8678084ee9e35ff8a62207ddcc",
      "parents": [
        "eed1c916f12d72fe155b945c0360e9050b35df16"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri Feb 14 17:56:30 2020 +0000"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri Feb 14 17:56:30 2020 +0000"
      },
      "message": "go get -u all\n\nChange-Id: Ifc32d54134b1128f5260465f8608f9b79fec7d85\n"
    },
    {
      "commit": "eed1c916f12d72fe155b945c0360e9050b35df16",
      "tree": "2eedc99f6749ceb90edaae9bc7beb1782e51c821",
      "parents": [
        "a9b6bda45559b9c4ee6ae6bcb5945365fa8d0e56"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Mon Feb 10 17:17:26 2020 +0000"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Wed Feb 12 15:14:17 2020 +0000"
      },
      "message": "shards: cache ranked slice\n\nOn a search request we construct and sort a slice of all shards to\nsearch. This change will cache the slice. We do the caching on the read path\nto avoid holding the exclusive lock for a long time when we do writes to the\nshard map.\n\nThe use of a \"rankedVersion\" is a bit fiddly. Alternatively we could look\nmaking the replace call a batch version to amortize the cost of creating the\nranked slice.\n\nChange-Id: I5272dbb75a4becebb8aa8727d8459d0666cb9bf9\n"
    },
    {
      "commit": "a9b6bda45559b9c4ee6ae6bcb5945365fa8d0e56",
      "tree": "1216dd425842199748849e3c7ef70017196bd41e",
      "parents": [
        "dd9b88bac4371438e289bce8d6072e61381db9d0"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Mon Feb 10 17:14:38 2020 +0000"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue Feb 11 12:14:26 2020 +0000"
      },
      "message": "shards: remove context from R/W lock helper\n\nWe always passed in background context. Additionally this makes it clearer\nthat lock can\u0027t fail.\n\nChange-Id: I94f0c23ce84cb97ec1f4b3b2097e67f681364e80\n"
    },
    {
      "commit": "dd9b88bac4371438e289bce8d6072e61381db9d0",
      "tree": "1c29ea51eaca7e2d2805632ebb69dadb6e43a931",
      "parents": [
        "bb0f8be7e83ae6b50728b36cf91eb9d26b3ab5b3"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Jan 27 15:50:23 2020 +0100"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Jan 27 14:52:16 2020 +0000"
      },
      "message": "newMatchTree: bail with error for nil argument\n\nThis is an extra safety precaution to avoid runtime crashes\n\nChange-Id: I684976f769a9d80e462fe01510c45b34e737e219\n"
    },
    {
      "commit": "bb0f8be7e83ae6b50728b36cf91eb9d26b3ab5b3",
      "tree": "c7ff0ffdfed65aa5891dd49184e84570c95fc436",
      "parents": [
        "dbcc4b5486d4eaefc764f943175f3f720d3e6fae"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Jan 27 15:50:00 2020 +0100"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Jan 27 14:52:06 2020 +0000"
      },
      "message": "query: require argument for negation\n\nOtherwise, a query like \"-\" causes shard crash.\n\nFixes #108\n\nChange-Id: I7769006ed6ea84be6ea950abfc65123438ff7455\n"
    },
    {
      "commit": "dbcc4b5486d4eaefc764f943175f3f720d3e6fae",
      "tree": "85fea09777f3ea50ae1c90eceff436368b0a3de3",
      "parents": [
        "f9295af6bbdd613fcb4317f5e6e2396ec2c0e279"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jan 21 16:44:39 2020 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Wed Jan 22 09:52:58 2020 +0200"
      },
      "message": "zoekt-archive-index: support reading zip files\n\nZip requires random access, so we do not add support for streaming them\nin (http or stdin).\n\nChange-Id: I1b8a02c674afd5b77373155f8a795f51677c5cac\n"
    },
    {
      "commit": "f9295af6bbdd613fcb4317f5e6e2396ec2c0e279",
      "tree": "fe6b48f521b75ff2cc3c31f392b3c5f9778d4338",
      "parents": [
        "f3563d0a2812751fcae73ff48fcf129d4b486133"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jan 21 18:45:55 2020 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jan 21 18:45:55 2020 +0200"
      },
      "message": "zoekt-archive-index: use io.ReadCloser to simplify io.Closer usage\n\nUsing io.ReadCloser allows us to avoid the tricky control flow we previously\nhad around setting an `io.Reader` and `io.Closer` separately.\n\nChange-Id: Ifaccf2ba80b351de6753f78d7ea268119e1c8420\n"
    },
    {
      "commit": "f3563d0a2812751fcae73ff48fcf129d4b486133",
      "tree": "8308bf5cd3d24dfe108a76518ba8defb4e0b1cfb",
      "parents": [
        "0b109d08df69cedc884261ea73f7d03c8168f57f"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jan 21 17:06:23 2020 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jan 21 17:19:12 2020 +0200"
      },
      "message": "zoekt-archive-index: support gzip via content detection\n\nCurrently we check the content-type header if fetching an archive via\nHTTP. This updates our implementation to instead rely on content type\ndetection. The benefit of this is we can read gzip files from disk or stdin\nnow.\n\nChange-Id: I5579da64107ce51ebc3a52c2e28ad3690d3567c1\n"
    },
    {
      "commit": "0b109d08df69cedc884261ea73f7d03c8168f57f",
      "tree": "f71db294f31f46ca220cadf70b5a6a0145f3fb5b",
      "parents": [
        "bddeed6fc4726819c3a0ba268e98c87d47672606"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed Dec 11 20:17:49 2019 +0100"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed Dec 11 19:20:39 2019 +0000"
      },
      "message": "gitindex: set fetch refspecs after cloning\n\nA recent Git release broke the capability to set refspecs on the\ncommand-line. This was stopped in 47ff3037, and as a result fetches\nnow update FETCH_HEAD rather than the required refs.\n\nInstead, set the refspecs to refs/heads/* \u003d\u003e refs/heads/* after the\nsuccessful clone.\n\nFixes #106\n\nChange-Id: I1907094aecd81e35d2081218ccbe8d005caf4863\n"
    },
    {
      "commit": "bddeed6fc4726819c3a0ba268e98c87d47672606",
      "tree": "ac39e2fd132b279e7542c400d6b0c8a5cb5b3b5d",
      "parents": [
        "5851b63aed4d850f6618b696b89e757f0ae1ec22"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed Dec 11 19:37:27 2019 +0100"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed Dec 11 20:19:10 2019 +0100"
      },
      "message": "Bump the file size limit to 2 MB\n\nThe largest .cc file in the chromium tree is 1157895 bytes\n\nFixes #107.\n\nChange-Id: I4c1013366168ae1a31dc456fb423a289126274dd\n"
    },
    {
      "commit": "5851b63aed4d850f6618b696b89e757f0ae1ec22",
      "tree": "d88ab1063ec19b72171f4bb4d9a5f9caed7850a4",
      "parents": [
        "dc11ed55eca9e9d9f518a9798f3bab06caca0723"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Sat Oct 19 00:14:45 2019 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Thu Oct 31 10:23:36 2019 +0200"
      },
      "message": "ctags: skip long lines\n\nCurrently we will fail to index a repository if it contains a very large\nsymbol. This is due to bufio.Scanner returning bufio.ErrTooLong. The\ndocumentation encourages using bufio.Reader to have a different behaviour,\nwhich is what this commit implements.\n\nWe introduce a scanner struct which mimics a minimal API of bufio.Scanner. It\ndirectly uses bufio.Reader, but taking care to skip lines that are too long or\nempty. It will skip any line larger than 4096 (including newline).\n\nExamples of repositories with very large symbols:\n- https://github.com/noshotz/eldorito\n- https://github.com/corretto/corretto-8\n- https://github.com/ifsnow/facebooklivereaction\n\nChange-Id: Ic60f39c79f63363ef2d4175c4d6de7baae90355c\n"
    },
    {
      "commit": "dc11ed55eca9e9d9f518a9798f3bab06caca0723",
      "tree": "c9b422c67fe120e9be01269f45c51a9aa40baa6a",
      "parents": [
        "b1730d8e0cc4aa35d6b2d593b83fef7cb0c81673"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Mon Sep 16 17:57:24 2019 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Mon Sep 16 17:57:24 2019 +0200"
      },
      "message": "Reuse existing data buffer in contentprovider\n\nA few lines up we already call `p.data(false)`.\n\nChange-Id: I58035a7694fa9d36d679790e4cfdd25e72d8ba71\n"
    },
    {
      "commit": "b1730d8e0cc4aa35d6b2d593b83fef7cb0c81673",
      "tree": "baa8606db0dfb8b6a9dff713bf99962931a261b9",
      "parents": [
        "47ff3037201ee640ec209daf907c15bee24537e6"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Sep 10 11:14:47 2019 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Sep 10 11:14:47 2019 +0200"
      },
      "message": "all: remove temp directories in tests\n\nChange-Id: I33efc7302b381c8def3aeac35a2d618d0ad71918\n"
    },
    {
      "commit": "47ff3037201ee640ec209daf907c15bee24537e6",
      "tree": "062245f93779b67102dfc8f6000e0cac43bb2517",
      "parents": [
        "26110b9e869376c2fb76c666425212d9845df57a"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue May 28 19:36:32 2019 -0300"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Aug 26 17:54:22 2019 +0200"
      },
      "message": "gitindex: remove fetch.origin setting, which breaks with git 2.21\n\nFixes #81\n\nChange-Id: I1f3e376097d889d57987f4a790c2720bf452b1f8\n"
    },
    {
      "commit": "26110b9e869376c2fb76c666425212d9845df57a",
      "tree": "4b931eadf94e02347e5769017be60772c53e9f1b",
      "parents": [
        "142bb703dab514299fbe8732552a4f6c733390fa"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Thu Aug 22 20:16:39 2019 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Thu Aug 22 20:17:44 2019 +0200"
      },
      "message": "shards: compute shard rank outside of critical section\n\nChange-Id: I899eabf0bfc216329bf9f96a92e9dd1c17521ab3\n"
    },
    {
      "commit": "142bb703dab514299fbe8732552a4f6c733390fa",
      "tree": "917c892d128c5053f2a1690eb13c21a3d2f5a6b1",
      "parents": [
        "bf7f76331bc0c85931bf5bd3478f49ba60198fd2"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Aug 05 15:01:38 2019 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Aug 05 13:28:40 2019 +0000"
      },
      "message": "Make max trigram count configurable through --max_trigram_count flag  \n\nChange-Id: Ia5b1158bab63bf3547a8815936be2347a2a8d813\n"
    },
    {
      "commit": "bf7f76331bc0c85931bf5bd3478f49ba60198fd2",
      "tree": "5a931b7e91435624e1b3eadf9e8a137ebc282bee",
      "parents": [
        "cc5cdd687e0b6c72f6d8045a4be7b8fffe168381"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Aug 05 14:51:09 2019 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Aug 05 12:55:15 2019 +0000"
      },
      "message": "build: add error checking to Finish calls in tests\n\nChange-Id: Ief7dce9993a826a513b8543b15e19092f419fd1f\n"
    },
    {
      "commit": "cc5cdd687e0b6c72f6d8045a4be7b8fffe168381",
      "tree": "685ebed9d57b54db21fd9318e0861040129ca678",
      "parents": [
        "bc41789b2a292bcd545e2aa3610bfd100900d6bd"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Aug 01 19:46:08 2019 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Aug 05 14:51:22 2019 +0200"
      },
      "message": "use defer to call Builder.Finish\n\nThis ensures cleanup. If the cleanup does not happen, an indexing site\nmay repeated leave unfinished shards in the index directory, filling up\nthe disk.\n\nFixes #94.\n\nChange-Id: I3055f7c66586c4e44a7dd44810c3f8fa9fed847b\n"
    },
    {
      "commit": "bc41789b2a292bcd545e2aa3610bfd100900d6bd",
      "tree": "89607b91d40817fe43fa280830ac9514949e8b7b",
      "parents": [
        "956bc1b48ae3e00a924edfccdd20b62ce75dfb91"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Aug 01 19:35:12 2019 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Aug 05 14:41:01 2019 +0200"
      },
      "message": "build: make Builder.Finish idempotent\n\nThis will let it be run as a deferred cleanup operation.\n\nChange-Id: I82175f396e2bd781c287c58ee67eba3c17a8f5b5\n"
    },
    {
      "commit": "956bc1b48ae3e00a924edfccdd20b62ce75dfb91",
      "tree": "e2b8acf3bd7b941f472db694410f283d23b1ba57",
      "parents": [
        "68ba144954d81b92a83726520855d629c58f50a9"
      ],
      "author": {
        "name": "Nikos Katirtzis",
        "email": "nikos912000@hotmail.com",
        "time": "Tue Jul 30 01:21:11 2019 +0100"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Aug 01 14:08:29 2019 +0000"
      },
      "message": "cmd/zoekt-mirror-bitbucket-server: delete stale repos\n\nThis change adds a method to delete stale repos for the BitBucket Server mirror.\nCloses #91.\n\nChange-Id: Iff3e643e3aec16c19fb51b89aab77212063815b6\n"
    },
    {
      "commit": "68ba144954d81b92a83726520855d629c58f50a9",
      "tree": "2429d3b8fac13a2c4c89f556e833333ea902b902",
      "parents": [
        "45eadc7cb84caf204ee43cf12cbbdeb6528b72dc"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed Jul 31 20:45:50 2019 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed Jul 31 18:47:45 2019 +0000"
      },
      "message": "Upgrade to latest go-github\n\nHopefully this fixes the spurious 502s we see on cs.bazel.build\n\nChange-Id: Ica9eb848a68cd929bff310c3c3c3a57907c5d6d3\n"
    },
    {
      "commit": "45eadc7cb84caf204ee43cf12cbbdeb6528b72dc",
      "tree": "b34abe49818950445051ab4375500037dd2ad719",
      "parents": [
        "2c6088f8efa445b9e74364c4fe8588d1fde29cba"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Thu Jul 18 11:20:54 2019 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Jul 18 09:40:11 2019 +0000"
      },
      "message": "all: Use automaxprocs without logger\n\nIt is just logspam outside of containerized environments.\n\nChange-Id: Id08c778cb521204858ec58422cea8fe83cb67879\n"
    },
    {
      "commit": "2c6088f8efa445b9e74364c4fe8588d1fde29cba",
      "tree": "c48246dff97491c81a5c1eaed62c7cbc0d360b82",
      "parents": [
        "0cc49dfe516d2fd3222a572f59459c4693b7b901"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jul 09 14:50:19 2019 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Jul 18 09:37:47 2019 +0000"
      },
      "message": "Benchmark compressedPostingIterator\n\nThis will set a baseline for comparing future improvements against.\n\n  BenchmarkCompressedPostingIterator/100_50-8              2000000               878 ns/op         450.86 MB/s\n  BenchmarkCompressedPostingIterator/10000_100-8             20000             64572 ns/op         446.30 MB/s\n  BenchmarkCompressedPostingIterator/10000_1000-8            20000             76463 ns/op         388.13 MB/s\n  BenchmarkCompressedPostingIterator/10000_10000-8           20000             82682 ns/op         359.22 MB/s\n  BenchmarkCompressedPostingIterator/100000_100-8             2000            885923 ns/op         292.45 MB/s\n  BenchmarkCompressedPostingIterator/100000_1000-8            2000            922484 ns/op         290.39 MB/s\n  BenchmarkCompressedPostingIterator/100000_10000-8           2000           1028873 ns/op         260.51 MB/s\n  BenchmarkCompressedPostingIterator/100000_100000-8          2000           1095734 ns/op         244.62 MB/s\n\nChange-Id: Ib243d8b0e9499f62ca1423e83b526ebaa77739e1\n"
    },
    {
      "commit": "0cc49dfe516d2fd3222a572f59459c4693b7b901",
      "tree": "cafe342fb0c71401e69086eb98bfacd406c1504f",
      "parents": [
        "3f0a8f078efe0316ba092982cebcb7df874301a1"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jul 09 14:00:10 2019 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Jul 18 09:37:22 2019 +0000"
      },
      "message": "compressedPostingList returns maxUInt32 at end of iteration\n\nAdded a test which picked up this corner case.\n\nChange-Id: I776fb294b3aac5b812b9859da0d7b6c2485b732f\n"
    },
    {
      "commit": "3f0a8f078efe0316ba092982cebcb7df874301a1",
      "tree": "55af158a27d10c4c1174757af25b9cbddc9254f7",
      "parents": [
        "22eb58c2c7d286c0e742575ec9eb3bb5556825d7"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri Jul 12 20:28:19 2019 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri Jul 12 20:40:12 2019 +0200"
      },
      "message": "all: Use GOMAXPROCS instead of NumCPU\n\nNow that GOMAXPROCS is set to match Linux CPU quota, it makes more sense to\nlimit concurrency based on NumCPU than GOMAXPROCS. Additionally, this allows\nusers to tune the amount of concurrency Zoekt uses via the GOMAXPROCS\nenvironment variable if needs be. Ran\n\n  gofmt -w -r \u0027runtime.NumCPU() -\u003e runtime.GOMAXPROCS(0)\u0027 .\n\nChange-Id: I11e6ee63cbc8ea8da2cecc22a7e614dc6eebb4be\n"
    },
    {
      "commit": "22eb58c2c7d286c0e742575ec9eb3bb5556825d7",
      "tree": "3f36c73867bc55a3679d717686643dca47d98460",
      "parents": [
        "2f6c4a12067838fb0a29dc2a2ddb8b3bd153cdcc"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri Jul 12 20:38:20 2019 +0200"
      },
      "committer": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Fri Jul 12 20:40:12 2019 +0200"
      },
      "message": "all: Use automaxprocs\n\nautomaxprocs tunes GOMAXPROCS to match Linux container CPU quota. This is useful\nin containerized environments were your NumCPU can be much larger than your\neffective CPU amount. We have observed in those environments performance\ndegredation in the go runtime. Tuning this should help.\n\nChange-Id: Iccdaebb9345f8bb41084f4a82804e60b68a16e02\n"
    },
    {
      "commit": "2f6c4a12067838fb0a29dc2a2ddb8b3bd153cdcc",
      "tree": "f39eef6483b96012d914714873d5e651a53f1bd4",
      "parents": [
        "15d159af38793cecaea078404fe450373a733cab"
      ],
      "author": {
        "name": "Keegan Carruthers-Smith",
        "email": "keegan.csmith@gmail.com",
        "time": "Tue Jul 09 13:27:10 2019 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Thu Jul 11 18:00:49 2019 +0000"
      },
      "message": "testing/quick tests for functionality in bits\n\nChange-Id: Ie1250f12eb55df32ad4116e1f3255ffa29c6919b\n"
    },
    {
      "commit": "15d159af38793cecaea078404fe450373a733cab",
      "tree": "2a2decc08a7da2826af6370023c53513e5bfcdc3",
      "parents": [
        "8ae46289ddc7ad3fc20a683600a587de5ab5d2a9"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue Jul 09 08:28:24 2019 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Tue Jul 09 08:28:28 2019 +0200"
      },
      "message": "cmd/zoekt-indexserver: set timeout on zoekt-git-index calls\n\nChange-Id: I17c84126feb46deec68e5cea08c11c146253cba4\n"
    },
    {
      "commit": "8ae46289ddc7ad3fc20a683600a587de5ab5d2a9",
      "tree": "019b073c3aa43796be9701c9da5977e34893c6bd",
      "parents": [
        "ee98073b171b1066db2d3ce1a3fa29ad0efde6c7"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed Jul 03 11:39:14 2019 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed Jul 03 18:51:44 2019 +0000"
      },
      "message": "CONTRIBUTING: describe how to update changes\n\nChange-Id: I02f1bbb7c875db60ab714e97ad7bea524f0bdc87\n"
    },
    {
      "commit": "ee98073b171b1066db2d3ce1a3fa29ad0efde6c7",
      "tree": "9878afcf4d8a832b44f3b55514ba738cc39b728d",
      "parents": [
        "776bb37b1c750857309df4f0f729839e006c5c04"
      ],
      "author": {
        "name": "Issac Trotts",
        "email": "ijt@sourcegraph.com",
        "time": "Tue Jul 02 15:42:54 2019 -0700"
      },
      "committer": {
        "name": "Issac Trotts",
        "email": "ijt@sourcegraph.com",
        "time": "Wed Jul 03 11:39:08 2019 -0700"
      },
      "message": "make LineMatches only contain single lines\n\nFixes https://github.com/google/zoekt/issues/88.\n\nChange-Id: Ida958551f018b197c7c71412f4f737f6b9b43e95\n"
    },
    {
      "commit": "776bb37b1c750857309df4f0f729839e006c5c04",
      "tree": "a5f0e25e51974e11659c53b10b46c28d4667dc57",
      "parents": [
        "2782bc0096db4dc7f4b7abc342def40ce23f0faa"
      ],
      "author": {
        "name": "Nikos Katirtzis",
        "email": "nikos912000@hotmail.com",
        "time": "Sun Jun 30 14:45:07 2019 +0100"
      },
      "committer": {
        "name": "Nikos Katirtzis",
        "email": "nikos912000@hotmail.com",
        "time": "Mon Jul 01 10:41:53 2019 +0100"
      },
      "message": "cmd/zoekt-indexserver: configurable credentials path\n\nThis change makes credential paths configurable from the indexserver allowing us to index multiple instances of the same git hosting service.\n\nChange-Id: I53770423d232f4d9da5335282f7fa77b6e1d7440\n"
    },
    {
      "commit": "2782bc0096db4dc7f4b7abc342def40ce23f0faa",
      "tree": "6649b52d125bcc24e092dc695be38a201ec435a4",
      "parents": [
        "2c9597555bb98e0fb94dc76b1b144e58eca10fb0"
      ],
      "author": {
        "name": "Nikolaos Katirtzis",
        "email": "nikos912000@hotmail.com",
        "time": "Sat Jun 01 19:59:56 2019 +0100"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Mon Jun 24 11:31:10 2019 +0000"
      },
      "message": "cmd/zoekt-mirror-github: option to index all repos on GHE\n\nThis pull request makes GitHub user and org optional so that one can easily index all repos on GHE.\nCloses #84.\n\nChange-Id: Ib4cf1640ac9776bfc820f61b77bc55b7a79a26ea\n"
    },
    {
      "commit": "2c9597555bb98e0fb94dc76b1b144e58eca10fb0",
      "tree": "afa782ef90a9abb2cbc95147016ebd598888ea4a",
      "parents": [
        "dd7d98162b17e6b91cdd2405b7b5488b1f31fe76"
      ],
      "author": {
        "name": "Rene Zbinden",
        "email": "rene.zbinden@gmail.com",
        "time": "Mon Jun 17 14:47:12 2019 +0200"
      },
      "committer": {
        "name": "Rene Zbinden",
        "email": "rene.zbinden@gmail.com",
        "time": "Tue Jun 18 13:40:10 2019 +0200"
      },
      "message": "cmd: add option to only mirror public gitlab repositories\n\nChange-Id: I5e8ff96d1569397f3b8407aa4a9211da48994411\n"
    },
    {
      "commit": "dd7d98162b17e6b91cdd2405b7b5488b1f31fe76",
      "tree": "c8a9aca97a02211ee0a6ebd815e03736c93dcbea",
      "parents": [
        "b207923d551a166541b81e47025ecb6b1731a2aa"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed May 29 15:56:04 2019 -0300"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed May 29 19:37:14 2019 +0000"
      },
      "message": "ctags: kill subprocess on scanner errors\n\ngithub.com/sirthias/borer contains a JSON file with 100k \u0027[\u0027 chars,\nThis caused a \"token too long\" error from bufio, which left the\nsubprocess alive. Before, we waited for the subprocess to die, which\nnever happened.\n\nThis will now cause the indexing to fail for a single repo, but that\nis better than stopping the complete indexing pipeline.\n\nFixes #85.\n\nChange-Id: I4ee370ae5e531fc8fde0256eac3d280771594c73\n"
    },
    {
      "commit": "b207923d551a166541b81e47025ecb6b1731a2aa",
      "tree": "bb1e0ef252209d9952ad9091fb09a51352344cf5",
      "parents": [
        "306d1ad8cff471d5a1d615179b57d18d534669b1"
      ],
      "author": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Sat May 25 09:16:23 2019 +0200"
      },
      "committer": {
        "name": "Han-Wen Nienhuys",
        "email": "hanwen@google.com",
        "time": "Wed May 29 12:30:52 2019 -0300"
      },
      "message": "web: make \"language\" a button that restricts to the given language\n\nChange-Id: I3f13f1f1b97e6fcd47da490b3afa382c05ce0455\n"
    }
  ],
  "next": "306d1ad8cff471d5a1d615179b57d18d534669b1"
}
