feat(cross-repo): link Maven library dependencies#442
Conversation
7dbddb6 to
911c01c
Compare
c9002a5 to
7abffbb
Compare
|
Heads-up: this project now validates every PR automatically — tests, lint, security/license gates, and DCO sign-off (CONTRIBUTING.md). Your branch predates this, so CI will flag the missing |
Signed-off-by: Pankaj Sharma <192576993+nvt-pankajsharma@users.noreply.github.com>
Signed-off-by: Pankaj Sharma <192576993+nvt-pankajsharma@users.noreply.github.com>
Signed-off-by: Pankaj Sharma <192576993+nvt-pankajsharma@users.noreply.github.com>
Signed-off-by: Pankaj Sharma <192576993+nvt-pankajsharma@users.noreply.github.com>
Signed-off-by: Pankaj Sharma <192576993+nvt-pankajsharma@users.noreply.github.com>
31ad309 to
12141b4
Compare
Signed-off-by: Pankaj Sharma <192576993+nvt-pankajsharma@users.noreply.github.com>
12141b4 to
a8d6039
Compare
|
Please let me know if anything need to be done on this from my side. |
|
Thanks for checking in. The remaining action from your side is still the DCO / rebase cleanup from the earlier maintainer note: please rebase on current A typical sequence is: git fetch origin
git rebase --signoff origin/main
git push --force-with-leaseAfter that, CI/DCO should tell us whether anything else is needed before review. |
|
Thanks for the Maven cross-repo dependency work. This is in a sensitive indexing path, so please add a short design note covering the new edge semantics, limits on POM parsing, and expected behavior for dependencyManagement/plugins/parent POMs. Since |
Summary
Fixes #440
Adds Maven artifact dependency matching to
cross-repo-intelligenceso independently indexed repos can expose shared-library usage, not only HTTP/async/channel relationships.This PR adds:
src/pipeline/pass_cross_repo_maven.[h]for Maven-specific cross-repo matchingCROSS_LIBRARY_DEPENDS_ONedges in the consumer/source projectCROSS_LIBRARY_USED_BYedges in the provider/target projectcross_library_edgesCROSS_LIBRARY_*edge typesScope
This is intentionally scoped to direct Maven
pom.xmlartifact dependency relationships. Gradle, npm, Go modules, Python packages, and source import-to-artifact resolution should be follow-up issues.Maven plugin classpath dependencies are intentionally not treated as service/library usage. Maven
<exclusion>entries are also intentionally ignored because they describe libraries excluded from transitive resolution, not libraries used by the consuming project.TDD record
cross_repo_maven_dependency_creates_library_edgescross-repo-intelligence; later tightened to prove Maven exclusions do not count as library usage.cross_repo_maven_dependency_escapes_library_edge_propscross_repo_maven_dependency_management_does_not_create_library_edgecross_repo_maven_commented_dependency_does_not_create_library_edgecross_repo_maven_plugin_dependency_does_not_create_library_edgecross_repo_maven_cleanup_preserves_unrelated_nodescross_repo_maven_provider_rerun_preserves_incoming_used_byCROSS_LIBRARY_USED_BYlinks.cross_repo_maven_removed_dependency_clears_provider_used_byCROSS_LIBRARY_USED_BYlinks.cross_repo_maven_long_coordinates_do_not_collidecross_repo_maven_fixture_restores_cache_dirCBM_CACHE_DIRwithout restoring it for later tests.cross_repo_maven_long_references_do_not_collidecross_repo_maven_very_long_pom_paths_do_not_truncateLibrarynode.cross_repo_maven_failed_growth_preserves_capacitycross_repo_maven_growth_rejects_byte_overflow_before_reallocreallocand record a larger capacity.cross_repo_project_list_initial_alloc_failure_returns_emptyReview-fix-loop evidence
Allocation and bounded-growth sweep:
Generated identity and cleanup sweep:
LibraryandLibraryConsumernode qualified names, source-side cleanup, provider-side reverse cleanup.Librarynodes and outgoingCROSS_LIBRARY_DEPENDS_ON; reverseCROSS_LIBRARY_USED_BYcleanup is scoped to the source project that created it.False-positive sweep:
Verification
make -f Makefile.cbm testpassed with5619 passed.make -f Makefile.cbm lint-format CLANG_FORMAT="$(brew --prefix clang-format)/bin/clang-format"passed locally.scripts/check-dco.sh origin/main..HEADpassed locally for all six PR commits.git diff --check origin/main...HEADpassed locally.