Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

fix(utils): preserve author names containing commas in git log parsing - #12069

#12069
Merged
slorber merged 2 commits into
facebook:mainfacebook/docusaurus:mainfrom
Dharya-dev:fix/git-author-comma-parsingDharya-dev/docusaurus:fix/git-author-comma-parsingCopy head branch name to clipboard
Jul 10, 2026
Merged

fix(utils): preserve author names containing commas in git log parsing#12069
slorber merged 2 commits into
facebook:mainfacebook/docusaurus:mainfrom
Dharya-dev:fix/git-author-comma-parsingDharya-dev/docusaurus:fix/git-author-comma-parsingCopy head branch name to clipboard

Conversation

@Dharya-dev

Copy link
Copy Markdown
Contributor

Motivation

getGitRepositoryFilesInfo() in gitUtils.ts parses git log output formatted as t:<timestamp>,a:<author name>. The current implementation uses logLine.split(',') to separate the timestamp from the author name.

This breaks when the author's Git user.name contains a comma — for example, Doe, Jane or Smith, Jr.. The split produces three array elements instead of two:

Input:  "t:1716666666,a:Doe, Jane"
Split:  ["t:1716666666", "a:Doe", " Jane"]
Result: author = "Doe"  ← truncated!

The getFileCommitDate() function in the same file avoids this by using a regex with a greedy (?<author>.+) capture group, but the newer getGitRepositoryFilesInfo() function (introduced in the eager VCS strategy) doesn't share that approach.

Fix

Replaced split(',') with indexOf(',a:') to locate the known separator between the timestamp and author fields. This safely handles commas anywhere in the author name:

// Before:
const [timestampStr, authorStr] = logLine.split(',') as [string, string];
const timestamp = Number.parseInt(timestampStr.slice(2), 10) * 1000;
const author = authorStr.slice(2);

// After:
const separatorIndex = logLine.indexOf(',a:');
const timestampStr = logLine.slice(2, separatorIndex);
const author = logLine.slice(separatorIndex + 3);

Test plan

Added a regression test in gitUtils.test.ts that commits a file with an author name containing a comma (Doe, Jane) and verifies that getGitRepositoryFilesInfo() preserves the full name.

Checklist

The eager VCS strategy parses git log output in the format t:<ts>,a:<author>.
When splitting on comma to separate the timestamp and author fields, author
names containing commas (e.g., 'Doe, Jane' or 'Smith, Jr.') were silently
truncated — only the text before the first comma in the name was kept.

This replaces split(',') with indexOf(',a:') to locate the known separator
between the timestamp and author fields, correctly preserving the full
author name regardless of commas it may contain.
@meta-cla meta-cla Bot added the CLA Signed Signed Facebook CLA label May 25, 2026
@netlify

netlify Bot commented May 25, 2026

Copy link
Copy Markdown

[V2]

Name Link
🔨 Latest commit b832d76
🔍 Latest deploy log https://app.netlify.com/projects/docusaurus-2/deploys/6a512f14864aa4000807bf6f
😎 Deploy Preview https://deploy-preview-12069--docusaurus-2.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@slorber slorber added pr: bug fix This PR fixes a bug in a past release. to backport This PR is planned to be backported to a stable version of Docusaurus labels Jul 10, 2026

@slorber slorber left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM thanks

@slorber
slorber merged commit 709b81f into facebook:main Jul 10, 2026
37 of 39 checks passed
slorber added a commit that referenced this pull request Jul 10, 2026
#12069)

