diff --git a/extensions/git/src/timelineProvider.ts b/extensions/git/src/timelineProvider.ts index c177f8bfcc0563e9cf5f990013f801e4fc0a9e85..872e5c36a80e2b248e420baf9a3dc05a5ac62f10 100644 --- a/extensions/git/src/timelineProvider.ts +++ b/extensions/git/src/timelineProvider.ts @@ -114,9 +114,9 @@ export class GitTimelineProvider implements TimelineProvider { // TODO[ECA]: Ensure that the uri is a file -- if not we could get the history of the repo? let limit: number | undefined; - if (typeof options.limit === 'string') { + if (options.limit !== undefined && typeof options.limit !== 'number') { try { - const result = await this._model.git.exec(repo.root, ['rev-list', '--count', `${options.limit}..`, '--', uri.fsPath]); + const result = await this._model.git.exec(repo.root, ['rev-list', '--count', `${options.limit.cursor}..`, '--', uri.fsPath]); if (!result.exitCode) { // Ask for 1 more than so we can determine if there are more commits limit = Number(result.stdout) + 1; diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index d1ccd81b83f7297698d14357375f77b210d1b49b..7e66d226c50904d208eab1e04ddd8938186c8980 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -1600,7 +1600,7 @@ declare module 'vscode' { /** * The maximum number or the ending cursor of timeline items that should be returned. */ - limit?: number | string; + limit?: number | { cursor: string }; } export interface TimelineProvider { diff --git a/src/vs/workbench/contrib/timeline/browser/timelinePane.ts b/src/vs/workbench/contrib/timeline/browser/timelinePane.ts index 031b6f27d11d4fde44633b8dcdfd54a6c03668bd..976f6d7393713f17df1a13f35eec9b18dc342030 100644 --- a/src/vs/workbench/contrib/timeline/browser/timelinePane.ts +++ b/src/vs/workbench/contrib/timeline/browser/timelinePane.ts @@ -80,8 +80,8 @@ interface TimelineActionContext { } interface TimelineCursors { - startCursors?: { before: any; after?: any }; - endCursors?: { before: any; after?: any }; + startCursors?: { before: string; after?: string }; + endCursors?: { before: string; after?: string }; more: boolean; } @@ -308,7 +308,9 @@ export class TimelinePane extends ViewPane { { cursor: options.before ? cursors?.startCursors?.before : (cursors?.endCursors ?? cursors?.startCursors)?.after, ...options, - limit: options.limit === 0 ? undefined : options.limit ?? defaultPageSize + limit: options.limit === 0 + ? undefined + : options.limit ?? defaultPageSize }, request?.tokenSource ?? new CancellationTokenSource(), { cacheResults: true, resetCache: false } )!; @@ -329,7 +331,11 @@ export class TimelinePane extends ViewPane { source, this._uri, { ...options, - limit: options.limit === 0 ? undefined : (reset ? cursors?.endCursors?.after : undefined) ?? options.limit ?? defaultPageSize + limit: options.limit === 0 + ? undefined + : (reset && cursors?.endCursors?.after !== undefined + ? { cursor: cursors.endCursors.after } + : undefined) ?? options.limit ?? defaultPageSize }, new CancellationTokenSource(), { cacheResults: true, resetCache: true } )!; diff --git a/src/vs/workbench/contrib/timeline/common/timeline.ts b/src/vs/workbench/contrib/timeline/common/timeline.ts index 72ca602fa566593706aaf0e7cef153de011f1ad3..3f7cad3109eed49694c4dec1e8b376a2472aa675 100644 --- a/src/vs/workbench/contrib/timeline/common/timeline.ts +++ b/src/vs/workbench/contrib/timeline/common/timeline.ts @@ -40,7 +40,7 @@ export interface TimelineChangeEvent { export interface TimelineOptions { cursor?: string; before?: boolean; - limit?: number | string; + limit?: number | { cursor: string }; } export interface InternalTimelineOptions {