mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 09:08:48 +01:00
Git - standardize logging in the git extension (#220043)
* Git - more logging * Git - more logging changes
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
@@ -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}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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[] {
|
||||
|
||||
@@ -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 });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user