)]}'
{
  "commit": "b588dd98bebd2e1072c8ed588544bacb6f62ceeb",
  "tree": "0b9fbb0dc105f82ab6b7b6d5bba05933b7b028a0",
  "parents": [
    "ab14d6594cacaefa2a4311da356846c98bf784d1"
  ],
  "author": {
    "name": "David Ostrovsky",
    "email": "david@ostrovsky.org",
    "time": "Sat Jun 27 12:47:29 2026 +0200"
  },
  "committer": {
    "name": "David Ostrovsky",
    "email": "david@ostrovsky.org",
    "time": "Tue Jun 30 07:00:51 2026 +0200"
  },
  "message": "tools: Add shared servlet-flavour transform toolchain\n\nJGit, Gitiles, and Gerrit each generate a second servlet-API flavour\nof their servlet-facing modules from one canonical source tree (JGit:\njakarta-\u003ejavax .ee8; Gitiles: javax-\u003ejakarta .ee10). Centralize that\nmachinery here so all consumers share one copy instead of carrying\ndivergent per-repo rulesets.\n\nThe toolchain is sed based and self-contained: the rewrite is a plain\nsed package-prefix substitution (line for line, preserving package\nnames and source line numbers), so it needs no external dependency and\nworks unchanged on the WORKSPACE-based stable branches too.\n\nThe servlet/Jetty package mapping is universal, so it lives here once\n(in servlet_transform.bzl) and consumers carry no renames data: they\nselect only a direction, to_javax (jakarta-\u003ejavax, Jetty ee10-\u003eee8)\nor to_jakarta (javax-\u003ejakarta, Jetty ee8-\u003eee10).\n\nAdd under tools/:\n\n  servlet_transform.bzl\n    transform_srcjar rule; the built-in package mapping is applied in\n    the chosen direction.\n  generated_srcs_test.sh\n    derivation / line-count / residue checker; residue checks are\n    caller-supplied (--forbid, --require, --require-if-source) so it\n    is direction-agnostic.\n  SERVLET_TRANSFORM.md\n    usage.\n\nGenerated test targets compile the transformed srcjar with the\njunit_tests suite_srcs parameter (added in the prerequisite change);\nno separate junit macro is needed.\n\nChange-Id: I7b1bf13c119e722205ad267016ab477ecc999bdf\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "635164b9f42789bfd3a077b3d8465e5e0218f6e5",
      "new_mode": 33188,
      "new_path": "tools/SERVLET_TRANSFORM.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "439e4454561abafbec2ec505a5e532b4cd148605",
      "new_mode": 33261,
      "new_path": "tools/generated_srcs_test.sh"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ab3d05aee6ea28ca3d56d7d2b68e278154c62cae",
      "new_mode": 33188,
      "new_path": "tools/servlet_transform.bzl"
    }
  ]
}
