Skip to content

fix(internal/conventionalcommits): relax footer regex to allow line broke footers to be properly recognized#2388

Merged
zhumin8 merged 4 commits intomainfrom
parse-footer
Sep 29, 2025
Merged

fix(internal/conventionalcommits): relax footer regex to allow line broke footers to be properly recognized#2388
zhumin8 merged 4 commits intomainfrom
parse-footer

Conversation

@zhumin8
Copy link
Contributor

@zhumin8 zhumin8 commented Sep 26, 2025

The original logic expect footer to follow key: value (exactly one space before value) format as conventionalcommit specs. For multi-line footers, when parsing (logic), the line content "Source-Link:" would fail the regex match and thus not properly recognized as footer, and gets appended to the value of the previous footer.

By relaxing the regex a bit to allow any number of spaces before "value" in footer, the multiline footer can be recognized.

note: this format below from owlbot PR (example) is technically not valid footer according to conventionalcommits.org spec here. But we are relaxing to allow it for onboarding libraries.

Source-Link:
googleapis/googleapis@d300b15

This should solve the first issue causing this bug, see comment

For #2080

@zhumin8 zhumin8 requested a review from a team as a code owner September 26, 2025 13:29
@zhumin8 zhumin8 requested a review from parthea September 26, 2025 13:29
@codecov
Copy link

codecov bot commented Sep 26, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 88.22%. Comparing base (3fe4e57) to head (dd4803f).
⚠️ Report is 68 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2388      +/-   ##
==========================================
+ Coverage   83.99%   88.22%   +4.23%     
==========================================
  Files          97       99       +2     
  Lines        9657    11243    +1586     
==========================================
+ Hits         8111     9919    +1808     
+ Misses       1199     1011     -188     
+ Partials      347      313      -34     

☔ 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.

@zhumin8 zhumin8 requested a review from lqiu96 September 26, 2025 13:34
@zhumin8 zhumin8 merged commit dcbe063 into main Sep 29, 2025
11 checks passed
@zhumin8 zhumin8 deleted the parse-footer branch September 29, 2025 18:35
lqiu96 pushed a commit that referenced this pull request Sep 29, 2025
…roke footers to be properly recognized (#2388)

The original logic expect footer to follow `key: value` (exactly one
space before value) format as conventionalcommit specs. For multi-line
footers, when parsing
([logic](https://github.com/googleapis/librarian/blob/9b28aa4a3619579dfa59c430afa612589b353598/internal/conventionalcommits/conventional_commits.go#L336)),
the line content "Source-Link:" would fail the regex match and thus not
properly recognized as footer, and gets appended to the value of the
previous footer.

By relaxing the regex a bit to allow any number of spaces before "value"
in footer, the multiline footer can be recognized.

note: this format below from owlbot PR
([example](googleapis/google-cloud-python@34a7916))
is technically not valid footer according to conventionalcommits.org
spec
[here](https://www.conventionalcommits.org/en/v1.0.0/#:~:text=Each%20footer%20MUST%20consist%20of%20a%20word%20token%2C%20followed%20by%20either%20a%20%3A%3Cspace%3E%20or%20%3Cspace%3E%23%20separator%2C%20followed%20by%20a%20string%20value).
But we are relaxing to allow it for onboarding libraries.
```
Source-Link:
googleapis/googleapis@d300b15
```

This should solve the first issue causing this bug, see
[comment](#2080 (comment))

For #2080
suztomo pushed a commit that referenced this pull request Oct 13, 2025
Librarian Version: v0.0.0-20251009012716-e267b1dfc9b9
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/librarian-release-container:latest
<details><summary>librarian: 0.4.0</summary>

##
[0.4.0](v0.3.0...v0.4.0)
(2025-10-09)

### Features

* add `git log` functionality (#2510)
([e267b1d](e267b1d))

* Modify README.md to match our agreed-upon wording (#2503)
([2dc6fc6](2dc6fc6))

* Show actual enum values on setter samples. (#2491)
([13fd5a1](13fd5a1))

* sort library state when writing to `state.yaml` (#2504)
([35e4495](35e4495))

* Generate methods that use server-side streaming (#2474)
([31a496d](31a496d))

* allow configuring tag_format in config.yaml (#2236)
([e0eeddb](e0eeddb))

* `update` supports different roots (#2473)
([65fa7ed](65fa7ed))

* Support git push via SSH (#2397)
([7259194](7259194))

* mount output dir in configure docker command (#2439)
([365019e](365019e))

* Update templates for otel (#2443)
([ea54ba6](ea54ba6))

* support aggregated pagination (#2432)
([5b010b9](5b010b9))

* override pagination items field (#2441)
([4a3664a](4a3664a))

* include source root in configure request (#2431)
([475a62d](475a62d))

* rust&#43;disco bytes (de)serialization (#2428)
([b2a186c](b2a186c))

* enum serialization for non-proto sources (#2410)
([516f29e](516f29e))

* optional singular fields in discovery (#2408)
([c86c2db](c86c2db))

* deprecated elements in discovery docs (#2399)
([1d83853](1d83853))

* allow &#34;.&#34; as valid `source_roots` entry (#2396)
([2f52aa7](2f52aa7))

* inline messages in discovery docs (#2394)
([043cf65](043cf65))

* write pr-body.txt to the work root when not pushing (#2395)
([862c7d7](862c7d7))

* define LIBRARIAN_GITHUB_TOKEN as a constant (#2367)
([5979bfd](5979bfd))

### Bug Fixes

* clarify doc and comment with commit and push flag (#2507)
([645e42a](645e42a))

* keep first value for repeated footer keys (#2440)
([e51490d](e51490d))

* group commit msg if they have the same piper id and subject (#2496)
([60b7d38](60b7d38))

* real runs for `rust-publish` (#2484)
([15d63c2](15d63c2))

* Remove unnecessary dereference in transport template (#2481)
([610cec9](610cec9))

* shorten SHAs in generate commit msgs (#2472)
([de336b1](de336b1))

* handle slashes in library IDs (#2463)
([91c0189](91c0189))

* nil check for github.NewClient (#2465)
([71db17e](71db17e))

* Conventional Commit parser filters files based on Librarian flow
(#2433)
([6cb55d2](6cb55d2))

* Ensure detailed-tracing-attributes flag is fully propagated (#2438)
([a184f0d](a184f0d))

* relax footer regex to allow line broke footers to be properly
recognized (#2388)
([dcbe063](dcbe063))

* release init provides read-only full repository (#2370)
([2e11004](2e11004))

* write the PR body on &#34;commit but no push&#34; (#2430)
([88698b4](88698b4))

* should not push to github when no push flag specified (#2405)
([2a49ae6](2a49ae6))

* only mount global files in configure command (#2377)
([1a2aaa0](1a2aaa0))

* `Map` field attribute in discovery (#2414)
([00c645f](00c645f))

* missing IDs in discovery doc fields (#2386)
([d579dd7](d579dd7))

</details>
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.

2 participants