Skip to content

fix(internal/librarian): avoid work duplication when finding changes#2558

Merged
jskeet merged 4 commits intogoogleapis:mainfrom
jskeet:efficient-changes
Oct 14, 2025
Merged

fix(internal/librarian): avoid work duplication when finding changes#2558
jskeet merged 4 commits intogoogleapis:mainfrom
jskeet:efficient-changes

Conversation

@jskeet
Copy link
Copy Markdown
Contributor

@jskeet jskeet commented Oct 14, 2025

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

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
@jskeet
Copy link
Copy Markdown
Contributor Author

jskeet commented Oct 14, 2025

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 (languageRepoChangedFiles and libraryHasChanges).

@codecov
Copy link
Copy Markdown

codecov bot commented Oct 14, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 85.96%. Comparing base (e6c7297) to head (92b752d).
⚠️ Report is 2 commits behind head on main.

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@meltsufin
Copy link
Copy Markdown
Member

/gemini review

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@jskeet jskeet marked this pull request as ready for review October 14, 2025 15:04
@jskeet jskeet requested a review from a team as a code owner October 14, 2025 15:04
@jskeet jskeet requested a review from zhumin8 October 14, 2025 15:04
codyoss
codyoss previously approved these changes Oct 14, 2025
@jskeet jskeet merged commit 0adeeac into googleapis:main Oct 14, 2025
6 checks passed
@jskeet jskeet deleted the efficient-changes branch October 14, 2025 16:29
coryan pushed a commit to coryan/librarian that referenced this pull request Oct 14, 2025
…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
ldetmer pushed a commit that referenced this pull request Oct 22, 2025
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&#39;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>
zhumin8 pushed a commit to zhumin8/librarian that referenced this pull request Nov 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

librarian: generation takes ages looking for locally-changed files

3 participants