Push-Historie: Obergrenze beim Blättern, Test für HeadCommit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e409c11d5c
commit
51c4852488
2 files changed
+49
-3
No files matched your search
@@ -2,6 +2,10 @@ import { config } from '../config.js'
|
||||
import { giteaFetch, splitRepo } from './giteaClient.js'
|
||||
|
||||
const DAY_MS = 24 * 60 * 60 * 1000
|
||||
// Sicherheitsnetz fuer listRecentPushes: sollte Gitea "page" ignorieren und immer dieselbe
|
||||
// volle, noch im Fenster liegende Seite liefern, blaettert die Schleife nicht endlos weiter
|
||||
// (40 x 50 = 2000 Eintraege).
|
||||
const MAX_FEED_PAGES = 40
|
||||
|
||||
/**
|
||||
* Baut aus Gitea-1.25-Aktivitaeten-Feed-Eintraegen (`GET .../activities/feeds`) Push-Objekte
|
||||
@@ -61,7 +65,9 @@ export function pushesFromFeed(feed, { since } = {}) {
|
||||
* Liest die Push-Historie eines Repos der letzten `days` Tage aus dem Gitea-Aktivitaeten-Feed
|
||||
* (`GET /repos/{owner}/{repo}/activities/feeds`, seitenweise mit 50 pro Seite, neueste zuerst).
|
||||
* Blaettert nur so weit wie noetig: stoppt bei einer leeren Seite, einer Seite mit weniger als
|
||||
* 50 Eintraegen, oder sobald der aelteste Eintrag einer Seite vor `since` liegt.
|
||||
* 50 Eintraegen, oder sobald der aelteste Eintrag einer Seite vor `since` liegt. Bricht
|
||||
* zusaetzlich nach `MAX_FEED_PAGES` Seiten ab (mit einer Konsolen-Warnung), falls keine dieser
|
||||
* Bedingungen je eintritt.
|
||||
*
|
||||
* @param {string} repoFullName "owner/repo"
|
||||
* @param {{days?: number, now?: Date}} [options]
|
||||
@@ -80,6 +86,12 @@ export async function listRecentPushes(repoFullName, { days = config.gitea.backf
|
||||
collected.push(...items)
|
||||
if (items.length < limit) break
|
||||
if (new Date(items[items.length - 1].created) < since) break
|
||||
if (page >= MAX_FEED_PAGES) {
|
||||
console.warn(
|
||||
`[pushHistory] ${repoFullName}: mehr als ${MAX_FEED_PAGES} Seiten Aktivitäten – ältere Pushes im Zeitraum werden nicht nachgetragen`
|
||||
)
|
||||
break
|
||||
}
|
||||
page += 1
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user