)]}'
{
  "commit": "79b6d5f2ee1472a4aaf3224b7670f3c55b8dace2",
  "tree": "90f93ad83a87fc72390eae108c8f083aeb3ae005",
  "parents": [
    "beb63f6f62a0a739ea225d4206caafc2bbca3368"
  ],
  "author": {
    "name": "Tamas Cservenak",
    "email": "tamas@cservenak.net",
    "time": "Mon Dec 01 17:31:39 2025 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Dec 01 17:31:39 2025 +0100"
  },
  "message": "Repository Key Function SPI (#1679)\n\nNew opt-in **experimental** feature for enhanced local repository: ability to choose \"repository key\" function. Local repository (simple and enhanced) by default uses the `simple` key (historically) where other places all used `nid`. Have to note, that `simple` is technically equivalent to `nid` as `RemoteRepository.isRepositoryManager()` is not set anywhere in Maven.\n\nAdded key functions:\n* `simple` -\u003e the original code in LRM\n* `nid` -\u003e `norm(id)` (path friendly)\n* `hurl` -\u003e `sha1(url)`\n* `nid_hurl` -\u003e `norm(id)-sha1(url)`\n* `gurk` -\u003e `norm(id)-sha1(seed)` where \"seed\" is all config properties of repo\n* `ngurk` -\u003e `norm(id)-sha1(seed)` where \"seed\" is all config sans mirror list (just the string \"isMirrored\" is added for mirrors)\n\nIntroduced `RepositoryKeyFunction` type, that is used consistently in enhanced local repository (availability calculation), prefix composer (split repository prefix calculation) and remote repository manager (remote repository consolidation). This is new SPI, and impl provides default implementation with those above.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "327815fdbe742b4109a5e4e1f91c4b48e00ffc6f",
      "old_mode": 33188,
      "old_path": "maven-resolver-api/src/main/java/org/eclipse/aether/ConfigurationProperties.java",
      "new_id": "3945a74869313c2c38f2d895e3509f189f0ca452",
      "new_mode": 33188,
      "new_path": "maven-resolver-api/src/main/java/org/eclipse/aether/ConfigurationProperties.java"
    },
    {
      "type": "modify",
      "old_id": "44ae964b0d6d50efce8423df271136bc6a88a111",
      "old_mode": 33188,
      "old_path": "maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalRepository.java",
      "new_id": "6c586c5724551d12a41ad67a8051a3c2d21e5146",
      "new_mode": 33188,
      "new_path": "maven-resolver-api/src/main/java/org/eclipse/aether/repository/LocalRepository.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e44f7cdc98d74a56e2701eac18d8d681f271dd0b",
      "new_mode": 33188,
      "new_path": "maven-resolver-api/src/main/java/org/eclipse/aether/repository/RepositoryKeyFunction.java"
    },
    {
      "type": "modify",
      "old_id": "e128af2094200a2dfceaf1d4c1a5318bf7f00e41",
      "old_mode": 33188,
      "old_path": "maven-resolver-api/src/main/java/org/eclipse/aether/repository/WorkspaceRepository.java",
      "new_id": "9b0b440218e1519b3ddff1c06ccd76e1bafc4d5e",
      "new_mode": 33188,
      "new_path": "maven-resolver-api/src/main/java/org/eclipse/aether/repository/WorkspaceRepository.java"
    },
    {
      "type": "modify",
      "old_id": "b44f4011bdf082665cdc9a59c7c9da372e462146",
      "old_mode": 33188,
      "old_path": "maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/Resolver.java",
      "new_id": "8b5e308f78d8e38e848e7f0c9e49844e369ac59e",
      "new_mode": 33188,
      "new_path": "maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/Resolver.java"
    },
    {
      "type": "modify",
      "old_id": "7c0e70a467eb50ea4c007864a56d5371b2203c82",
      "old_mode": 33188,
      "old_path": "maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/ResolverDemo.java",
      "new_id": "eb8193bbdc0e424c07c68d6c74bfe1b8fd4e27e1",
      "new_mode": 33188,
      "new_path": "maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/resolver/ResolverDemo.java"
    },
    {
      "type": "modify",
      "old_id": "2a18ce049b099908cd9f858094207e83d0bb7764",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultLocalPathPrefixComposerFactory.java",
      "new_id": "022400667613233a5586034d7f8268cd3e180921",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultLocalPathPrefixComposerFactory.java"
    },
    {
      "type": "modify",
      "old_id": "3ad72aade63042c2ae9a46b2b29a44b390bce060",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java",
      "new_id": "fbe35695aa61c1cff7557719c865a679294b4eea",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManager.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4f7a706217a262249bb6a3f6207f8dd15471f20f",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositoryKeyFunctionFactory.java"
    },
    {
      "type": "modify",
      "old_id": "e55150f3feb4342684747bc97d57ce0739360c49",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManager.java",
      "new_id": "dd314fed9d5ee99393144cc7690ab2782ef1af2f",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManager.java"
    },
    {
      "type": "modify",
      "old_id": "b00f1dff94ad16b6fee3a0a878718d4a25f7fac7",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerFactory.java",
      "new_id": "e31a493c914f2cba09e534467f5deb88c0782fb9",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerFactory.java"
    },
    {
      "type": "modify",
      "old_id": "b86223b53a39f29649f68dcf846a0e271aff3e5c",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/LocalPathPrefixComposerFactorySupport.java",
      "new_id": "a01b377c8313a0b91459e0bb6e3dcc2539adceda",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/LocalPathPrefixComposerFactorySupport.java"
    },
    {
      "type": "modify",
      "old_id": "ea751d41a957fe04936e7816c658052dd1ec76eb",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManager.java",
      "new_id": "0acf1b3743a56546f120ec7ce172251e6283fc2a",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManager.java"
    },
    {
      "type": "modify",
      "old_id": "c1e4ccd21d5a2b92dadab8a89d960bdad0993486",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerFactory.java",
      "new_id": "f4546085220902fda1bcad50b408226605da2f3f",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerFactory.java"
    },
    {
      "type": "modify",
      "old_id": "fc417884cf17aa98d58f663bd7d20dcd840b33da",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/checksum/FileTrustedChecksumsSourceSupport.java",
      "new_id": "8f052b92be745c625e5a538d71851f9ef321976a",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/checksum/FileTrustedChecksumsSourceSupport.java"
    },
    {
      "type": "modify",
      "old_id": "1d6af287babfc71c7bbcfe0d07132c54bc275eda",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/checksum/SparseDirectoryTrustedChecksumsSource.java",
      "new_id": "0456b3f179236e30a185d2b29976c055fa0aca65",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/checksum/SparseDirectoryTrustedChecksumsSource.java"
    },
    {
      "type": "modify",
      "old_id": "85c9be19f54564483dca4ecf4a8bfc5f847898b2",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/checksum/SummaryFileTrustedChecksumsSource.java",
      "new_id": "f7f451546205b7381c5f4ccd54463c72754faaa4",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/checksum/SummaryFileTrustedChecksumsSource.java"
    },
    {
      "type": "modify",
      "old_id": "3d6643876f0ebf1141a34f9825cd2a412ac54ca9",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/GroupIdRemoteRepositoryFilterSource.java",
      "new_id": "32be14c79746b2b3f5ad826d09c48bfd5903549a",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/GroupIdRemoteRepositoryFilterSource.java"
    },
    {
      "type": "modify",
      "old_id": "9a4b2c3019ccd3a3244d4929a9ee51415b7bb0ff",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/PrefixesRemoteRepositoryFilterSource.java",
      "new_id": "8e77aab2151af2f1adfcc42ecf7fad6f54990a29",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/PrefixesRemoteRepositoryFilterSource.java"
    },
    {
      "type": "modify",
      "old_id": "438c5eaa8d18bdb582626a54873058c0b1891352",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/RemoteRepositoryFilterSourceSupport.java",
      "new_id": "e97900d11bd0d47c0a88b2199f7ad9af7ac0a2d9",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/filter/RemoteRepositoryFilterSourceSupport.java"
    },
    {
      "type": "modify",
      "old_id": "0a47ac7ae02ba61da30f20a1c274ba799423fde7",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultLocalPathPrefixComposerFactoryTest.java",
      "new_id": "8f6c53452fd00907abf81e2d4e11e5182489b2c3",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultLocalPathPrefixComposerFactoryTest.java"
    },
    {
      "type": "modify",
      "old_id": "20ec8462ea708b422828870ba7dbb03b6ede5aab",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManagerTest.java",
      "new_id": "9b51a2db5b1424d8f17bd15a975c4a62697cd4a7",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRemoteRepositoryManagerTest.java"
    },
    {
      "type": "modify",
      "old_id": "08b75df3f551698e751427b97db1f1165c22a3b9",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRepositorySystemTest.java",
      "new_id": "4fa1953d5960b24c225180604e8f619639e871da",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRepositorySystemTest.java"
    },
    {
      "type": "modify",
      "old_id": "7d8a296cc5cad98b7b1a5bfc6f069d5aac3c2703",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerTest.java",
      "new_id": "2e3468dc6ccd63b9733ab086ce89581c7b90289d",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerTest.java"
    },
    {
      "type": "modify",
      "old_id": "4a78ea302619763f17e3c9bf5748a20af4440591",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/EnhancedSplitLocalRepositoryManagerTest.java",
      "new_id": "538c7afe021a024d51e4db85b50c4b8ed7e2932d",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/EnhancedSplitLocalRepositoryManagerTest.java"
    },
    {
      "type": "modify",
      "old_id": "fbe2409920b2b285985e9e4a3dc5f6ff6bc1a297",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerTest.java",
      "new_id": "5bd6741364c4cadf709c965f79f8af808fb995a5",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/SimpleLocalRepositoryManagerTest.java"
    },
    {
      "type": "modify",
      "old_id": "83e812a577315fcace33e53c78526be5c42424ee",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/checksum/SparseDirectoryTrustedChecksumsSourceTest.java",
      "new_id": "2053ee48951bb71fe32795670f4588ed7facb853",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/checksum/SparseDirectoryTrustedChecksumsSourceTest.java"
    },
    {
      "type": "modify",
      "old_id": "2646d783cd1f45933d0af827bd8fb179aa48c5b0",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/checksum/SummaryFileTrustedChecksumsSourceTest.java",
      "new_id": "6d31e5da854cc2f623cf01ba3094fdd61462f5a2",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/checksum/SummaryFileTrustedChecksumsSourceTest.java"
    },
    {
      "type": "modify",
      "old_id": "4a60622adcf97ed8f31944f15157bc69573473e6",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/filter/GroupIdRemoteRepositoryFilterSourceTest.java",
      "new_id": "6bcbdaaf9bc37f5e485deb006e2e7ce00769a75b",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/filter/GroupIdRemoteRepositoryFilterSourceTest.java"
    },
    {
      "type": "modify",
      "old_id": "7d7c21782687079b0a3d6e5bebd97b9019c16ed9",
      "old_mode": 33188,
      "old_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/filter/PrefixesRemoteRepositoryFilterSourceTest.java",
      "new_id": "5db48616feafc86390e42b8025f696a4454cb19b",
      "new_mode": 33188,
      "new_path": "maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/filter/PrefixesRemoteRepositoryFilterSourceTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d537a10f6b9b249c167b2499f03859eabc5d3c6b",
      "new_mode": 33188,
      "new_path": "maven-resolver-spi/src/main/java/org/eclipse/aether/spi/remoterepo/RepositoryKeyFunctionFactory.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0a53f82350d86182e05b3754ed1fe40dd31e700a",
      "new_mode": 33188,
      "new_path": "maven-resolver-spi/src/main/java/org/eclipse/aether/spi/remoterepo/package-info.java"
    },
    {
      "type": "modify",
      "old_id": "c104ebc4581e899b02694f5bedb826cf40490cef",
      "old_mode": 33188,
      "old_path": "maven-resolver-supplier-mvn3/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java",
      "new_id": "26abebd3e6a4d6f1c4170d09ec2249ba30d723ff",
      "new_mode": 33188,
      "new_path": "maven-resolver-supplier-mvn3/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java"
    },
    {
      "type": "modify",
      "old_id": "0fc19c0e9bf9d5c3ee5d1029addb7ae453fdeb5f",
      "old_mode": 33188,
      "old_path": "maven-resolver-supplier-mvn4/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java",
      "new_id": "870b6b1c811fbd887598aa8bef0f4bebc4387184",
      "new_mode": 33188,
      "new_path": "maven-resolver-supplier-mvn4/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java"
    },
    {
      "type": "modify",
      "old_id": "5c8bbbbcd71b54f520aa6cb2881ae47f8dbf9158",
      "old_mode": 33188,
      "old_path": "maven-resolver-util/src/main/java/org/eclipse/aether/util/repository/RepositoryIdHelper.java",
      "new_id": "6cacbb707c64758367a8e81d0fdc13f78f8d7e45",
      "new_mode": 33188,
      "new_path": "maven-resolver-util/src/main/java/org/eclipse/aether/util/repository/RepositoryIdHelper.java"
    },
    {
      "type": "modify",
      "old_id": "bdbc15c1e1a531c4f6be844bb3cf4fb2be185d1d",
      "old_mode": 33188,
      "old_path": "maven-resolver-util/src/test/java/org/eclipse/aether/util/repository/RepositoryIdHelperTest.java",
      "new_id": "74f5b73b5394ab3fa1c99758fd478b78b0546b36",
      "new_mode": 33188,
      "new_path": "maven-resolver-util/src/test/java/org/eclipse/aether/util/repository/RepositoryIdHelperTest.java"
    },
    {
      "type": "modify",
      "old_id": "4735a16ed4d8bc4c0a70460177b2e2f1efd6211f",
      "old_mode": 33188,
      "old_path": "src/site/markdown/configuration.md",
      "new_id": "295203c09e498569b8a0a0fc89ee3f5c29346e46",
      "new_mode": 33188,
      "new_path": "src/site/markdown/configuration.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "250df5e2866ca6ceb4623f29f9121a5c8752bbf0",
      "new_mode": 33188,
      "new_path": "src/site/markdown/repository-key-function.md"
    },
    {
      "type": "modify",
      "old_id": "91e5e983a0e40433efd0d6986b0c79f410b77e8e",
      "old_mode": 33188,
      "old_path": "src/site/site.xml",
      "new_id": "677ec4ff1c8424f6b5eca54f8d8d16436b1c11f0",
      "new_mode": 33188,
      "new_path": "src/site/site.xml"
    }
  ]
}
