diff --git a/extensions/git/src/git.ts b/extensions/git/src/git.ts index 83c54688baa..7a8c891cf06 100644 --- a/extensions/git/src/git.ts +++ b/extensions/git/src/git.ts @@ -2543,7 +2543,8 @@ export class Repository { return branch; } - return Promise.reject(new Error(`No such branch: ${name}`)); + this.logger.warn(`No such branch: ${name}.`); + return Promise.reject(new Error(`No such branch: ${name}.`)); } async getDefaultBranch(): Promise { diff --git a/extensions/git/src/historyProvider.ts b/extensions/git/src/historyProvider.ts index 0df3fbdc84d..a58b491ce62 100644 --- a/extensions/git/src/historyProvider.ts +++ b/extensions/git/src/historyProvider.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ -import { Disposable, Event, EventEmitter, FileDecoration, FileDecorationProvider, SourceControlHistoryItem, SourceControlHistoryItemChange, SourceControlHistoryItemGroup, SourceControlHistoryOptions, SourceControlHistoryProvider, ThemeIcon, Uri, window, l10n } from 'vscode'; +import { Disposable, Event, EventEmitter, FileDecoration, FileDecorationProvider, SourceControlHistoryItem, SourceControlHistoryItemChange, SourceControlHistoryItemGroup, SourceControlHistoryOptions, SourceControlHistoryProvider, ThemeIcon, Uri, window, l10n, LogOutputChannel } from 'vscode'; import { Repository, Resource } from './repository'; import { IDisposable, filterEvent } from './util'; import { toGitUri } from './uri'; @@ -33,7 +33,7 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec private disposables: Disposable[] = []; - constructor(protected readonly repository: Repository) { + constructor(protected readonly repository: Repository, private readonly logger: LogOutputChannel) { this.disposables.push(repository.onDidRunGitStatus(this.onDidRunGitStatus, this)); this.disposables.push(filterEvent(repository.onDidRunOperation, e => e.operation === Operation.Refresh)(() => this._onDidChangeCurrentHistoryItemGroup.fire())); @@ -157,19 +157,24 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec } // Branch base - const branchBase = await this.repository.getBranchBase(historyItemGroupId); + try { + const branchBase = await this.repository.getBranchBase(historyItemGroupId); - if (branchBase?.name && branchBase?.type === RefType.Head) { - return { - id: `refs/heads/${branchBase.name}`, - label: branchBase.name - }; + if (branchBase?.name && branchBase?.type === RefType.Head) { + return { + id: `refs/heads/${branchBase.name}`, + label: branchBase.name + }; + } + if (branchBase?.name && branchBase.remote && branchBase?.type === RefType.RemoteHead) { + return { + id: `refs/remotes/${branchBase.remote}/${branchBase.name}`, + label: `${branchBase.remote}/${branchBase.name}` + }; + } } - if (branchBase?.name && branchBase.remote && branchBase?.type === RefType.RemoteHead) { - return { - id: `refs/remotes/${branchBase.remote}/${branchBase.name}`, - label: `${branchBase.remote}/${branchBase.name}` - }; + catch (err) { + this.logger.error(`Failed to get branch base for '${historyItemGroupId}': ${err.message}`); } return undefined; diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index de85fadc15e..4855d754240 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -850,7 +850,7 @@ export class Repository implements Disposable { this._sourceControl.quickDiffProvider = this; - const historyProvider = new GitHistoryProvider(this); + const historyProvider = new GitHistoryProvider(this, logger); this._sourceControl.historyProvider = historyProvider; this.disposables.push(historyProvider);