Git - expose repository kind through the git extension API (#287737)

This commit is contained in:
Ladislau Szomoru
2026-01-14 11:51:47 +01:00
committed by GitHub
parent c0cb2b9412
commit 650bc4f9ae
3 changed files with 7 additions and 3 deletions
+3 -1
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 } 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 } from './git';
import { Event, SourceControlInputBox, Uri, SourceControl, Disposable, commands, CancellationToken } from 'vscode';
import { combinedDisposable, filterEvent, mapEvent } from '../util';
import { toGitUri } from '../uri';
@@ -78,6 +78,7 @@ export class ApiRepository implements Repository {
readonly rootUri: Uri;
readonly inputBox: InputBox;
readonly kind: RepositoryKind;
readonly state: RepositoryState;
readonly ui: RepositoryUIState;
@@ -87,6 +88,7 @@ export class ApiRepository implements Repository {
constructor(repository: BaseRepository) {
this.#repository = repository;
this.kind = this.#repository.kind;
this.rootUri = Uri.file(this.#repository.root);
this.inputBox = new ApiInputBox(this.#repository.inputBox);
this.state = new ApiRepositoryState(this.#repository);
+2
View File
@@ -126,6 +126,8 @@ export interface DiffChange extends Change {
readonly deletions: number;
}
export type RepositoryKind = 'repository' | 'submodule' | 'worktree';
export interface RepositoryState {
readonly HEAD: Branch | undefined;
readonly refs: Ref[];
+2 -2
View File
@@ -11,7 +11,7 @@ import picomatch from 'picomatch';
import { CancellationError, CancellationToken, CancellationTokenSource, Command, commands, Disposable, Event, EventEmitter, ExcludeSettingOptions, FileDecoration, FileType, l10n, LogLevel, LogOutputChannel, Memento, ProgressLocation, ProgressOptions, QuickDiffProvider, RelativePattern, scm, SourceControl, SourceControlInputBox, SourceControlInputBoxValidation, SourceControlInputBoxValidationType, SourceControlResourceDecorations, SourceControlResourceGroup, SourceControlResourceState, TabInputNotebookDiff, TabInputTextDiff, TabInputTextMultiDiff, ThemeColor, ThemeIcon, Uri, window, workspace, WorkspaceEdit } from 'vscode';
import { ActionButton } from './actionButton';
import { ApiRepository } from './api/api1';
import { Branch, BranchQuery, Change, CommitOptions, DiffChange, FetchOptions, ForcePushMode, GitErrorCodes, LogOptions, Ref, RefType, Remote, Status } from './api/git';
import { Branch, BranchQuery, Change, CommitOptions, DiffChange, FetchOptions, ForcePushMode, GitErrorCodes, LogOptions, Ref, RefType, Remote, RepositoryKind, Status } from './api/git';
import { AutoFetcher } from './autofetch';
import { GitBranchProtectionProvider, IBranchProtectionProviderRegistry } from './branchProtection';
import { debounce, memoize, sequentialize, throttle } from './decorators';
@@ -870,7 +870,7 @@ export class Repository implements Disposable {
return this.repository.dotGit;
}
get kind(): 'repository' | 'submodule' | 'worktree' {
get kind(): RepositoryKind {
return this.repository.kind;
}