Commit Graph

36 Commits

Author SHA1 Message Date
Jamie Tanna f932d52fbd feat(platform): get all branch update dates in a more performant manner (#44582)
* feat(platform): get all branch update dates in a more performant manner

When Renovate is working on a repository with many /potential/ branches,
as well as some actually created branches, it's possible for the
calculation for `commitHourlyLimit` to end up taking significant time.

This can lead to a less performant job generally, but can sometimes lead
to the Renovate job failing to complete, and then timing out when
executed by a job runner.

To handle this, we can instead use use `git for-each-ref` to look up
each Git ref (remotely) and request the commit date, which leads to a
much more performant lookup.

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>

* fixup! feat(platform): get all branch update dates in a more performant manner

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>

* fixup! Merge remote-tracking branch 'origin/HEAD' into wip/commit-hourly-slow

---------

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-07-21 13:17:58 +00:00
Sergei Zharinov 7df11ed734 chore(lint): add enforce-ts-extension oxlint rule (#42389)
* refactor(lint): extract custom oxlint rules into separate files

Split `tools/lint/rules.js` into one file per rule under
`tools/lint/rules/`. Also simplify `test-root-describe` with
early-exit guard clauses.

* feat(lint): add `enforce-ts-extension` oxlint rule

Add a custom JS-based oxlint rule that enforces `.ts` extensions on
local imports. The rule catches two problems:

- `.js` extension used instead of `.ts` (auto-fixable)
- missing file extension entirely (report only)

Checked locations:
- static import/export declarations
- dynamic `import()` expressions
- vitest module APIs: `vi.mock`, `vi.doMock`, `vi.unmock`,
  `vi.doUnmock`, `vi.importActual`, `vi.importMock`

Both relative paths (`./`, `../`) and path aliases (`~test/`)
are treated as local. Package imports are ignored.

Also fixes 26 pre-existing violations across 18 spec files.

* Update tools/lint/rules/enforce-ts-extension.js

Co-authored-by: Anne Stellingwerf <1637358+astellingwerf@users.noreply.github.com>

---------

Co-authored-by: Anne Stellingwerf <1637358+astellingwerf@users.noreply.github.com>
2026-04-07 15:36:16 +00:00
Felipe Santos 7ebba26236 feat: add commitHourlyLimit (#36226)
* feat: add `commitHourlyLimit`

Signed-off-by: Felipe Santos <felipe.santos@ericsson.com>

* Update docs/usage/configuration-options.md

Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>

* Remove date optionality

* Fix lint comment

* Fix coverage

* Restore contents of commit.spec.ts

* Use ! somewhere else too

* Change optional parameter to nullish

* Refactor `!` to use proper check

* Fix set-branch-commit.spec.ts lint

* Fix test coverage

* Apply suggestions from code review

Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>

* Split commit-limit-reached into two

* Fix review comments

* Use toUTC() where applicable

* Simplify another test to utc()

---------

Signed-off-by: Felipe Santos <felipe.santos@ericsson.com>
Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2026-02-19 18:00:32 +00:00
Sergei Zharinov 9d857c1f68 refactor(lint): Organize imports with biome (#40966) 2026-02-06 13:40:01 +00:00
Sergei Zharinov 930cf6633c refactor: Rewrite imports with .ts extensions (#40700)
fix: Additional vi.mock path corrections and prettier formatting
2026-01-26 22:48:17 +00:00
Michael Kriese 19c115c813 test: cleanup (#34785) 2025-03-13 17:52:09 +00:00
RahulGautamSingh 03f2229604 feat(config): allow multiple branch/pr limits (#32556) 2025-01-21 07:59:07 +00:00
Sebastian Poxhofer 3681b2a945 chore: eslint to enforce for typed imports (#30844) 2024-08-19 13:15:27 +00:00
renovate[bot] eb8c08079e chore(deps): update typescript-eslint monorepo to v8 (major) (#30750)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2024-08-14 10:33:02 +00:00
Sergei Zharinov b69416ce17 refactor(prettier): Force trailing commas (#25631) 2023-11-07 15:50:29 +00:00
Florian Greinacher 666819e5e2 fix: allow more than 99 PRs/branches per repository (#24705) 2023-09-30 05:39:32 +00:00
Michael Kriese 84a97a62fa test(perf): improve test speed (#24323) 2023-09-08 11:40:04 +00:00
Rhys Arkins 36e2b328bb chore: update types reference 2023-08-15 11:31:15 +02:00
RahulGautamSingh 18c2850f20 refactor(test): use minimal config objects (#22769) 2023-06-15 04:33:56 +00:00
RahulGautamSingh be2a89520b refactor: replace as assertions (#22442) 2023-06-05 19:18:30 +00:00
Rhys Arkins a75f9d71c1 feat(config)!: non-zero defaults for PR concurrent, hourly limits (#19958)
Sets new defaults:
- `prConcurrentLimit`: 10 (instead of 0)
- `prHourlyLimit`: 2 (instead of 0)

Closes #19800

BREAKING CHANGE: Renovate now defaults to applying hourly and concurrent PR limits. To revert to unlimited, configure them back to `0`.
2023-03-10 09:25:51 +01:00
Markus Schulz dd6c8e5147 feat: Move some Git commands behind a PlatformScm interface (#19327)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2023-02-22 08:18:53 +00:00
RahulGautamSingh af3b2038f8 refactor: replace enums with union/object (#18903) 2022-11-14 20:55:38 +02:00
RahulGautamSingh 03b0d2a24e refactor(lib/workers): fix null-check for tests (#16163)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2022-06-21 09:39:30 +00:00
Michael Kriese 64f5bd5f03 test: enforce lint style rules (#15085) 2022-04-12 14:49:49 +00:00
Michael Kriese 7afc2b75d5 test: fix lint (#12551) 2021-11-08 13:16:58 +01:00
Sergei Zharinov 5f4b9f9a3a test: Fix test descriptions and enforce it via new linting rule (#11285) 2021-08-18 05:46:56 +00:00
Sergei Zharinov d680ff1e7c fix(limits): Use PR hourly limits to calculate remaining branch count (#10053)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
2021-05-19 15:50:37 +00:00
Sergei Zharinov ce51f05cef feat(test): Detect test utils callers and simplify helpers (#9707) 2021-04-26 16:15:03 +02:00
Sergei Zharinov 72d97ec2f4 refactor(workers): Enforce getName usage (#9525) 2021-04-13 10:25:51 +00:00
Michael Kriese 74d7691bef refactor: optimize type usage (#8947) 2021-03-02 21:44:55 +01:00
Sergei Zharinov 746d170824 feat(limits): Add "branchConcurrentLimit" option (#8046)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2021-01-10 13:29:14 +01:00
Sergei Zharinov 683b87f845 fix(limits): Refactor hourly PR limit calculation (#7930)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Co-authored-by: Rhys Arkins <rhys@arkins.net>
2020-12-11 10:10:26 +01:00
Michael Kriese 0e10c4199f feat: replace moment with luxon (#7564) 2020-10-27 15:02:25 +01:00
Sergio Zharinov b2fde31693 fix(limits): Count concurrent PR with platform API instead of branches (#7421)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2020-10-07 12:07:25 +02:00
Sergio Zharinov 0ea1413e57 refactor(platform): Rename "branchName" to "sourceBranch" (#7284)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
2020-09-22 06:09:59 +02:00
Rhys Arkins 012561f69a feat(git): get branch commit without cloning (#7130)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2020-08-30 22:03:58 +02:00
Rhys Arkins 52cddfde8b refactor: remove branch functions from platform (#6676) 2020-07-04 18:15:29 +02:00
Michael Kriese 00c56d8bde chore: fix types (#5904)
* chore: fix types

* fix more types

* chore: mote fixes

* fix frmat

* chore: fix tests

* chore: fix type

* chore: cleanup

* chore: cleanup

Co-authored-by: Rhys Arkins <rhys@arkins.net>
2020-05-07 10:23:45 +02:00
Rhys Arkins 53ca91301f chore: import linting (#6105) 2020-05-01 18:03:48 +02:00
Rhys Arkins 364163e7a0 fix: move tests into lib (#5635) 2020-03-05 21:57:24 +01:00