Git - expose recent repository information (#289837)

This commit is contained in:
Ladislau Szomoru
2026-01-23 09:41:06 +01:00
committed by GitHub
parent e51431a160
commit a067b22e62
3 changed files with 44 additions and 3 deletions

View File

@@ -7,7 +7,7 @@
import { Model } from '../model';
import { Repository as BaseRepository, Resource } from '../repository';
import { InputBox, Git, API, Repository, Remote, RepositoryState, Branch, ForcePushMode, Ref, Submodule, Commit, Change, RepositoryUIState, Status, LogOptions, APIState, CommitOptions, RefType, CredentialsProvider, BranchQuery, PushErrorHandler, PublishEvent, FetchOptions, RemoteSourceProvider, RemoteSourcePublisher, PostCommitCommandsProvider, RefQuery, BranchProtectionProvider, InitOptions, SourceControlHistoryItemDetailsProvider, GitErrorCodes, CloneOptions, CommitShortStat, DiffChange, Worktree, RepositoryKind } from './git';
import { InputBox, Git, API, Repository, Remote, RepositoryState, Branch, ForcePushMode, Ref, Submodule, Commit, Change, RepositoryUIState, Status, LogOptions, APIState, CommitOptions, RefType, CredentialsProvider, BranchQuery, PushErrorHandler, PublishEvent, FetchOptions, RemoteSourceProvider, RemoteSourcePublisher, PostCommitCommandsProvider, RefQuery, BranchProtectionProvider, InitOptions, SourceControlHistoryItemDetailsProvider, GitErrorCodes, CloneOptions, CommitShortStat, DiffChange, Worktree, RepositoryKind, RepositoryAccessDetails } from './git';
import { Event, SourceControlInputBox, Uri, SourceControl, Disposable, commands, CancellationToken } from 'vscode';
import { combinedDisposable, filterEvent, mapEvent } from '../util';
import { toGitUri } from '../uri';
@@ -400,6 +400,10 @@ export class ApiImpl implements API {
return this.#model.repositories.map(r => new ApiRepository(r));
}
get recentRepositories(): Iterable<RepositoryAccessDetails> {
return this.#model.repositoryCache.recentRepositories;
}
toGitUri(uri: Uri, ref: string): Uri {
return toGitUri(uri, ref);
}

View File

@@ -149,6 +149,11 @@ export interface RepositoryUIState {
readonly onDidChange: Event<void>;
}
export interface RepositoryAccessDetails {
readonly rootUri: Uri;
readonly lastAccessTime: number;
}
/**
* Log options.
*/
@@ -399,6 +404,7 @@ export interface API {
readonly onDidPublish: Event<PublishEvent>;
readonly git: Git;
readonly repositories: Repository[];
readonly recentRepositories: Iterable<RepositoryAccessDetails>;
readonly onDidOpenRepository: Event<Repository>;
readonly onDidCloseRepository: Event<Repository>;