)]}'
{
  "commit": "c347ae65f72482bd5a8068a5360b93554fd3bea0",
  "tree": "abe51da182f06c74854d16d88a59873ec9494d16",
  "parents": [
    "35201f1fcf3a369973f57bf3285ff3c69a39f03b"
  ],
  "author": {
    "name": "Konstantin Ryabitsev",
    "email": "konstantin@linuxfoundation.org",
    "time": "Wed Jun 10 01:28:01 2026 +0000"
  },
  "committer": {
    "name": "Konstantin Ryabitsev",
    "email": "konstantin@linuxfoundation.org",
    "time": "Wed Jun 10 01:46:46 2026 +0000"
  },
  "message": "Add b4.custom-msgid-cmd for replies and notifications\n\nReview replies and thank-you notes are sent directly over SMTP via\nsend_mail(), bypassing git-send-email and therefore any\nsendemail-validate hook that would normally rewrite the Message-Id.\nThese messages thus always got a built-in \u003c...@b4\u003e id, with no way for\nmaintainers who rely on their own message-id scheme to override it.\n\nAdd an opt-in b4.custom-msgid-cmd option: when set, run it and use its\nstdout as the Message-Id (angle brackets optional), falling back to the\nbuilt-in id when unset, empty, or on failure. Rather than introduce a\nparallel make_msgid() variant, fold the hook directly into make_msgid()\nbehind an allow_custom_msgid_cmd flag and flip it on at exactly the\nreply/notification call sites: review replies, follow-up replies, and\nb4 ty thank-you notes.\n\nSeries patches sent with b4 prep/send are unaffected, since they derive\ntheir message-ids from make_msgid_tpt() rather than make_msgid(). The\nsynthetic b4 pr GIT PULL messages are likewise left alone, as their ids\nare deliberately derived from the pull request and anchored to\ngithub.com.\n\nKey changes:\n- make_msgid() grows an allow_custom_msgid_cmd flag that consults the\n  new b4.custom-msgid-cmd config when set\n- Enable the flag for review replies, follow-up replies, and ty notes\n- Document b4.custom-msgid-cmd in docs/config.rst\n- Add unit tests covering opt-in, bracket handling, list-valued config,\n  and fallback on unset/failing/empty-output commands\n\nSuggested-by: Christian Brauner (Amutable) \u003cbrauner@kernel.org\u003e\nLink: https://lore.kernel.org/r/20260522-review-msgid-cmd-v1-1-facc71f2e084@kernel.org\nAssisted-by: claude-opus-4-8\nSigned-off-by: Konstantin Ryabitsev \u003ckonstantin@linuxfoundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2490f54ee86d98742808bb6d5696b2cd831e5f18",
      "old_mode": 33188,
      "old_path": "docs/config.rst",
      "new_id": "bde75e8c89edd30b6c4faad282a04baf82b3c20f",
      "new_mode": 33188,
      "new_path": "docs/config.rst"
    },
    {
      "type": "modify",
      "old_id": "0530fecf950c5be85d66865b7912cc9b03fa9b44",
      "old_mode": 33188,
      "old_path": "src/b4/__init__.py",
      "new_id": "846873a95e7ca1710565d13e5919ed444045e2ee",
      "new_mode": 33188,
      "new_path": "src/b4/__init__.py"
    },
    {
      "type": "modify",
      "old_id": "e895ce52c7f55cf8666123e3154e50236a8cf9f9",
      "old_mode": 33188,
      "old_path": "src/b4/review/_review.py",
      "new_id": "1101f956d9ed0b9182449fab573725b3a020f174",
      "new_mode": 33188,
      "new_path": "src/b4/review/_review.py"
    },
    {
      "type": "modify",
      "old_id": "4e096af7c58ab7bb359b653a18d51b2da5a4e1a2",
      "old_mode": 33188,
      "old_path": "src/b4/ty.py",
      "new_id": "f32e94e35f751b1108f4a29f080b85bce9cfbb34",
      "new_mode": 33188,
      "new_path": "src/b4/ty.py"
    },
    {
      "type": "modify",
      "old_id": "3c4c2d099b1a836097af74800eae0e45a4b9dde3",
      "old_mode": 33188,
      "old_path": "src/tests/test___init__.py",
      "new_id": "2e59347cee9182f572f8785c682a2a8e1d238ea2",
      "new_mode": 33188,
      "new_path": "src/tests/test___init__.py"
    }
  ]
}
