fix(internal/librarian): avoid work duplication when finding changes#2558
fix(internal/librarian): avoid work duplication when finding changes#2558jskeet merged 4 commits intogoogleapis:mainfrom
Conversation
This changes how we format a generation PR. Instead of finding which files have changed in the language repo (an operation which doesn't depend on the library) once for each library, we do so once at the start. We can then skip libraries which haven't changed, without even looking at the API source repo. Fixes googleapis#2557
|
Note: I've created this as a draft at the moment to get a review on the basics of the refactoring. I've changed the existing tests, but haven't added new tests for the new functions ( |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2558 +/- ##
==========================================
+ Coverage 85.90% 85.96% +0.05%
==========================================
Files 103 103
Lines 10573 10570 -3
==========================================
+ Hits 9083 9086 +3
+ Misses 1164 1160 -4
+ Partials 326 324 -2 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request introduces a valuable optimization by avoiding redundant work when finding changes for generation PRs. The refactoring to extract logic into more focused functions like languageRepoChangedFiles and libraryHasChanges significantly improves code clarity and maintainability. The changes are well-implemented and the accompanying test updates are thorough. I have one minor suggestion to further improve code conciseness.
…oogleapis#2558) This changes how we format a generation PR. Instead of finding which files have changed in the language repo (an operation which doesn't depend on the library) once for each library, we do so once at the start. We can then skip libraries which haven't changed, without even looking at the API source repo. Fixes googleapis#2557
Librarian Version: v0.0.0-20251022154542-dd249212325d Language Image: us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/librarian-release-container:latest <details><summary>librarian: 0.5.0</summary> ## [0.5.0](v0.4.0...v0.5.0) (2025-10-22) ### Features * speed up finding changed files in commits (#2645) ([1060946](10609465)) * Can config dart `export` (#2641) ([97eacd2](97eacd29)) * minor whitespace and doc changes to the Dart templates (#2636) ([b3ac7b4](b3ac7b42)) * only generate libraries with changed APIs (#2618) ([82171be](82171bed)) * make extra modules public (#2622) ([2c94a53](2c94a53f)) * skip a GitHub release for a library (#2612) ([6258f4d](6258f4d1)) * allow skipping semver checks for rust-publish (#2584) ([739ce0d](739ce0d5)) * add ability to open pull request as a draft (#2604) ([c1f0285](c1f02859)) * capture discovery revision (#2605) ([14a1483](14a14830)) * Add conditional instrumentation to gRPC clients (#2594) ([3cc63b2](3cc63b22)) * add update-image CLI command (#2580) ([90e0f6e](90e0f6e5)) * Generate more samples for oneof main setters. (#2592) ([c55f3ce](c55f3ceb)) * Add documentation for generated service constructors (#2575) ([6a4aead](6a4aeade)) * disable some clippy warnings (#2567) ([9f51084](9f510842)) * Generate setter samples for oneof fields. (#2573) ([8c2416a](8c2416ab)) * add default Rust features option (#2562) ([892f42b](892f42b7)) * Include a correct URL for issues (#2570) ([10493ed](10493ed9)) * add ability to find the latest docker image SHA (#2539) ([62e80f1](62e80f19)) * add ability to checkout a repo at a certain commit (#2555) ([23b8ffe](23b8ffea)) * add onboarding PR body (#2552) ([e32719c](e32719cd)) ### Bug Fixes * associate bulk change to individual libraries (#2626) ([dd24921](dd249212)) * Allow `unnecessary_import`s (#2642) ([88c4379](88c43794)) * resolve issue where onboarded library can't be released (#2632) ([b300a4e](b300a4ea)) * resolve issue where commits cannot be fetched for new library (#2631) ([45652c0](45652c03)) * address a typo in the Message.ServicePlaceholder docs (#2616) ([82fda96](82fda96b)) * bad version bump edits (#2613) ([9902b1d](9902b1d5)) * use templates for update-image PR body (#2602) ([7309cad](7309cadd)) * populate configure command pr content (#2591) ([811eb8e](811eb8e2)) * shrink release PR size when there are bulk changes (#2585) ([bcb914a](bcb914ac)) * Fixes several issues with oneof main setter samples (#2589) ([e4958d0](e4958d00)) * resolve broken link in PR body (#2579) ([098c1d2](098c1d24)) * Remove double sample code blocks (#2582) ([6b10456](6b104567)) * change commit package (#2571) ([45ee48f](45ee48f0)) * show chores in release notes (#2544) ([88b62cc](88b62ccb)) * avoid work duplication when finding changes (#2558) ([0adeeac](0adeeac6)) * mangled method names and doc links (#2565) ([895dac9](895dac94)) ### Reverts * show chores in release notes (#2601) ([7e6740f](7e6740ff)) </details>
This changes how we format a generation PR. Instead of finding which files have changed in the language repo (an operation which doesn't depend on the library) once for each library, we do so once at the start. We can then skip libraries which haven't changed, without even looking at the API source repo.
Fixes #2557