Co-authored-by: sebastien <lorber.sebastien@gmail.com>
yamz8 pushed a commit to forgente/docs that referenced this pull request Jul 27, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@docusaurus/core](https://github.com/facebook/docusaurus) ([source](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus)) | [`3.10.1` → `3.10.2`](https://renovatebot.com/diffs/npm/@docusaurus%2fcore/3.10.1/3.10.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@docusaurus%2fcore/3.10.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@docusaurus%2fcore/3.10.1/3.10.2?slim=true) |
| [@docusaurus/faster](https://github.com/facebook/docusaurus) ([source](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-faster)) | [`3.10.1` → `3.10.2`](https://renovatebot.com/diffs/npm/@docusaurus%2ffaster/3.10.1/3.10.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@docusaurus%2ffaster/3.10.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@docusaurus%2ffaster/3.10.1/3.10.2?slim=true) |
| [@docusaurus/module-type-aliases](https://github.com/facebook/docusaurus) ([source](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-module-type-aliases)) | [`3.10.1` → `3.10.2`](https://renovatebot.com/diffs/npm/@docusaurus%2fmodule-type-aliases/3.10.1/3.10.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@docusaurus%2fmodule-type-aliases/3.10.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@docusaurus%2fmodule-type-aliases/3.10.1/3.10.2?slim=true) |
| [@docusaurus/plugin-content-docs](https://github.com/facebook/docusaurus) ([source](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-plugin-content-docs)) | [`3.10.1` → `3.10.2`](https://renovatebot.com/diffs/npm/@docusaurus%2fplugin-content-docs/3.10.1/3.10.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@docusaurus%2fplugin-content-docs/3.10.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@docusaurus%2fplugin-content-docs/3.10.1/3.10.2?slim=true) |
| [@docusaurus/preset-classic](https://github.com/facebook/docusaurus) ([source](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-preset-classic)) | [`3.10.1` → `3.10.2`](https://renovatebot.com/diffs/npm/@docusaurus%2fpreset-classic/3.10.1/3.10.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@docusaurus%2fpreset-classic/3.10.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@docusaurus%2fpreset-classic/3.10.1/3.10.2?slim=true) |

---

### Release Notes

<details>
<summary>facebook/docusaurus (@&#8203;docusaurus/core)</summary>

### [`v3.10.2`](https://github.com/facebook/docusaurus/blob/HEAD/CHANGELOG.md#3102-2026-07-10)

[Compare Source](facebook/docusaurus@v3.10.1...v3.10.2)

Backport and cherry-pick commits from main for v3.10.2 patch release:

- [fix(bundler): do not import `@swc/html`, fix StackBlitz playground #&#8203;12055](facebook/docusaurus#12055)
- [fix(core): use locale url in site config #&#8203;12054](facebook/docusaurus#12054)
- [fix(theme-classic): remove redundant sidebar label titles #&#8203;11966](facebook/docusaurus#11966)
- [fix(mdx-loader): avoid transforming dotted directory links into asset… #&#8203;11944](facebook/docusaurus#11944)
- [fix(dev-server): for HTTPS, support non-RSA TLS certs #&#8203;12065](facebook/docusaurus#12065)
- [fix(utils): fix `extractLeadingEmoji()` edge cases #&#8203;12100](facebook/docusaurus#12100)
- [fix(gtag.js, faster): Fix StackBlitz, vendor `@types/gtag.js`, upgrade `@swc/html` #&#8203;12080](facebook/docusaurus#12080)
- [fix(create-docusaurus): init template README should use npm commands by default #&#8203;12138](facebook/docusaurus#12138)
- [fix(cli): `docusaurus serve` should pass `--host` to `server.listen()` #&#8203;12127](facebook/docusaurus#12127)
- [fix(core): bump detect-port to v2.1, fix pnpm `trustPolicy` downgrade issue #&#8203;12012](facebook/docusaurus#12012)
- [fix(i18n): complete Spanish translations for theme-common and theme-l… #&#8203;12180](facebook/docusaurus#12180)
- [chore(deps): migrate to `@11ty/gray-matter` #&#8203;12181](facebook/docusaurus#12181)
- [fix(core): fix BaseUrlIssueBanner little security issue #&#8203;12260](facebook/docusaurus#12260)
- [fix(core): accept boolean attributes in headTags config validation #&#8203;12238](facebook/docusaurus#12238)
- [fix(sitemap): don't drop lastmod for an epoch (0) timestamp #&#8203;12212](facebook/docusaurus#12212)
- [fix(utils): preserve author names containing commas in git log parsing #&#8203;12069](facebook/docusaurus#12069)

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xOTEuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE5MS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Reviewed-on: https://gitea.com/gitea/docs/pulls/466
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: Renovate Bot <renovate-bot@gitea.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed Signed Facebook CLA pr: bug fix This PR fixes a bug in a past release. to backport This PR is planned to be backported to a stable version of Docusaurus

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.