Git - standardize logging in the git extension (#220043)

* Git - more logging

* Git - more logging changes
This commit is contained in:
Ladislau Szomoru
2024-07-05 11:26:48 +02:00
committed by GitHub
parent 15fbbd2bf2
commit c040699c44
7 changed files with 74 additions and 74 deletions
+5 -5
View File
@@ -1339,14 +1339,14 @@ export class CommandCenter {
@command('git.stage')
async stage(...resourceStates: SourceControlResourceState[]): Promise<void> {
this.logger.debug(`git.stage ${resourceStates.length} `);
this.logger.debug(`[CommandCenter][stage] git.stage ${resourceStates.length} `);
resourceStates = resourceStates.filter(s => !!s);
if (resourceStates.length === 0 || (resourceStates[0] && !(resourceStates[0].resourceUri instanceof Uri))) {
const resource = this.getSCMResource();
this.logger.debug(`git.stage.getSCMResource ${resource ? resource.resourceUri.toString() : null} `);
this.logger.debug(`[CommandCenter][stage] git.stage.getSCMResource ${resource ? resource.resourceUri.toString() : null} `);
if (!resource) {
return;
@@ -1389,7 +1389,7 @@ export class CommandCenter {
const untracked = selection.filter(s => s.resourceGroupType === ResourceGroupType.Untracked);
const scmResources = [...workingTree, ...untracked, ...resolved, ...unresolved];
this.logger.debug(`git.stage.scmResources ${scmResources.length} `);
this.logger.debug(`[CommandCenter][stage] git.stage.scmResources ${scmResources.length} `);
if (!scmResources.length) {
return;
}
@@ -4403,10 +4403,10 @@ export class CommandCenter {
private getSCMResource(uri?: Uri): Resource | undefined {
uri = uri ? uri : (window.activeTextEditor && window.activeTextEditor.document.uri);
this.logger.debug(`git.getSCMResource.uri ${uri && uri.toString()}`);
this.logger.debug(`[CommandCenter][getSCMResource] git.getSCMResource.uri: ${uri && uri.toString()}`);
for (const r of this.model.repositories.map(r => r.root)) {
this.logger.debug(`repo root ${r}`);
this.logger.debug(`[CommandCenter][getSCMResource] repo root: ${r}`);
}
if (!uri) {
+6 -6
View File
@@ -1113,7 +1113,7 @@ export class Repository {
return result.stdout.trim();
}
catch (err) {
this.logger.warn(`git config failed: ${err.message}`);
this.logger.warn(`[Git][config] git config failed: ${err.message}`);
return '';
}
}
@@ -2317,7 +2317,7 @@ export class Repository {
return result;
}
catch (err) {
this.logger.warn(err.message);
this.logger.warn(`[Git][getHEAD] Failed to parse HEAD file: ${err.message}`);
}
try {
@@ -2465,11 +2465,11 @@ export class Repository {
remotes.push(...await this.getRemotesFS());
if (remotes.length === 0) {
this.logger.info('No remotes found in the git config file.');
this.logger.info('[Git][getRemotes] No remotes found in the git config file');
}
}
catch (err) {
this.logger.warn(`getRemotes() - ${err.message}`);
this.logger.warn(`[Git][getRemotes] Error: ${err.message}`);
// Fallback to using git to get the remotes
remotes.push(...await this.getRemotesGit());
@@ -2605,7 +2605,7 @@ export class Repository {
return branch;
}
this.logger.warn(`No such branch: ${name}.`);
this.logger.warn(`[Git][getBranch] No such branch: ${name}`);
return Promise.reject<Branch>(new Error(`No such branch: ${name}.`));
}
@@ -2701,7 +2701,7 @@ export class Repository {
const result = await fs.readFile(path.join(this.dotGit.path, ref), 'utf8');
return result.trim();
} catch (err) {
this.logger.warn(err.message);
this.logger.warn(`[Git][revParse] Unable to read file: ${err.message}`);
}
try {
+11 -11
View File
@@ -49,8 +49,8 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec
}
private async onDidRunGitStatus(force = false): Promise<void> {
this.logger.trace('GitHistoryProvider:onDidRunGitStatus - HEAD:', JSON.stringify(this._HEAD));
this.logger.trace('GitHistoryProvider:onDidRunGitStatus - repository.HEAD:', JSON.stringify(this.repository.HEAD));
this.logger.trace('[GitHistoryProvider][onDidRunGitStatus] HEAD:', JSON.stringify(this._HEAD));
this.logger.trace('[GitHistoryProvider][onDidRunGitStatus] repository.HEAD:', JSON.stringify(this.repository.HEAD));
// Get the merge base of the current history item group
const mergeBase = await this.resolveHEADMergeBase();
@@ -65,7 +65,7 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec
this._HEADMergeBase?.name === mergeBase?.name &&
this._HEADMergeBase?.remote === mergeBase?.remote &&
this._HEADMergeBase?.commit === mergeBase?.commit) {
this.logger.trace('GitHistoryProvider:onDidRunGitStatus - HEAD has not changed');
this.logger.trace('[GitHistoryProvider][onDidRunGitStatus] HEAD has not changed');
return;
}
@@ -74,7 +74,7 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec
// Check if HEAD does not support incoming/outgoing (detached commit, tag)
if (!this.repository.HEAD?.name || !this.repository.HEAD?.commit || this.repository.HEAD.type === RefType.Tag) {
this.logger.trace('GitHistoryProvider:onDidRunGitStatus - HEAD does not support incoming/outgoing');
this.logger.trace('[GitHistoryProvider][onDidRunGitStatus] HEAD does not support incoming/outgoing');
this.currentHistoryItemGroup = undefined;
return;
@@ -93,7 +93,7 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec
} : undefined
};
this.logger.trace(`GitHistoryProvider:onDidRunGitStatus - currentHistoryItemGroup (${force}): ${JSON.stringify(this.currentHistoryItemGroup)}`);
this.logger.trace(`[GitHistoryProvider][onDidRunGitStatus] currentHistoryItemGroup(${force}): ${JSON.stringify(this.currentHistoryItemGroup)}`);
}
async provideHistoryItems(historyItemGroupId: string, options: SourceControlHistoryOptions): Promise<SourceControlHistoryItem[]> {
@@ -223,7 +223,7 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec
if (!historyItemId2) {
const upstreamRef = await this.resolveHistoryItemGroupMergeBase(historyItemId1);
if (!upstreamRef) {
this.logger.info(`GitHistoryProvider:resolveHistoryItemGroupCommonAncestor - Failed to resolve history item group base for '${historyItemId1}'`);
this.logger.info(`[GitHistoryProvider][resolveHistoryItemGroupCommonAncestor] Failed to resolve history item group base for '${historyItemId1}'`);
return undefined;
}
@@ -232,16 +232,16 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec
const ancestor = await this.repository.getMergeBase(historyItemId1, historyItemId2);
if (!ancestor) {
this.logger.info(`GitHistoryProvider:resolveHistoryItemGroupCommonAncestor - Failed to resolve common ancestor for '${historyItemId1}' and '${historyItemId2}'`);
this.logger.info(`[GitHistoryProvider][resolveHistoryItemGroupCommonAncestor] Failed to resolve common ancestor for '${historyItemId1}' and '${historyItemId2}'`);
return undefined;
}
try {
const commitCount = await this.repository.getCommitCount(`${historyItemId1}...${historyItemId2}`);
this.logger.trace(`GitHistoryProvider:resolveHistoryItemGroupCommonAncestor - Resolved common ancestor for '${historyItemId1}' and '${historyItemId2}': ${JSON.stringify({ id: ancestor, ahead: commitCount.ahead, behind: commitCount.behind })}`);
this.logger.trace(`[GitHistoryProvider][resolveHistoryItemGroupCommonAncestor] Resolved common ancestor for '${historyItemId1}' and '${historyItemId2}': ${JSON.stringify({ id: ancestor, ahead: commitCount.ahead, behind: commitCount.behind })}`);
return { id: ancestor, ahead: commitCount.ahead, behind: commitCount.behind };
} catch (err) {
this.logger.error(`GitHistoryProvider:resolveHistoryItemGroupCommonAncestor - Failed to get ahead/behind for '${historyItemId1}...${historyItemId2}': ${err.message}`);
this.logger.error(`[GitHistoryProvider][resolveHistoryItemGroupCommonAncestor] Failed to get ahead/behind for '${historyItemId1}...${historyItemId2}': ${err.message}`);
}
return undefined;
@@ -293,7 +293,7 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec
// Base (config -> reflog -> default)
const remoteBranch = await this.repository.getBranchBase(historyItemId);
if (!remoteBranch?.remote || !remoteBranch?.name || !remoteBranch?.commit || remoteBranch?.type !== RefType.RemoteHead) {
this.logger.info(`GitHistoryProvider:resolveHistoryItemGroupUpstreamOrBase - Failed to resolve history item group base for '${historyItemId}'`);
this.logger.info(`[GitHistoryProvider][resolveHistoryItemGroupUpstreamOrBase] Failed to resolve history item group base for '${historyItemId}'`);
return undefined;
}
@@ -304,7 +304,7 @@ export class GitHistoryProvider implements SourceControlHistoryProvider, FileDec
};
}
catch (err) {
this.logger.error(`GitHistoryProvider:resolveHistoryItemGroupUpstreamOrBase - Failed to get branch base for '${historyItemId}': ${err.message}`);
this.logger.error(`[GitHistoryProvider][resolveHistoryItemGroupUpstreamOrBase] Failed to get branch base for '${historyItemId}': ${err.message}`);
}
return undefined;
+36 -36
View File
@@ -287,13 +287,13 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
}
private async doInitialScan(): Promise<void> {
this.logger.info('[Model] Initial repository scan started');
this.logger.info('[Model][doInitialScan] Initial repository scan started');
const config = workspace.getConfiguration('git');
const autoRepositoryDetection = config.get<boolean | 'subFolders' | 'openEditors'>('autoRepositoryDetection');
const parentRepositoryConfig = config.get<'always' | 'never' | 'prompt'>('openRepositoryInParentFolders', 'prompt');
this.logger.trace(`[Model] Settings: autoRepositoryDetection=${autoRepositoryDetection}, openRepositoryInParentFolders=${parentRepositoryConfig}`);
this.logger.trace(`[Model][doInitialScan] Settings: autoRepositoryDetection=${autoRepositoryDetection}, openRepositoryInParentFolders=${parentRepositoryConfig}`);
// Initial repository scan function
const initialScanFn = () => Promise.all([
@@ -325,7 +325,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
}
*/
this.telemetryReporter.sendTelemetryEvent('git.repositoryInitialScan', { autoRepositoryDetection: String(autoRepositoryDetection) }, { repositoryCount: this.openRepositories.length });
this.logger.info(`[Model] Initial repository scan completed - repositories(${this.repositories.length}), closed repositories (${this.closedRepositories.length}), parent repositories (${this.parentRepositories.length}), unsafe repositories (${this.unsafeRepositories.length})`);
this.logger.info(`[Model][doInitialScan] Initial repository scan completed - repositories(${this.repositories.length}), closed repositories (${this.closedRepositories.length}), parent repositories (${this.parentRepositories.length}), unsafe repositories (${this.unsafeRepositories.length})`);
}
/**
@@ -344,7 +344,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
await Promise.all((workspace.workspaceFolders || []).map(async folder => {
const root = folder.uri.fsPath;
this.logger.trace(`[Model] Workspace folder: ${root}`);
this.logger.trace(`[Model][scanWorkspaceFolders] Workspace folder: ${root}`);
// Workspace folder children
const repositoryScanMaxDepth = (workspace.isTrusted ? workspace.getConfiguration('git', folder.uri) : config).get<number>('repositoryScanMaxDepth', 1);
@@ -354,17 +354,17 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
// Repository scan folders
const scanPaths = (workspace.isTrusted ? workspace.getConfiguration('git', folder.uri) : config).get<string[]>('scanRepositories') || [];
this.logger.trace(`[Model] Workspace scan settings: repositoryScanMaxDepth=${repositoryScanMaxDepth}; repositoryScanIgnoredFolders=[${repositoryScanIgnoredFolders.join(', ')}]; scanRepositories=[${scanPaths.join(', ')}]`);
this.logger.trace(`[Model][scanWorkspaceFolders] Workspace scan settings: repositoryScanMaxDepth=${repositoryScanMaxDepth}; repositoryScanIgnoredFolders=[${repositoryScanIgnoredFolders.join(', ')}]; scanRepositories=[${scanPaths.join(', ')}]`);
for (const scanPath of scanPaths) {
if (scanPath === '.git') {
this.logger.trace('[Model] \'.git\' not supported in \'git.scanRepositories\' setting.');
this.logger.trace('[Model][scanWorkspaceFolders] \'.git\' not supported in \'git.scanRepositories\' setting.');
continue;
}
if (path.isAbsolute(scanPath)) {
const notSupportedMessage = l10n.t('Absolute paths not supported in "git.scanRepositories" setting.');
this.logger.warn(`[Model] ${notSupportedMessage}`);
this.logger.warn(`[Model][scanWorkspaceFolders] ${notSupportedMessage}`);
console.warn(notSupportedMessage);
continue;
}
@@ -372,12 +372,12 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
subfolders.add(path.join(root, scanPath));
}
this.logger.trace(`[Model] Workspace scan sub folders: [${[...subfolders].join(', ')}]`);
this.logger.trace(`[Model][scanWorkspaceFolders] Workspace scan sub folders: [${[...subfolders].join(', ')}]`);
await Promise.all([...subfolders].map(f => this.openRepository(f)));
}));
}
catch (err) {
this.logger.warn(`[Model] scanWorkspaceFolders: ${err}`);
this.logger.warn(`[Model][scanWorkspaceFolders] Error: ${err}`);
}
}
@@ -397,7 +397,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
}
}
catch (err) {
this.logger.warn(`[Model] Unable to read workspace folder '${currentFolder.path}': ${err}`);
this.logger.warn(`[Model][traverseWorkspaceFolder] Unable to read workspace folder '${currentFolder.path}': ${err}`);
continue;
}
@@ -459,11 +459,11 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
.filter(r => !(workspace.workspaceFolders || []).some(f => isDescendant(f.uri.fsPath, r!.repository.root))) as OpenRepository[];
openRepositoriesToDispose.forEach(r => r.dispose());
this.logger.trace(`[Model] Workspace folders: [${possibleRepositoryFolders.map(p => p.uri.fsPath).join(', ')}]`);
this.logger.trace(`[Model][onDidChangeWorkspaceFolders] Workspace folders: [${possibleRepositoryFolders.map(p => p.uri.fsPath).join(', ')}]`);
await Promise.all(possibleRepositoryFolders.map(p => this.openRepository(p.uri.fsPath)));
}
catch (err) {
this.logger.warn(`[Model] onDidChangeWorkspaceFolders: ${err}`);
this.logger.warn(`[Model][onDidChangeWorkspaceFolders] Error: ${err}`);
}
}
@@ -477,7 +477,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
.filter(({ root }) => workspace.getConfiguration('git', root).get<boolean>('enabled') !== true)
.map(({ repository }) => repository);
this.logger.trace(`[Model] Workspace folders: [${possibleRepositoryFolders.map(p => p.uri.fsPath).join(', ')}]`);
this.logger.trace(`[Model][onDidChangeConfiguration] Workspace folders: [${possibleRepositoryFolders.map(p => p.uri.fsPath).join(', ')}]`);
possibleRepositoryFolders.forEach(p => this.openRepository(p.uri.fsPath));
openRepositoriesToDispose.forEach(r => r.dispose());
}
@@ -485,7 +485,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
private async onDidChangeVisibleTextEditors(editors: readonly TextEditor[]): Promise<void> {
try {
if (!workspace.isTrusted) {
this.logger.trace('[Model] Workspace is not trusted.');
this.logger.trace('[Model][onDidChangeVisibleTextEditors] Workspace is not trusted.');
return;
}
@@ -506,25 +506,25 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
const repository = this.getRepository(uri);
if (repository) {
this.logger.trace(`[Model] Repository for editor resource ${uri.fsPath} already exists: ${repository.root}`);
this.logger.trace(`[Model][onDidChangeVisibleTextEditors] Repository for editor resource ${uri.fsPath} already exists: ${repository.root}`);
return;
}
this.logger.trace(`[Model] Open repository for editor resource ${uri.fsPath}`);
this.logger.trace(`[Model][onDidChangeVisibleTextEditors] Open repository for editor resource ${uri.fsPath}`);
await this.openRepository(path.dirname(uri.fsPath));
}));
}
catch (err) {
this.logger.warn(`[Model] onDidChangeVisibleTextEditors: ${err}`);
this.logger.warn(`[Model][onDidChangeVisibleTextEditors] Error: ${err}`);
}
}
@sequentialize
async openRepository(repoPath: string, openIfClosed = false): Promise<void> {
this.logger.trace(`[Model] Opening repository: ${repoPath}`);
this.logger.trace(`[Model][openRepository] Repository: ${repoPath}`);
const existingRepository = await this.getRepositoryExact(repoPath);
if (existingRepository) {
this.logger.trace(`[Model] Repository for path ${repoPath} already exists: ${existingRepository.root}`);
this.logger.trace(`[Model][openRepository] Repository for path ${repoPath} already exists: ${existingRepository.root}`);
return;
}
@@ -532,7 +532,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
const enabled = config.get<boolean>('enabled') === true;
if (!enabled) {
this.logger.trace('[Model] Git is not enabled');
this.logger.trace('[Model][openRepository] Git is not enabled');
return;
}
@@ -542,7 +542,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
fs.accessSync(path.join(repoPath, 'HEAD'), fs.constants.F_OK);
const result = await this.git.exec(repoPath, ['-C', repoPath, 'rev-parse', '--show-cdup']);
if (result.stderr.trim() === '' && result.stdout.trim() === '') {
this.logger.trace(`[Model] Bare repository: ${repoPath}`);
this.logger.trace(`[Model][openRepository] Bare repository: ${repoPath}`);
return;
}
} catch {
@@ -552,16 +552,16 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
try {
const { repositoryRoot, unsafeRepositoryMatch } = await this.getRepositoryRoot(repoPath);
this.logger.trace(`[Model] Repository root for path ${repoPath} is: ${repositoryRoot}`);
this.logger.trace(`[Model][openRepository] Repository root for path ${repoPath} is: ${repositoryRoot}`);
const existingRepository = await this.getRepositoryExact(repositoryRoot);
if (existingRepository) {
this.logger.trace(`[Model] Repository for path ${repositoryRoot} already exists: ${existingRepository.root}`);
this.logger.trace(`[Model][openRepository] Repository for path ${repositoryRoot} already exists: ${existingRepository.root}`);
return;
}
if (this.shouldRepositoryBeIgnored(repositoryRoot)) {
this.logger.trace(`[Model] Repository for path ${repositoryRoot} is ignored`);
this.logger.trace(`[Model][openRepository] Repository for path ${repositoryRoot} is ignored`);
return;
}
@@ -570,7 +570,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
if (parentRepositoryConfig !== 'always' && this.globalState.get<boolean>(`parentRepository:${repositoryRoot}`) !== true) {
const isRepositoryOutsideWorkspace = await this.isRepositoryOutsideWorkspace(repositoryRoot);
if (isRepositoryOutsideWorkspace) {
this.logger.trace(`[Model] Repository in parent folder: ${repositoryRoot}`);
this.logger.trace(`[Model][openRepository] Repository in parent folder: ${repositoryRoot}`);
if (!this._parentRepositoriesManager.hasRepository(repositoryRoot)) {
// Show a notification if the parent repository is opened after the initial scan
@@ -587,7 +587,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
// Handle unsafe repositories
if (unsafeRepositoryMatch && unsafeRepositoryMatch.length === 3) {
this.logger.trace(`[Model] Unsafe repository: ${repositoryRoot}`);
this.logger.trace(`[Model][openRepository] Unsafe repository: ${repositoryRoot}`);
// Show a notification if the unsafe repository is opened after the initial scan
if (this._state === 'initialized' && !this._unsafeRepositoriesManager.hasRepository(repositoryRoot)) {
@@ -601,7 +601,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
// Handle repositories that were closed by the user
if (!openIfClosed && this._closedRepositoriesManager.isRepositoryClosed(repositoryRoot)) {
this.logger.trace(`[Model] Repository for path ${repositoryRoot} is closed`);
this.logger.trace(`[Model][openRepository] Repository for path ${repositoryRoot} is closed`);
return;
}
@@ -612,14 +612,14 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
this.open(repository);
this._closedRepositoriesManager.deleteRepository(repository.root);
this.logger.info(`[Model] Opened repository: ${repository.root}`);
this.logger.info(`[Model][openRepository] Opened repository: ${repository.root}`);
// Do not await this, we want SCM
// to know about the repo asap
repository.status();
} catch (err) {
// noop
this.logger.trace(`[Model] Opening repository for path='${repoPath}' failed; ex=${err}`);
this.logger.trace(`[Model][openRepository] Opening repository for path='${repoPath}' failed. Error:${err}`);
}
}
@@ -651,7 +651,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
const repositoryRootRealPath = await fs.promises.realpath(repositoryRoot);
return !pathEquals(repositoryRoot, repositoryRootRealPath) ? repositoryRootRealPath : undefined;
} catch (err) {
this.logger.warn(`[Model] Failed to get repository realpath for "${repositoryRoot}": ${err}`);
this.logger.warn(`[Model][getRepositoryRootRealPath] Failed to get repository realpath for "${repositoryRoot}": ${err}`);
return undefined;
}
}
@@ -678,7 +678,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
}
private open(repository: Repository): void {
this.logger.trace(`[Model] Open repository: ${repository.root}`);
this.logger.trace(`[Model][open] Repository: ${repository.root}`);
const onDidDisappearRepository = filterEvent(repository.onDidChangeState, state => state === RepositoryState.Disposed);
const disappearListener = onDidDisappearRepository(() => dispose());
@@ -695,7 +695,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
const checkForSubmodules = () => {
if (!shouldDetectSubmodules) {
this.logger.trace('[Model] Automatic detection of git submodules is not enabled.');
this.logger.trace('[Model][open] Automatic detection of git submodules is not enabled.');
return;
}
@@ -708,7 +708,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
.slice(0, submodulesLimit)
.map(r => path.join(repository.root, r.path))
.forEach(p => {
this.logger.trace(`Opening submodule: '${p}'`);
this.logger.trace(`[Model][open] Opening submodule: '${p}'`);
this.eventuallyScanPossibleGitRepository(p);
});
};
@@ -770,7 +770,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
return;
}
this.logger.info(`[Model] Close repository: ${repository.root}`);
this.logger.info(`[Model][close] Repository: ${repository.root}`);
this._closedRepositoriesManager.addRepository(openRepository.repository.root);
openRepository.dispose();
@@ -823,7 +823,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
return openRepositoryRealPath?.repository;
} catch (err) {
this.logger.warn(`[Model] Failed to get repository realpath for: "${repoPath}". ${err}`);
this.logger.warn(`[Model][getRepositoryExact] Failed to get repository realpath for: "${repoPath}". Error:${err}`);
return undefined;
}
}
@@ -1009,7 +1009,7 @@ export class Model implements IRepositoryResolver, IBranchProtectionProviderRegi
this._workspaceFolders.set(workspaceFolder.uri.fsPath, result);
} catch (err) {
// noop - Workspace folder does not exist
this.logger.trace(`[Model] Failed to resolve workspace folder "${workspaceFolder.uri.fsPath}": ${err}`);
this.logger.trace(`[Model][getWorkspaceFolderRealPath] Failed to resolve workspace folder "${workspaceFolder.uri.fsPath}". Error:${err}`);
}
}
+2 -2
View File
@@ -214,7 +214,7 @@ export class OperationManager implements IOperationManager {
this.operations.set(operation.kind, new Set([operation]));
}
this.logger.trace(`Operation start: ${operation.kind} (blocking: ${operation.blocking}, readOnly: ${operation.readOnly}; retry: ${operation.retry}; showProgress: ${operation.showProgress})`);
this.logger.trace(`[OperationManager][start] ${operation.kind} (blocking: ${operation.blocking}, readOnly: ${operation.readOnly}; retry: ${operation.retry}; showProgress: ${operation.showProgress})`);
}
end(operation: Operation): void {
@@ -226,7 +226,7 @@ export class OperationManager implements IOperationManager {
}
}
this.logger.trace(`Operation end: ${operation.kind} (blocking: ${operation.blocking}, readOnly: ${operation.readOnly}; retry: ${operation.retry}; showProgress: ${operation.showProgress})`);
this.logger.trace(`[OperationManager][end] ${operation.kind} (blocking: ${operation.blocking}, readOnly: ${operation.readOnly}; retry: ${operation.retry}; showProgress: ${operation.showProgress})`);
}
getOperations(operationKind: OperationKind): Operation[] {
+7 -7
View File
@@ -22,7 +22,7 @@ export class GitProtocolHandler implements UriHandler {
}
handleUri(uri: Uri): void {
this.logger.info(`[GitProtocolHandler] handleUri(${uri.toString()})`);
this.logger.info(`[GitProtocolHandler][handleUri] URI:(${uri.toString()})`);
switch (uri.path) {
case '/clone': this.clone(uri);
@@ -34,17 +34,17 @@ export class GitProtocolHandler implements UriHandler {
const ref = data.ref;
if (!data.url) {
this.logger.warn('[GitProtocolHandler] Failed to open URI:' + uri.toString());
this.logger.warn('[GitProtocolHandler][clone] Failed to open URI:' + uri.toString());
return;
}
if (Array.isArray(data.url) && data.url.length === 0) {
this.logger.warn('[GitProtocolHandler] Failed to open URI:' + uri.toString());
this.logger.warn('[GitProtocolHandler][clone] Failed to open URI:' + uri.toString());
return;
}
if (ref !== undefined && typeof ref !== 'string') {
this.logger.warn('[GitProtocolHandler] Failed to open URI due to multiple references:' + uri.toString());
this.logger.warn('[GitProtocolHandler][clone] Failed to open URI due to multiple references:' + uri.toString());
return;
}
@@ -69,12 +69,12 @@ export class GitProtocolHandler implements UriHandler {
}
}
catch (ex) {
this.logger.warn('[GitProtocolHandler] Invalid URI:' + uri.toString());
this.logger.warn('[GitProtocolHandler][clone] Invalid URI:' + uri.toString());
return;
}
if (!(await commands.getCommands(true)).includes('git.clone')) {
this.logger.error('[GitProtocolHandler] Could not complete git clone operation as git installation was not found.');
this.logger.error('[GitProtocolHandler][clone] Could not complete git clone operation as git installation was not found.');
const errorMessage = l10n.t('Could not clone your repository as Git is not installed.');
const downloadGit = l10n.t('Download Git');
@@ -86,7 +86,7 @@ export class GitProtocolHandler implements UriHandler {
return;
} else {
const cloneTarget = cloneUri.toString(true);
this.logger.info(`[GitProtocolHandler] Executing git.clone for ${cloneTarget}`);
this.logger.info(`[GitProtocolHandler][clone] Executing git.clone for ${cloneTarget}`);
commands.executeCommand('git.clone', cloneTarget, undefined, { ref: ref });
}
}
+7 -7
View File
@@ -426,8 +426,8 @@ class FileEventLogger {
}
this.eventDisposable = combinedDisposable([
this.onWorkspaceWorkingTreeFileChange(uri => this.logger.debug(`[wt] Change: ${uri.fsPath}`)),
this.onDotGitFileChange(uri => this.logger.debug(`[.git] Change: ${uri.fsPath}`))
this.onWorkspaceWorkingTreeFileChange(uri => this.logger.debug(`[FileEventLogger][onWorkspaceWorkingTreeFileChange] ${uri.fsPath}`)),
this.onDotGitFileChange(uri => this.logger.debug(`[FileEventLogger][onDotGitFileChange] ${uri.fsPath}`))
]);
}
@@ -478,7 +478,7 @@ class DotGitWatcher implements IFileWatcher {
this.transientDisposables.push(upstreamWatcher);
upstreamWatcher.event(this.emitter.fire, this.emitter, this.transientDisposables);
} catch (err) {
this.logger.warn(`Failed to watch ref '${upstreamPath}', is most likely packed.`);
this.logger.warn(`[DotGitWatcher][updateTransientWatchers] Failed to watch ref '${upstreamPath}', is most likely packed.`);
}
}
@@ -1523,7 +1523,7 @@ export class Repository implements Disposable {
return upstreamBranch;
}
catch (err) {
this.logger.warn(`Failed to get branch details for 'refs/remotes/${branch.upstream.remote}/${branch.upstream.name}': ${err.message}.`);
this.logger.warn(`[Repository][getUpstreamBranch] Failed to get branch details for 'refs/remotes/${branch.upstream.remote}/${branch.upstream.name}': ${err.message}.`);
return undefined;
}
}
@@ -2409,17 +2409,17 @@ export class Repository implements Disposable {
const autorefresh = config.get<boolean>('autorefresh');
if (!autorefresh) {
this.logger.trace('Skip running git status because autorefresh setting is disabled.');
this.logger.trace('[Repository][onFileChange] Skip running git status because autorefresh setting is disabled.');
return;
}
if (this.isRepositoryHuge) {
this.logger.trace('Skip running git status because repository is huge.');
this.logger.trace('[Repository][onFileChange] Skip running git status because repository is huge.');
return;
}
if (!this.operations.isIdle()) {
this.logger.trace('Skip running git status because an operation is running.');
this.logger.trace('[Repository][onFileChange] Skip running git status because an operation is running.');
return;
}