)]}'
{
  "log": [
    {
      "commit": "3cd422ea7cf306572abea2b9e5f56548a474c37a",
      "tree": "f0f489957364e09a08e5816753e181e642da9299",
      "parents": [
        "b284d87cc92c668c31c7e2817ac1e1fb54ce0de0"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 11:19:26 2026 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 11:19:26 2026 -0400"
      },
      "message": "git-patchwork-bot: add ruff/mypy config and fix lint issues\n\nAdd ruff and mypy strict configuration to pyproject.toml and fix\nall reported issues:\n\n- Sort imports per isort conventions (ruff I001)\n- Wrap long regex line to stay within 120 char limit (ruff E501)\n- Remove six stale type: ignore[assignment] comments that mypy\n  strict mode no longer needs (unused-ignore)\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nAssisted-by: claude-opus-4-6\n"
    },
    {
      "commit": "b284d87cc92c668c31c7e2817ac1e1fb54ce0de0",
      "tree": "d8fd15b5cf6add57c247fe2696d9dc9306200cf6",
      "parents": [
        "0ea22312bbdbd51dae7ce558f7f53577bc1c59b3"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 11:10:44 2026 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 11:10:44 2026 -0400"
      },
      "message": "git-patchwork-bot: add tests for utilities, git wrappers, and database\n\nExpand the test suite with coverage for:\n\n- listify() and get_tweaks() pure utility functions\n- git_get_new_revs() log parsing with mocked git output, including\n  committer filtering, deleted refs, and colons in subjects\n- send_summary() email construction with mocked globals and SMTP\n- git_get_repo_heads(), git_get_command_lines(), git_get_patch_id(),\n  and git_get_rev_info() with mocked git commands\n- SQLite database functions using in-memory databases: table init,\n  DB_VERSION, and heads save/get roundtrip\n\nTotal test count: 90\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nAssisted-by: claude-opus-4-6\n"
    },
    {
      "commit": "0ea22312bbdbd51dae7ce558f7f53577bc1c59b3",
      "tree": "cb00b0eb56db66e35dbb6429a61ebd4719254153",
      "parents": [
        "9f1bb6fbcadf99b980750ed16d397cc064f5dde3"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 11:05:18 2026 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 11:05:18 2026 -0400"
      },
      "message": "git-patchwork-bot: add mocked API and hash tests\n\nAdd tests for the patchwork API interaction functions using\nunittest.mock to avoid needing a live patchwork instance:\n\n- get_patchwork_pull_requests_by_project: pull URL parsing, missing\n  refnames, null pull_url entries, query parameter validation\n- get_patchwork_patches_by_project_hash: hash lookups\n- get_patchwork_patches_by_project_msgid: message-id lookups\n- get_patchwork_hash: diff hashing including line number\n  normalization, -p1 prefix handling, preamble stripping, and\n  CRLF normalization\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nAssisted-by: claude-opus-4-6\n"
    },
    {
      "commit": "9f1bb6fbcadf99b980750ed16d397cc064f5dde3",
      "tree": "42c5a13241c7c4ffec850e8faddae5819f721bd5",
      "parents": [
        "eeec6d56c78687e0dcb1de7d38975ee151eeb3aa"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 10:59:23 2026 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 10:59:23 2026 -0400"
      },
      "message": "git-patchwork-bot: extract PR matching logic into testable functions\n\nPull the merge commit parsing and pull request matching out of pwrun()\ninto standalone functions that can be unit tested without mocking the\npatchwork API or git:\n\n- parse_merge_logline(): extracts ref and URL from a merge subject\n- find_matching_pr(): matches a merge against a set of patchwork PRs\n\nAdd 18 new tests covering both functions, including the bluetooth PR\nscenario, protocol/subdomain/suffix mismatches, and edge cases.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nAssisted-by: claude-opus-4-6\n"
    },
    {
      "commit": "eeec6d56c78687e0dcb1de7d38975ee151eeb3aa",
      "tree": "0a2c0dbd4685aa41618e207954b3e25ff0bf0d2d",
      "parents": [
        "849a0d915c29a3e6c6a20a87b455994ba2209df5"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 10:57:09 2026 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 10:57:09 2026 -0400"
      },
      "message": "Add pytest scaffolding and initial patchwork bot tests\n\nSet up a tests framework for the repo:\n\n- pyproject.toml with pytest configuration\n- tests/conftest.py with load_script() helper for importing\n  hyphenated script filenames via importlib\n- tests/test_patchwork_bot.py with URL normalization tests covering\n  protocol mismatches, subdomain variations, .git suffixes, and\n  trailing slashes\n\nAlso move test fixture TOML files from the top level into tests/.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nAssisted-by: claude-opus-4-6\n"
    },
    {
      "commit": "849a0d915c29a3e6c6a20a87b455994ba2209df5",
      "tree": "b92f11325c02a3bbded3cf967c455b0c06328afc",
      "parents": [
        "e2c9b3f3f791da67228d1522c547079d591e11ae"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 10:56:52 2026 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 10:56:52 2026 -0400"
      },
      "message": "Add rtt-probe.py for email round-trip time monitoring\n\nMeasures mail delivery latency by sending HMAC-signed probe emails\nand checking for their arrival via IMAP or public-inbox. Reports\nround-trip times to syslog or stdout for infrastructure monitoring.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "e2c9b3f3f791da67228d1522c547079d591e11ae",
      "tree": "58fbd83ac6a983e94c354eead59f56c52ccac9bf",
      "parents": [
        "1320a25a9a556d5b434d6fad601efac54dedb57e"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 10:53:51 2026 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 10:53:51 2026 -0400"
      },
      "message": "Add find-abusers.py for identifying heavy git server consumers\n\nParses uwsgi logs (git-http-backend, cgit) and journalctl git-daemon\nentries to find IPs consuming the most server time. Optionally groups\nresults by ASN prefix for easier identification of abusive networks.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "1320a25a9a556d5b434d6fad601efac54dedb57e",
      "tree": "6e3ca5169657b6a2144ed0cce07e767d7acb3f02",
      "parents": [
        "77e2e6124fa34eb10694398271649c82f1645e48"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 10:51:12 2026 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 10:51:12 2026 -0400"
      },
      "message": "Add .gitignore entries for Python tooling and vale config\n\nAdd common Python artifact directories and files to .gitignore:\n__pycache__, *.pyc, .venv, .mypy_cache, .ruff_cache, .pytest_cache.\n\nAlso add .vale.ini for prose linting of markdown files.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "77e2e6124fa34eb10694398271649c82f1645e48",
      "tree": "4a6e66964f016c355c32d7a1a51d5a02e5910e90",
      "parents": [
        "44169ff49ab3707fb1c84f2ed2ab340c47ff698e"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 10:42:16 2026 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 15 10:42:16 2026 -0400"
      },
      "message": "git-patchwork-bot: normalize URL paths for pull request matching\n\nThe previous commit (44169ff) switched pull request URL matching from\na substring check to exact path comparison in order to handle protocol\nand subdomain differences. However, exact equality breaks when the\nmerge commit and the patchwork pull URL differ by a trailing slash or\na .git suffix -- both of which are common in practice.\n\nFor example, patchwork stores the URL from the pull request email with\na .git suffix (bluetooth.git), while the merge commit subject line\noften omits it (bluetooth). The old substring match tolerated this\nbecause \"bluetooth\" is a prefix of \"bluetooth.git\", but strict path\nequality fails.\n\nFix this by normalizing paths in get_url_path(): strip trailing\nslashes and .git suffixes before comparison.\n\nReported-by: Jakub Kicinski \u003ckuba@kernel.org\u003e\nLink: https://lore.kernel.org/all/20260312200655.1215688-1-luiz.dentz@gmail.com/T/#u\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nAssisted-by: claude-opus-4-6\n"
    },
    {
      "commit": "44169ff49ab3707fb1c84f2ed2ab340c47ff698e",
      "tree": "62c3f526771cb3600f50ce3b21877feb848fff6d",
      "parents": [
        "4681d5cf14a4753d96c3efcbc92e08c1df3b7786"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Jan 22 13:20:31 2026 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Jan 22 13:21:27 2026 -0500"
      },
      "message": "git-patchwork-bot: fix pull request matching with URL rewrites\n\nWhen git\u0027s insteadOf configuration rewrites URLs (e.g., git:// to\nhttps://), the pull request URL in Patchwork differs from the URL in the\nmerge commit message. Additionally, subdomain variations like\ngit.kernel.org vs gitolite.kernel.org can cause mismatches.\n\nFix this by comparing only the path portion of URLs instead of the full\nURL. Even though we\u0027re dropping the domain, the path + tag combination\nshould be unique enough to avoid any clashes.\n\nReported-by: Krzysztof Kozlowski \u003ckrzk@kernel.org\u003e\nLink: https://lore.kernel.org/tools/f8463626-68c6-4b3e-ac0c-5a01db8e7755@kernel.org/\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nAssisted-by: claude-opus-4-5-20251101\n"
    },
    {
      "commit": "4681d5cf14a4753d96c3efcbc92e08c1df3b7786",
      "tree": "15f974b21a3e6dfd4e3b6f86740dd492fd139a3e",
      "parents": [
        "774dd7242e9344fdcc3a99da6de4d6a8d0a6873d"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Aug 12 11:30:16 2025 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Aug 12 11:30:16 2025 -0400"
      },
      "message": "bugzilla-junker: actually open shelf with writeback\n\nWithout writeback, we don\u0027t actually get any updates.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "774dd7242e9344fdcc3a99da6de4d6a8d0a6873d",
      "tree": "474594707c88cb9662d2ebd45ca6b0729d0763b7",
      "parents": [
        "a2887ad61baf36a4d6a9bcc5d0b3f9df6865e94c"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Aug 12 11:10:37 2025 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Aug 12 11:10:37 2025 -0400"
      },
      "message": "bugzilla-junker: support path vars in configuration\n\nWe should support the usual vars in the configuration file.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "a2887ad61baf36a4d6a9bcc5d0b3f9df6865e94c",
      "tree": "00af5872dfbc9ec0353a622eb12073ba7933ee61",
      "parents": [
        "96690e5967d4d09ccf8fe8158eab5910c2af9042"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Aug 11 17:52:42 2025 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Aug 11 17:52:42 2025 -0400"
      },
      "message": "bugzilla-junker: add config validation\n\nI had to update my own working config, so add schema validation when\nparsing the config file.\n\nAssisted-by: claude-4-sonnet\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "96690e5967d4d09ccf8fe8158eab5910c2af9042",
      "tree": "5ae66c668300ef2aa77a7204ac89c43655645fe6",
      "parents": [
        "da9905d53c681b54909a5b7d6e106db11da6e00c"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Aug 11 17:36:08 2025 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Aug 11 17:36:08 2025 -0400"
      },
      "message": "bugzilla-junker: rework so I can give it to others\n\nThis was always a quick-and-dirty hack, but it\u0027s more useful than\nanything else I\u0027ve seen around. Clean it up so I can pass this along to\nsomeone else to do alongside with me.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "da9905d53c681b54909a5b7d6e106db11da6e00c",
      "tree": "ebba2b757929ec550acf6c774b9d42b55d6b5773",
      "parents": [
        "26818cb6b6d8a653fe6ca72ec15b9151a020b6f4"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Jun 18 14:38:23 2025 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Jun 18 14:38:23 2025 -0400"
      },
      "message": "git-patchwork-bot: allow fnmatch-style matching of heads\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "26818cb6b6d8a653fe6ca72ec15b9151a020b6f4",
      "tree": "028294634eb9e909872c53c9019604135affc4ab",
      "parents": [
        "16df0a04a90f74ec23f160c3693241fd1a2e1922"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Jun 18 13:13:30 2025 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Jun 18 13:13:30 2025 -0400"
      },
      "message": "git-patchwork-bot: further typing improvements\n\nImprove typing and add a small feature that also matches heads by\nfnmatch.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "16df0a04a90f74ec23f160c3693241fd1a2e1922",
      "tree": "1fc92af5dd3e563ccabfa696659826f667500320",
      "parents": [
        "2f6defce39d4e5283855d50e69aca58b15db1132"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri May 30 08:56:00 2025 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri May 30 08:56:00 2025 -0400"
      },
      "message": "Further typing improvements for git-patchwork-bot\n\nAdditionally, limit msgid matches to only patch.msgid.link URLs, to\nreduce the number of false-positives.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "2f6defce39d4e5283855d50e69aca58b15db1132",
      "tree": "14ed40eb52f1d0d8e37db126850424330593e9fb",
      "parents": [
        "058221fcb31a6fd91883161cf7b826d5d9fd2527"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri May 02 17:21:14 2025 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri May 02 17:21:14 2025 -0400"
      },
      "message": "git-patchwork-bot: appease mypy linter\n\nPreparing to work on git-patchwork-bot again, so appease the latest\nmypy/ruff warnings and errors.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "058221fcb31a6fd91883161cf7b826d5d9fd2527",
      "tree": "2ddb9def98543db31487142b29420f1f6eb00ec8",
      "parents": [
        "8c95860c1cad92d00d4ee61e914d0d79dba2aa46"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Sep 20 07:07:41 2024 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Sep 20 07:07:41 2024 -0400"
      },
      "message": "mlmmj-subscriber-sync: add support for exclusion lists\n\nWe want to be able to specify addresses to never automatically\nsubscribe, so add support for .remote-subscriber-excl.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "8c95860c1cad92d00d4ee61e914d0d79dba2aa46",
      "tree": "a000fa10fa3354edfc32eaddd1769abc94d181d0",
      "parents": [
        "0679daed4769351c39926e263eabb39e6ec05fcb"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Sep 18 10:06:16 2024 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Sep 18 10:06:16 2024 -0400"
      },
      "message": "subscriber-sync: fix for multiple M: entries\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "0679daed4769351c39926e263eabb39e6ec05fcb",
      "tree": "4906e2e953b53100b64fe8da305ac4a62222f194",
      "parents": [
        "5d490055cefcc49e755f3567028f14bd10878de0"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Sep 18 07:26:48 2024 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Sep 18 07:26:48 2024 -0400"
      },
      "message": "mlmmj-subscriber-sync: support parsing MAINTAINERS file\n\nProvide a mechanism to parse all M: entries from the MAINTAINERS file as\na source of subscribers.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "5d490055cefcc49e755f3567028f14bd10878de0",
      "tree": "b3e782a8daf8786e0d8b97cf5b605d543b1a0c52",
      "parents": [
        "c3fa8bd14fe452fcceafd7f2baea171ac5533f30"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Aug 28 15:13:30 2024 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Aug 28 15:13:30 2024 -0400"
      },
      "message": "Update some scripts to no longer default to gpg2\n\nIt\u0027s now safe to assume that most distros will have a non-legacy version\nof gpg as the default binary.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "c3fa8bd14fe452fcceafd7f2baea171ac5533f30",
      "tree": "b7e376dc98b7421cc365ef1a0e800b569b391376",
      "parents": [
        "f25e5126091f1a25dd610f8ab620be8f8195e73b"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Jan 22 14:47:49 2024 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Jan 22 14:47:49 2024 -0500"
      },
      "message": "pwbot: fix pagination logic bug in REST results\n\nWe weren\u0027t doing the right thing when processing paginated data.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "f25e5126091f1a25dd610f8ab620be8f8195e73b",
      "tree": "d9698f392844fa77af3321f683eea518a69d0a18",
      "parents": [
        "67f2c63f05705876eeaa88ae234a55d44a9b3b0d"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Jul 19 14:51:42 2023 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Jul 19 14:51:42 2023 -0400"
      },
      "message": "mlmmj-subscriber-sync: also catch OSError\n\nDon\u0027t crash on OSError when retrieving external subscriber info (e.g. if\nthere is a DNS lookup error).\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "67f2c63f05705876eeaa88ae234a55d44a9b3b0d",
      "tree": "376e053bc13dadc0350ac4b44620b18a0a8b2651",
      "parents": [
        "a951b8fe4a5f9bfd915e4a6cf998539d5f063834"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Jul 19 14:47:18 2023 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Jul 19 14:47:18 2023 -0400"
      },
      "message": "pr-tracker-bot: add process-id to logging\n\nTrying to catch an elusive race condition, so add process-id to logging\ninformation.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "a951b8fe4a5f9bfd915e4a6cf998539d5f063834",
      "tree": "f9923134a1734793746ec043c22326ec8ef69ce5",
      "parents": [
        "902480fcb975912222ebf4a4b5972ec23948a412"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Jul 19 14:45:49 2023 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Jul 19 14:45:49 2023 -0400"
      },
      "message": "git-patchwork-bot: support histogram patches\n\nWhen we cannot match a commit to any patches, try to regenerate it again\nwith the histogram algorithm in case the original patch was sent using\nthat option.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "902480fcb975912222ebf4a4b5972ec23948a412",
      "tree": "5dc3bb9388660552da96892542365d6816bbe430",
      "parents": [
        "82063fb68ab759d489e1efbc718efe4f10db62f4"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Jul 18 12:04:05 2023 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Jul 18 12:04:05 2023 -0400"
      },
      "message": "Keep DKIM and X-Developer headers\n\nThese headers carry important end-to-end signatures, so do not strip\nthem when processing archives.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "82063fb68ab759d489e1efbc718efe4f10db62f4",
      "tree": "9aa8ff2eb50157378bea35f8ac24bc982b6e8479",
      "parents": [
        "4f84e5d7942e7573bcf0bb97256d5a74d9b96e5b"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Jun 15 16:51:40 2023 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Jun 15 16:51:40 2023 -0400"
      },
      "message": "git-patchwork-bot: retry patch generation with --histogram\n\nWhen people send patches, their output will be dependent on their local\ndiff.algorithm setting. If they set it to something other than the\ndefault (\"myers\"), we may fail to generate a matching patch from the\ncommit.\n\nWhen we can\u0027t find a match, try to regenerate the patch using the\nhistogram algorithm and attempt the match again.\n\nReported-by: Jakub Kicinski \u003ckuba@kernel.org\u003e\nLink: https://msgid.link/20230615100021.43d2d041@kernel.org\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "4f84e5d7942e7573bcf0bb97256d5a74d9b96e5b",
      "tree": "2ab6018715257745b71dc9e4fb1f84e8b69ef8af",
      "parents": [
        "e474b98965d1f66373eda69b26f30db6f2818228"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Jun 02 16:31:40 2023 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Jun 02 16:31:40 2023 -0400"
      },
      "message": "mlmmj-subscriber-sync: add ability to use a git repo for subs\n\nThe sync script can now use a git repository for external subscriber\ndata.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "e474b98965d1f66373eda69b26f30db6f2818228",
      "tree": "e6e4b963613c08706bce297e9c708c535a1bd899",
      "parents": [
        "3002ffb2e95c179d6f0aa4d6598f6405ad47c941"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed May 31 16:40:28 2023 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed May 31 16:40:28 2023 -0400"
      },
      "message": "list-archive-collector: improve marc retrieval\n\nAdded some features to retrieving messages from marc.info:\n\n- earlier messages don\u0027t seem to have a message-id, so we fake it now\ninstead of completely ignoring these (they still serve a purpose)\n- the \"backoff\" time now considers how much time has elapsed since the\nlast request to marc.info, so if we already spent a couple of seconds\nchecking a message for spam, we don\u0027t additionally sleep an extra second\n- if the target mailbox already has messages in it, we will not\nre-download those\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "3002ffb2e95c179d6f0aa4d6598f6405ad47c941",
      "tree": "1621dd9d5da303b24753361cfc7d8d472fa965fd",
      "parents": [
        "b9c3a4ac3d0acf8e5722a2c0883b2400e315c90b"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Apr 25 13:16:44 2023 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Apr 25 13:16:44 2023 -0400"
      },
      "message": "Update mlmmj-subscriber-sync to support checksums\n\nWe\u0027re now grabbing a checksums file.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "b9c3a4ac3d0acf8e5722a2c0883b2400e315c90b",
      "tree": "58789bc1ce99207a95f4f6750cdc10bf856e2752",
      "parents": [
        "29093fb09a4d55589d03a83fc07d8300e6e8e4fe"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Apr 04 18:05:23 2023 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Apr 04 18:05:23 2023 -0400"
      },
      "message": "Add mlmmj-subscriber-sync\n\nSmall helper script to synchronize mlmmj lists with external subscriber\ninformation.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "29093fb09a4d55589d03a83fc07d8300e6e8e4fe",
      "tree": "da9127143ff1ae7585d279477088b83e3ed794ce",
      "parents": [
        "ebb4f5797aec4bf2c8cdc116aecdbd698468d62e"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Jan 03 14:17:15 2023 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Jan 03 14:17:15 2023 -0500"
      },
      "message": "groupsio-webhook: don\u0027t check for action\n\nValid messages may come in with other actions than just\n\"sent_message_accepted\" (e.g. \"sent_message_moderated\" or\n\"sent_message_not_subscriber\"), so accept everything that contains the\nmessage payload.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "ebb4f5797aec4bf2c8cdc116aecdbd698468d62e",
      "tree": "f4d027e6ea8b8ae10e29fbefbbc31743ef142381",
      "parents": [
        "9426618979ca1c6c5e32b552bdbd3af10688b4a0"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Oct 21 11:33:21 2022 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Oct 21 11:33:21 2022 -0400"
      },
      "message": "list-archive-maker: fix msgmap.sqlite3 support\n\nThe message-id\u0027s in msgmap.sqlite3 are without \u003c\u003e, which we actually use\nfor mapping.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "9426618979ca1c6c5e32b552bdbd3af10688b4a0",
      "tree": "b9dfcd12a01eab33de9abb96f75cba4b09321130",
      "parents": [
        "354fc16e397312c8972c6b48e7645d2c98d71db3"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Oct 20 15:47:25 2022 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Oct 20 15:47:25 2022 -0400"
      },
      "message": "archive-collector: allow clean-subject to take multiple strings\n\nThe things lists do to their messages is annoying.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "354fc16e397312c8972c6b48e7645d2c98d71db3",
      "tree": "63cf3ce0686bd08aa79e42c2aa68afbe226cb308",
      "parents": [
        "a72a55b06660b249c82cdba32a4dc54e8a7ea2f3"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Oct 20 14:11:29 2022 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Oct 20 14:11:29 2022 -0400"
      },
      "message": "list-collectors: small improvements\n\nAdd a few small improvements to the list-archive-collector and\nlist-archive-maker lists, allowing to more easier deal with partial\narchives.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "a72a55b06660b249c82cdba32a4dc54e8a7ea2f3",
      "tree": "e0b7ebb348f4fcbf673d63d4aec1bcd550151218",
      "parents": [
        "f0dbc2734d7e51ccfbba99f2e4b89fbe1dce0bdc"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Oct 11 17:40:33 2022 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Oct 11 17:40:33 2022 -0400"
      },
      "message": "Optimize emergency saving of messages\n\nInstead of duplicating code, just use a single instance of _save_emerg.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "f0dbc2734d7e51ccfbba99f2e4b89fbe1dce0bdc",
      "tree": "f594feee1a5225156fdd4bb2eabd2407f825674b",
      "parents": [
        "7b708a358db586545cd36d8842efd94dece124af"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Oct 11 16:46:35 2022 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Oct 11 16:46:35 2022 -0400"
      },
      "message": "More debugging options for groupsio webhook\n\nShould be largely backwards compatible with what we had before, but\nallowing us to also troubleshoot occasional 500 errors.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "7b708a358db586545cd36d8842efd94dece124af",
      "tree": "9b02a4f3829f10f059a7a3ea5bf76a31cf13cbae",
      "parents": [
        "8869f6cce1bf25b78632baf89bca792200090036"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Oct 11 13:56:24 2022 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Oct 11 13:56:24 2022 -0400"
      },
      "message": "Rewrite groupsio-hook to add logging\n\nWe\u0027re seeing some 500 errors, and to debug them we need proper logging\nand emergency message dumping.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "8869f6cce1bf25b78632baf89bca792200090036",
      "tree": "950d7e31a1ae89977dac309f05f96731ed4f0ce5",
      "parents": [
        "f2680af521673c402282324d478ae682ef969c14"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Aug 08 16:41:51 2022 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Aug 08 16:41:51 2022 -0400"
      },
      "message": "mainline-when: treat 19 as the last minver\n\nThis may change in the future, but for now treat .19 as the last minor\nversion before majver is incremented.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "f2680af521673c402282324d478ae682ef969c14",
      "tree": "df17014c9c753dafff87349a6164cbe4dfff81e9",
      "parents": [
        "ead2b92216c135152f28f9847b52479fe279edf8"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Jun 27 14:41:08 2022 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Jun 27 14:41:08 2022 -0400"
      },
      "message": "Allow list-id to be a globbing match\n\nAdd ability to specify list-ids as a globbling match (even if it\u0027s just\n\u0027*\u0027 for \"everything\").\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "ead2b92216c135152f28f9847b52479fe279edf8",
      "tree": "f600124fa8cf0c21090f8d4363c2b907d20d9a56",
      "parents": [
        "f057cb93e1094eceeedf86ce906aa90616541674"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Jun 27 11:51:08 2022 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Jun 27 11:51:08 2022 -0400"
      },
      "message": "Add support to write out as maildir\n\nIt is periodically useful to save the archives as maildir instead of\nmailbox. Add support for -asmaildir.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "f057cb93e1094eceeedf86ce906aa90616541674",
      "tree": "c1c40a67b58af465e398d8366713e545b2b0e75a",
      "parents": [
        "ef2bec9db7f633b50558fb82b3c04e7a3addfe6e"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Jun 02 14:27:07 2022 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Jun 02 14:27:07 2022 -0400"
      },
      "message": "Tweak wording on mainline-when\n\nAdd a note in the vcal output that the final release may actually end up\nbeing another -rc instead.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "ef2bec9db7f633b50558fb82b3c04e7a3addfe6e",
      "tree": "211e26e44955dba6925819401567923012d0bd7e",
      "parents": [
        "7d92b25a26a7c7e964f296b4a364c55fcb8637d1"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Apr 26 12:31:34 2022 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Apr 26 12:31:34 2022 -0400"
      },
      "message": "Treat failures to uncompress as non-fatal\n\nWe shouldn\u0027t crash out if we got a corrupted download. This script is\nlooking specifically at bad signatures -- a download that won\u0027t even\nproperly uncompress is probably not trying to sneak in badness.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "7d92b25a26a7c7e964f296b4a364c55fcb8637d1",
      "tree": "bc82fa9842dbb06fc47f9841875a8649ebe26a43",
      "parents": [
        "5ef489023ee2e8728cf63131eee33b24aa837c61"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Apr 26 12:26:44 2022 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Apr 26 12:26:44 2022 -0400"
      },
      "message": "Adjust default sig-prover node list\n\nWe\u0027re migrating the nodes to their new homes on Equinix gen3 systems, so\nadjust the list of edge sites accordingly.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "5ef489023ee2e8728cf63131eee33b24aa837c61",
      "tree": "2d36eb25a2a8668cb14f5a3dfc91e35b93b491c3",
      "parents": [
        "56e1574f18bce218ccc65ec507d36849f2bee0fb"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Feb 01 10:14:08 2022 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Feb 01 10:14:08 2022 -0500"
      },
      "message": "mainline-when: fix var scoping issues\n\nIt worked, but it was a bug waiting to happen.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "56e1574f18bce218ccc65ec507d36849f2bee0fb",
      "tree": "da7eeee8eb7c968e909c58d50d8c919a05e74fa2",
      "parents": [
        "8f0b9e92e2dbd5dfd14ad9268a5c721eb611d573"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Jan 31 16:40:13 2022 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Jan 31 16:40:13 2022 -0500"
      },
      "message": "mainline-when: rework to remove depedencies and generate .ics\n\n- removes dependency on python-packaging\n- switches to using logger calls instead of print()\n- adds ability to generate .ics files\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "8f0b9e92e2dbd5dfd14ad9268a5c721eb611d573",
      "tree": "09bfa4847940d8e6736ce2620967e64aad318d35",
      "parents": [
        "10b7024b67ae4985a88d29abba46953497601ac3"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Jan 31 11:30:43 2022 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Jan 31 11:34:58 2022 -0500"
      },
      "message": "mainline-when: add a tiny script to estimate dates\n\nHelp people estimate kernel release dates.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "10b7024b67ae4985a88d29abba46953497601ac3",
      "tree": "6e3d359e13cf8382195672a5e4b80636cdf41fba",
      "parents": [
        "3da44d217d546e8b7fe5b00f905ca38913255db2"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Jan 25 11:52:31 2022 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Jan 25 11:52:31 2022 -0500"
      },
      "message": "Fix hash generation after switching to \"git show\"\n\nWhen I switched to \"git show\" I didn\u0027t fully test whether it would\ngenerate the same patchwork hashes as \"git diff\" proper. The few sample\ntries I ran happened to do the right thing, but many other commits would\ngenerate different hashes. Make sure we ignore anything that comes\nbefore we find \"diff \" on the line.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "3da44d217d546e8b7fe5b00f905ca38913255db2",
      "tree": "1c7a0615a8adc224c55b041ae3b0c6f871c089e9",
      "parents": [
        "41cfb037967b23f873979dac3de7d018397ccc7c"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Jan 25 09:09:42 2022 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Jan 25 09:09:42 2022 -0500"
      },
      "message": "patchwork-bot: add ability to match by msgid\n\nPatchwork API 1.2 allows us to match by msgid, so update patchwork-bot\nto use Link: trailers for additional matching when we are unable to\nmatch by patchwork hash.\n\nAdditionally, reworks caching that wasn\u0027t actually saving us any time\nand drops the use of git patch-id that we used in the absence of msgid\nmatching.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "41cfb037967b23f873979dac3de7d018397ccc7c",
      "tree": "d2a7509c9910c5970b0d54fc35fb5967def72aa8",
      "parents": [
        "0c107968964fdff89ed6a7afb651b0fa5b28efe9"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Dec 16 15:10:47 2021 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Dec 16 15:10:47 2021 -0500"
      },
      "message": "Revert \"patchwork-bot: Ignore empty context lines\"\n\nThis reverts commit 8998144862b16cfa7a2ec07757d43ca269d59373.\nUnfotunately, this change broke matching for other patches, so roll it\nback to the way it was.\n\nReported-by: Jakub Kicinski \u003ckuba@kernel.org\u003e\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "0c107968964fdff89ed6a7afb651b0fa5b28efe9",
      "tree": "c2faac229c44127bc56be5a1120bb0d20ac6d898",
      "parents": [
        "db381d559031ce8ff3899ac79d62dbace4db902f"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Dec 14 16:54:48 2021 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Dec 14 16:54:48 2021 -0500"
      },
      "message": "patchwork-bot: add support for --tokens-file\n\nWe want to be able to share our configuration with others, which\nrequires that we keep secrets in a different file than the rest of the\nlogic.\n\nSuggested-by: Kees Cook \u003ckees@outflux.net\u003e\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "db381d559031ce8ff3899ac79d62dbace4db902f",
      "tree": "07e9a04f646bd296cc4fb9cc0e4d4c36ba3d925e",
      "parents": [
        "a48d14b2cd13540d0ad1a65e504b7d5ac19c15be"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Dec 14 16:01:42 2021 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Dec 14 16:01:42 2021 -0500"
      },
      "message": "patchwork-bot: add proper typing hints\n\nIt helps to catch easy bugs when writing in PyCharm and other IDEs.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "a48d14b2cd13540d0ad1a65e504b7d5ac19c15be",
      "tree": "93a0bc2061c04924193019f38653ed03ee4e1fa9",
      "parents": [
        "ffe2576ac7731b7596e4bdb1c10ab9768f93ee09"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Dec 14 14:49:51 2021 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Dec 14 14:49:51 2021 -0500"
      },
      "message": "patchwork-bot: remove xmlrpc vestiges\n\nWe used to need xmlrpc because API \u003c 1.2 didn\u0027t expose ability to search\npatches by hash. Now that it\u0027s available in API 1.2, we can get rid of\nall xmlrpc calls and just leave the REST api support.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "ffe2576ac7731b7596e4bdb1c10ab9768f93ee09",
      "tree": "50fcf221eb4ee92696d904c0caa9aa734a2aa26f",
      "parents": [
        "8998144862b16cfa7a2ec07757d43ca269d59373"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Thu Dec 02 15:38:36 2021 -0800"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Dec 13 17:28:51 2021 -0500"
      },
      "message": "patchwork-bot: Add --pwhash for debugging\n\nFinding a 2-character whitespace difference between patches with different\npatchwork hashes strained my sanity, so I want to keep the tooling I\nbuilt to track it down. Using \"--pwhash PATCH-ID\", patchwork-bot will\ncompare the given patch in patchwork (and its hash) against the diff\nfrom stdin (and its hash).\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nLink: https://lore.kernel.org/r/20211202233836.2024510-3-keescook@chromium.org\n"
    },
    {
      "commit": "8998144862b16cfa7a2ec07757d43ca269d59373",
      "tree": "f7a0b0e28ff598c86e09ca02fbc4791c31f0511b",
      "parents": [
        "6fc2e91a876b0a2771eedb0fe6106d7f47eb8aab"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Thu Dec 02 15:38:35 2021 -0800"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Dec 13 17:28:51 2021 -0500"
      },
      "message": "patchwork-bot: Ignore empty context lines\n\nIt seems that there is some mismatch in diff output (or storage?) between\ngit and patchwork under conditions I haven\u0027t figured out (MUA or MTA\nwhitespace stripping?): patchwork appears to ignore empty context lines\n(i.e. a line that is only a single space). As a result, the patchwork\nhash will not match, and commits will not be identified in patchwork.\n\nAs an example of a commit in upstream that patchwork-bot cannot locate\nin patchwork due to a different hash, due to the differing empty context\nlines:\n\n$ MSGID\u003d20210911102818.3804-1-len.baker@gmx.com\n$ wget -qO- https://patchwork.kernel.org/project/linux-hardening/patch/$MSGID/raw/ | \\\n\tgrep \u0027^ $\u0027 | wc -l\n0\n\n$ SHA\u003df11ee2ad25b22c2ee587045dd6999434375532f7\n$ git diff ${SHA}~..${SHA} | \\\n\tgrep \u0027^ $\u0027 | wc -l\n2\n\nTeaching patchwork-bot to ignore empty context lines allows pwhashes to\nmatch in these cases, which lets those patches get located again.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nLink: https://lore.kernel.org/r/20211202233836.2024510-2-keescook@chromium.org\n"
    },
    {
      "commit": "6fc2e91a876b0a2771eedb0fe6106d7f47eb8aab",
      "tree": "2d3228e91222281f7839e6f8e3310029a05902ac",
      "parents": [
        "460990bdca13805f7e9b5d6c8037437f655bcfac"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Tue Nov 30 16:11:26 2021 -0800"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Dec 13 17:28:18 2021 -0500"
      },
      "message": "patchwork-bot: Allow initial database to skip recent commits\n\nTo test patchwork-bot, it is helpful to create the initial database\nwithout a certain number of the latest commits, so that on the next\nexecution, the \"missing\" commits will appear new, and will be used for\nprocessing state changes. Add the --ancestors argument (defaulting to\n0, the existing behavior), to provide this ability.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nLink: https://lore.kernel.org/r/20211201001126.4106635-6-keescook@chromium.org\n"
    },
    {
      "commit": "460990bdca13805f7e9b5d6c8037437f655bcfac",
      "tree": "000524be6f07952c868a04a44994c1381e83785a",
      "parents": [
        "36971ee3ad62a56f40c3663a82b7475151df2a77"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Tue Nov 30 16:11:25 2021 -0800"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Dec 13 17:28:18 2021 -0500"
      },
      "message": "patchwork-bot: Handle repo being a worktree\n\nLocate the real git location when operating on a worktree, allowing\nmultiple pw.db files to be stored in a single top-level git repo.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nLink: https://lore.kernel.org/r/20211201001126.4106635-5-keescook@chromium.org\n"
    },
    {
      "commit": "36971ee3ad62a56f40c3663a82b7475151df2a77",
      "tree": "bc77dd172eaca0f21bf97ba9d3c9a7d608700b5c",
      "parents": [
        "e2dc648b93b77e45fde736ecbff8d0080fca41ff"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Tue Nov 30 16:11:24 2021 -0800"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Dec 13 17:28:18 2021 -0500"
      },
      "message": "patchwork-bot: Allow limiting heads to single branch\n\nTo sanely use a single git repository with multiple worktrees, it must\nbe possible to limit the commits by branch (otherwise all commits are\nvisible for all worktrees). Add an optional \"branch\" argument for this\nlimit.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nLink: https://lore.kernel.org/r/20211201001126.4106635-4-keescook@chromium.org\n"
    },
    {
      "commit": "e2dc648b93b77e45fde736ecbff8d0080fca41ff",
      "tree": "57e3b87f15631c108e3f23f05d28e9f5243b93f5",
      "parents": [
        "bba5718890cbc3704528c028e104dde197d4c49c"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Tue Nov 30 16:11:23 2021 -0800"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Dec 13 17:28:18 2021 -0500"
      },
      "message": "patchwork-bot: Create CACHEDIR if it is missing\n\nCreate the CACHEDIR if it is missing (e.g. the first time\ngit-patchwork-bot is executed).\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nLink: https://lore.kernel.org/r/20211201001126.4106635-3-keescook@chromium.org\n"
    },
    {
      "commit": "bba5718890cbc3704528c028e104dde197d4c49c",
      "tree": "8513c109e86cc1f7fef0ff07b5df9e1d2aa354a1",
      "parents": [
        "fdc9d1a11c091ebf17efb8a80f8b04c23e1ae80c"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Tue Nov 30 16:11:22 2021 -0800"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Dec 13 17:28:18 2021 -0500"
      },
      "message": "patchwork-bot: Note which actions are part of \"housekeeping\"\n\nExpand the --help text slightly to remind users what things the\n\"housekeeping\" option does.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nLink: https://lore.kernel.org/r/20211201001126.4106635-2-keescook@chromium.org\n"
    },
    {
      "commit": "fdc9d1a11c091ebf17efb8a80f8b04c23e1ae80c",
      "tree": "d5c5f067714ea854b5a316caaa782a7dc61929be",
      "parents": [
        "e21e357733ccaa1e29374dd99295f542409e1820"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Oct 07 11:14:17 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Oct 07 11:14:17 2021 -0400"
      },
      "message": "git-patchwork-bot: use shortened refname in notices\n\nThe refname is always going to be a branch, so remove \"refs/heads/\" in\nall notices being sent.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "e21e357733ccaa1e29374dd99295f542409e1820",
      "tree": "1a704bd3bdea27bc5efea00c8283311aef92838d",
      "parents": [
        "d9cad9011218fb192bd171c4be80688f5b845e4f"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Oct 06 22:18:27 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Oct 06 22:18:27 2021 -0400"
      },
      "message": "git-patchwork-bot: bugfixes and template change\n\nA few fixes in the patchwork-bot after intial trial runs. Change the\ndefault template to mention who the committer is when sending submitter\nnotifications.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "d9cad9011218fb192bd171c4be80688f5b845e4f",
      "tree": "97c668b973043bcab07fd3f8ebae8b8a7266c2e9",
      "parents": [
        "f61504244bfe18c3cba18de83c19f51d9ebeae56"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Oct 06 16:13:26 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Oct 06 16:13:26 2021 -0400"
      },
      "message": "git-patchwork-bot: use a global lock\n\nWhen running operations that require the shared cache database, make\nsure that only a single instance of the bot is running.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "f61504244bfe18c3cba18de83c19f51d9ebeae56",
      "tree": "fdc437f21959e0e64359182ca2e23c2280a98d8e",
      "parents": [
        "ba3eabc502958b87e30631636beb2a00861bbd8d"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Oct 06 15:58:20 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Oct 06 15:58:20 2021 -0400"
      },
      "message": "git-patchwork-bot: First go at committer information\n\nAn oft-requested feature is showing who it was that committed the patch\nto the repository. Add committer info to the summaries and submitter\nnotifications.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "ba3eabc502958b87e30631636beb2a00861bbd8d",
      "tree": "c0b1131ce21e20a30cbcf524744a584f1e1d19d3",
      "parents": [
        "b115b6a4496376c40cf38478f1dbccfe6612a4fc"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Oct 06 14:35:34 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Oct 06 14:35:34 2021 -0400"
      },
      "message": "bugzilla-junker: set as executable\n\nSet mode to 0755 for the bugzilla-junker script.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "b115b6a4496376c40cf38478f1dbccfe6612a4fc",
      "tree": "93830f9ffbeea4b8286f0830e421a589e90d4335",
      "parents": [
        "7b1be98a1f49cd42f1405335cb589d575272a041"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Oct 06 14:34:11 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Oct 06 14:34:11 2021 -0400"
      },
      "message": "git-patchwork-bot: Handle more merge commit formats\n\nWhen recognizing merge commits, handle merge messages that do not\nmention the refname of the remote.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "7b1be98a1f49cd42f1405335cb589d575272a041",
      "tree": "e3a306163b782cf821265ff9057d0c957bc97816",
      "parents": [
        "5e22d743b9be7ddc8ad2d07f09b215016c179f0e"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Sep 27 17:14:32 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Sep 27 17:14:32 2021 -0400"
      },
      "message": "Update git-patchwork-bot to use API 1.2\n\nThe latest API offers some improvements we can use in the near future.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "5e22d743b9be7ddc8ad2d07f09b215016c179f0e",
      "tree": "962a89b0d134fe5b35a47fae347dd7b51bc32c19",
      "parents": [
        "dbab40565644f6c26b0059c2036d16ecf791351b"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Sep 27 17:11:38 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Sep 27 17:11:38 2021 -0400"
      },
      "message": "Add bugzilla-junker\n\nThis is a helper script I use to keep tabs on spam posted to\nbugzilla.kernel.org.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "dbab40565644f6c26b0059c2036d16ecf791351b",
      "tree": "0fc41535e76e0cf216045c783b2c5fecb0ecfdf3",
      "parents": [
        "75071b1c24883374f54bc1359729172808b62395"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Sep 27 13:11:47 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Sep 27 13:11:47 2021 -0400"
      },
      "message": "Add the groupsio webhook\n\nThis is the backend that receives webhook events from groups.io and\nfeeds them into the local postfix queue for indexing with public-inbox.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "75071b1c24883374f54bc1359729172808b62395",
      "tree": "b11c31df8d18a65f31a35f2cea11d653578563e9",
      "parents": [
        "f6ac8bf765f605cb49d6dd4fc47e40fa3ef29eee"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Sep 15 16:43:17 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Sep 15 16:43:17 2021 -0400"
      },
      "message": "Add initial support for mailman3 archives\n\nHyperkitty mangles things in similar, but slightly different ways from\npipermail.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "f6ac8bf765f605cb49d6dd4fc47e40fa3ef29eee",
      "tree": "83ba8fa481ac4c3ec28bc91ba9ef101325fde19f",
      "parents": [
        "c7ce724155b46c21c53b8509f83ef2876704dd3a"
      ],
      "author": {
        "name": "Greg KH",
        "email": "gregkh@linuxfoundation.org",
        "time": "Thu Aug 05 19:36:44 2021 +0200"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Aug 05 14:00:30 2021 -0400"
      },
      "message": "stable-builder.py: add help text for what the valid commands are\n\nI always need to look up how to use the script, so have the script\nprovide a help command to show the valid commands.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "c7ce724155b46c21c53b8509f83ef2876704dd3a",
      "tree": "dc232d74b835153ea278c247cc564ffab1103679",
      "parents": [
        "a11dbcb8d9ab7f7adcb7fdb158a706753ef2c5a0"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Aug 05 13:54:15 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Aug 05 13:54:15 2021 -0400"
      },
      "message": "Use list_all_devices to avoid pagination\n\nWe always want all devices, regardless of how many pages we get back.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "a11dbcb8d9ab7f7adcb7fdb158a706753ef2c5a0",
      "tree": "ba826079317621cdbdf1b285c916547afbe02359",
      "parents": [
        "db94481b6925fd62fcfcb38ca4d59c0ef7fcc1c8"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Jul 20 16:32:48 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Tue Jul 20 16:32:48 2021 -0400"
      },
      "message": "Tweak output for pipermail processing\n\nShow how many messages in each processed archive.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "db94481b6925fd62fcfcb38ca4d59c0ef7fcc1c8",
      "tree": "b95fd9d88b0c594561aef9beb59d9fb82a119f11",
      "parents": [
        "9768c88abc66f12a9fa77302a66dc599a987c433"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Jul 15 15:50:01 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Jul 15 15:50:01 2021 -0400"
      },
      "message": "Add pi-origin-maker tool\n\nThis creates refs/meta/origins entries for public-inbox archives.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "9768c88abc66f12a9fa77302a66dc599a987c433",
      "tree": "02fbf06137bbfb8c4dafe25b3722229350c0a39c",
      "parents": [
        "21a3a883974f0bc9569aef0fcc6e14706b810f31"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri May 21 09:05:20 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri May 21 09:05:20 2021 -0400"
      },
      "message": "Use construct more tolerant to unicode failures\n\nWhen we iterate directly through messages, unicode or other parsing\nerrors cause us to BT on the entire mailbox. Iterating by key allows us\nto only skip individual unparseable messages.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "21a3a883974f0bc9569aef0fcc6e14706b810f31",
      "tree": "48f5850edc2f0cd2d68a905507312bd7922f9e99",
      "parents": [
        "bade6f603831c88ce54eed656f453d1101402451"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Wed Apr 14 16:12:35 2021 +0200"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 15 11:04:17 2021 -0400"
      },
      "message": "list-archive-maker: better handle mails with misencoded real names\n\nWithout this change list-archive-maker just dies with an Exception\n\nSigned-off-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nLink: https://lore.kernel.org/r/20210414141235.26630-2-u.kleine-koenig@pengutronix.de\n"
    },
    {
      "commit": "bade6f603831c88ce54eed656f453d1101402451",
      "tree": "6e4403b62650c89ebd14cc7078695a0278556333",
      "parents": [
        "cbf789d9fd29470e8c120a5a7f17a46d8fd2a99b"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Wed Apr 14 16:12:34 2021 +0200"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 15 11:02:58 2021 -0400"
      },
      "message": "list-archive-maker: collect recipents in lists instead of strings\n\nThis is more pythonic and should also be quicker to execute.\n\nNote there is an (intended) side effect of this change. If cc already\ncontains \"twentyone@example.com\" and pair[1] is \"one@example.com\", the\nlatter was detected as already contained in cc.\n\nSigned-off-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\nLink: https://lore.kernel.org/r/20210414141235.26630-1-u.kleine-koenig@pengutronix.de\n"
    },
    {
      "commit": "cbf789d9fd29470e8c120a5a7f17a46d8fd2a99b",
      "tree": "fdad0b796b4d884e119e64f3cc41ffd285254401",
      "parents": [
        "23e13997be3311aa25a503d1ede01de9b9c5bef0"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 15 11:01:01 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 15 11:01:01 2021 -0400"
      },
      "message": "Add DCO\n\nAdd DCO from developercertificate.org and indicate that all\ncontributions must carry a Signed-off-by: line.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "23e13997be3311aa25a503d1ede01de9b9c5bef0",
      "tree": "ec18118f0d6276f654a15d060c5621e320e85335",
      "parents": [
        "adb5cd690a51db1a842675097fb2849f7bb01fd9"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 15 10:54:47 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 15 10:54:47 2021 -0400"
      },
      "message": "Remove obsolete scripts\n\nBoth attest-patches and get-lore-mbox are now part of b4.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "adb5cd690a51db1a842675097fb2849f7bb01fd9",
      "tree": "856bdbc0591d2df364d4c4a5438ddbd7635745a6",
      "parents": [
        "45172ee760eb6210d9c153b6fe92888c79b662b0"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Apr 14 09:52:55 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Apr 14 09:52:55 2021 -0400"
      },
      "message": "Adjust email address in README\n\nTell people to send patches to tools@linux.kernel.org.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "45172ee760eb6210d9c153b6fe92888c79b662b0",
      "tree": "a56ca37ac9d1b7c010c5be96bfd8e2f7382193e8",
      "parents": [
        "fb2127c41bfc75cfcc1274c0f164ad17e4e68bcc"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 01 16:15:13 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 01 16:15:13 2021 -0400"
      },
      "message": "Fix for when mailhost is not defined\n\nMinor bug with using an undefined value.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "fb2127c41bfc75cfcc1274c0f164ad17e4e68bcc",
      "tree": "aa517edcedffa890b276e38a7def522b928ffb53",
      "parents": [
        "d1cd4e85906155b4a99c362c370e23e530ce461a"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 01 15:25:41 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 01 15:25:41 2021 -0400"
      },
      "message": "Show which keyring we are using\n\nIndicate which keyring we are using when verifying signatures.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "d1cd4e85906155b4a99c362c370e23e530ce461a",
      "tree": "be3bf8226ad5c1f11e89ac4be36dadea869d2908",
      "parents": [
        "b303c731387107a9f2755275dedcc685bfc8c030"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 01 15:02:53 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 01 15:02:53 2021 -0400"
      },
      "message": "Tweak sig-prover header (instructions)\n\nMention that it can be run as a simple background process.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "b303c731387107a9f2755275dedcc685bfc8c030",
      "tree": "931170f7934e6b9a71ba6916b6ea7ae67e76be65",
      "parents": [
        "cb55769aa192731d819b306d3d3904ba443d22dd"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 01 14:56:36 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 01 14:56:36 2021 -0400"
      },
      "message": "Copy admonition from the commit\n\nMake sure the admonition about not relying too much on sig-prover is\nplainly visible.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "cb55769aa192731d819b306d3d3904ba443d22dd",
      "tree": "4179cf245d9df88bab1e8cc548436769d85d15c8",
      "parents": [
        "3f3a8532c0e0101c8ba7121182a756ba68713923"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 01 14:42:41 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Apr 01 14:42:41 2021 -0400"
      },
      "message": "Add sig-prover\n\nSig-prover is a tool I use to random-check mirrors for signs of tarball\ncorruption (or worse). It will download random kernel/git/etc tarballs\nfron the frontends and verify them against the signatures, alerting when\nthere is a verification failure.\n\nThis script is not a guaranteed mechanism to detect intrusion -- an\nattacker can defeat it by analyzing access patterns/IPs and serving\ndifferent content when it suspects that someone is running an automated\nsignature verification check. The script can probably be improved by\nadding random delays between retrieving the tarball and the detached\nsignature, setting a referrer value, etc. However, even with added\nmeasures, it will always act fairly predictably, so there will always\nremain a way to defeat it.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "3f3a8532c0e0101c8ba7121182a756ba68713923",
      "tree": "da9b5d0a147b90492f7c45b495f1a046c7b1e460",
      "parents": [
        "4bc9130253d01efaabbb26c3c8114f3574716cd1"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Mar 26 17:44:42 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Mar 26 17:44:42 2021 -0400"
      },
      "message": "Fix mailman demangling\n\nMake it more generic without a pre-check. May not even be slower.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "4bc9130253d01efaabbb26c3c8114f3574716cd1",
      "tree": "aa4fc7250dc90ef9013aa8189cd2b47ae8da29c8",
      "parents": [
        "71e570c5f090b5740e323f98504bf38592785b49"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Mar 22 08:48:38 2021 -0400"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Mar 22 08:48:38 2021 -0400"
      },
      "message": "Include the stable-builder minibot\n\nThis is used by Greg KH to bring up a builder in Equinix Metal (and to\nhave it auto-ripped if he forgets to destroy it manually).\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "71e570c5f090b5740e323f98504bf38592785b49",
      "tree": "ae4227e927302229e3bcee984656259366649df9",
      "parents": [
        "8c4f061d3fc1bda4b1b934b1fe10e6e36203a1e2"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 07 10:41:12 2021 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Sun Mar 07 10:41:12 2021 -0500"
      },
      "message": "Don\u0027t use CDN for checksums file\n\nSome users are running against stale cache problems with the checksums\nfile, so grab it directly from the origin servers instead.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "8c4f061d3fc1bda4b1b934b1fe10e6e36203a1e2",
      "tree": "afb1c075b3395080136ac2fe270b40dd42c1d3f7",
      "parents": [
        "19562207018976258eca632e4ec315443b4a0576"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Feb 18 10:41:21 2021 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Thu Feb 18 10:41:21 2021 -0500"
      },
      "message": "Update CDNBUNDLE defaults\n\nBundle files are now too big to be handled by cdn.kernel.org (Fastly),\nso use canonical URLs that will redirect to mirrors.edge.kernel.org.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "19562207018976258eca632e4ec315443b4a0576",
      "tree": "701980a66c102ffa1a81756a13e35af92e58a733",
      "parents": [
        "c04e8bc107165a6cd49bcf8ee5564b92ed99edd8"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Feb 17 08:04:44 2021 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Wed Feb 17 08:04:44 2021 -0500"
      },
      "message": "Make sure we cast the header to string\n\nI\u0027m not sure why Python doesn\u0027t just return one or the other, but make\nsure it\u0027s always a string before we try to operate on it.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "c04e8bc107165a6cd49bcf8ee5564b92ed99edd8",
      "tree": "e23817c083c156e8a75384fcac2090f8de2d5e95",
      "parents": [
        "a43d5b4f7210dec5adba9b6fddd13d37c4da50df"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 27 11:11:33 2020 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 27 11:11:33 2020 -0500"
      },
      "message": "Don\u0027t die on bugs in python\u0027s email module\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "a43d5b4f7210dec5adba9b6fddd13d37c4da50df",
      "tree": "7a5d10b108ea761e4d09259babaa16374818d1cb",
      "parents": [
        "3c53de2fce73baf911c3c8290791af7d5ced3f21"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 27 11:04:36 2020 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 27 11:04:36 2020 -0500"
      },
      "message": "Handle From lines without @\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "3c53de2fce73baf911c3c8290791af7d5ced3f21",
      "tree": "61c148ea5728878c8661d18524d486c5b6926add",
      "parents": [
        "d9d9d4eee641cd007487a7f5c4defd71f2d21ee8"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 27 10:58:08 2020 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 27 10:58:08 2020 -0500"
      },
      "message": "Be more conservative assuming mbx format\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "d9d9d4eee641cd007487a7f5c4defd71f2d21ee8",
      "tree": "375bd06c5612a16dcb4e8a7c074fd4c67017d4dc",
      "parents": [
        "fa9a573b428dd8e8ce67e4ab0a2c28111ec7988d"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 27 10:56:31 2020 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 27 10:56:31 2020 -0500"
      },
      "message": "More handling of non-mangled mailman archives\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "fa9a573b428dd8e8ce67e4ab0a2c28111ec7988d",
      "tree": "5394a270ea1b5c55d31b295bcd3022cbbcb4cfa0",
      "parents": [
        "2fbfda8826f449a25c1c1f84b6b6933b2b900f04"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 27 10:52:09 2020 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 27 10:52:09 2020 -0500"
      },
      "message": "Don\u0027t demangle From: if it\u0027s not mangled\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "2fbfda8826f449a25c1c1f84b6b6933b2b900f04",
      "tree": "f863e263cbc7def1459f7cf1664f9c9259033e7f",
      "parents": [
        "a6d26ec0e1e1ab4311572e2c957fa8cf24b9c924"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 27 10:46:07 2020 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 27 10:46:07 2020 -0500"
      },
      "message": "Fix crasher on missing From: address\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "a6d26ec0e1e1ab4311572e2c957fa8cf24b9c924",
      "tree": "dc91aef36b064d9ef7390c4459b20325b9a470fa",
      "parents": [
        "aabb998988810989806dbc2e0dace84d0fa909ed"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 27 10:40:32 2020 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 27 10:40:32 2020 -0500"
      },
      "message": "Deal with mailman archives that don\u0027t mangle\n\nThose do exist!\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "aabb998988810989806dbc2e0dace84d0fa909ed",
      "tree": "b01b5dcdf8947a0faa16055266a55833ec2137d8",
      "parents": [
        "fb6f2278be47365c14c17241c81d22ca9276a7c4"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Nov 16 15:36:18 2020 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Mon Nov 16 15:36:18 2020 -0500"
      },
      "message": "Fix mailman archive downloads\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "fb6f2278be47365c14c17241c81d22ca9276a7c4",
      "tree": "d7c46977e9a2c2046bc06fd3e57020d2e93091a5",
      "parents": [
        "ca90b810e6e151c3308a8b911a7f6a501c739ffb"
      ],
      "author": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 13 14:53:48 2020 -0500"
      },
      "committer": {
        "name": "Konstantin Ryabitsev",
        "email": "konstantin@linuxfoundation.org",
        "time": "Fri Nov 13 14:53:48 2020 -0500"
      },
      "message": "Default to project-level fromstates\n\nDon\u0027t redefine fromstate, just take what is defined at the project\nlevel.\n\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n"
    }
  ],
  "next": "ca90b810e6e151c3308a8b911a7f6a501c739ffb"
}
