From 18c281a67c43a24adf57a7d784d6074a3c1ef1fd Mon Sep 17 00:00:00 2001 From: Conceicao Date: Fri, 17 Jan 2025 11:52:14 -0300 Subject: [PATCH 1/2] Starts to search workspace from resource file --- package.json | 2 +- src/extension.ts | 40 +++++++++++++++++++++------------------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 0b09a19..969f3ad 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "rech-git-sparse-scm", "displayName": "SCM Sparse Checkout Extension", "description": "Rech Git Sparse enhances your version control experience in Visual Studio Code Source Control by integrating sparse checkout capabilities.", - "version": "0.0.10", + "version": "0.0.11", "publisher": "rechinformatica", "engines": { "vscode": "^1.89.0" diff --git a/src/extension.ts b/src/extension.ts index b94ec9d..e1bbb7d 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -10,19 +10,19 @@ export function activate(context: vscode.ExtensionContext) { const updateContext = - // Update context when active editor changes - vscode.window.onDidChangeActiveTextEditor(() => { - const editor = vscode.window.activeTextEditor; - if (editor) { - const filePath = editor.document.fileName; - const config = vscode.workspace.getConfiguration('rech-git-sparse-scm'); - const mirrorRepositories = config.get('mirrorRepository', []); - const isInMirrorRepo = mirrorRepositories.some(repo => filePath.startsWith(repo)); - vscode.commands.executeCommand('setContext', 'isInMirrorRepository', isInMirrorRepo); - } else { - vscode.commands.executeCommand('setContext', 'isInMirrorRepository', false); - } - }); + // Update context when active editor changes + vscode.window.onDidChangeActiveTextEditor(() => { + const editor = vscode.window.activeTextEditor; + if (editor) { + const filePath = editor.document.fileName; + const config = vscode.workspace.getConfiguration('rech-git-sparse-scm'); + const mirrorRepositories = config.get('mirrorRepository', []); + const isInMirrorRepo = mirrorRepositories.some(repo => filePath.startsWith(repo)); + vscode.commands.executeCommand('setContext', 'isInMirrorRepository', isInMirrorRepo); + } else { + vscode.commands.executeCommand('setContext', 'isInMirrorRepository', false); + } + }); // Initialize remote repository only after git extensions opens a repository const resourceStateProviderGit = new ResourceStateProviderGit(); @@ -140,12 +140,17 @@ export function activate(context: vscode.ExtensionContext) { // Remove selected file in sparse-checkout control const removeSparseCheckout = vscode.commands.registerCommand('rech-git-sparse-scm.removeSparseCheckout', (resource: vscode.SourceControlResourceState | vscode.Uri) => { let resourcePath = ""; + let workspaceFolderFromFile; + if (activeEditor) { + workspaceFolderFromFile = vscode.workspace.getWorkspaceFolder(activeEditor.document.uri)?.uri.fsPath; + } if (resource) { if (resource instanceof RemoteResource) { resourcePath = resource.resourceUri.path; } if (resource instanceof vscode.Uri) { resourcePath = resource.path; + workspaceFolderFromFile = vscode.workspace.getWorkspaceFolder(resource)?.uri.fsPath; } } else { // Obtain repository directory mirror list @@ -158,12 +163,9 @@ export function activate(context: vscode.ExtensionContext) { }); } } - if (activeEditor) { - let workspaceFolderFromFile = vscode.workspace.getWorkspaceFolder(activeEditor.document.uri)?.uri.fsPath; - if (workspaceFolderFromFile) { - workspaceFolderFromFile = workspaceFolderFromFile.replaceAll("\\", "/") + "/"; - resourcePath = resourcePath.replace(workspaceFolderFromFile, ''); - } + if (workspaceFolderFromFile) { + workspaceFolderFromFile = workspaceFolderFromFile.replaceAll("\\", "/") + "/"; + resourcePath = resourcePath.replace(workspaceFolderFromFile, ''); } // Is there a valid file to sparse checkout? if (resourcePath.length > 0) { From 0f788f55b36000260f703fa1d6e422e5247dd83d Mon Sep 17 00:00:00 2001 From: Conceicao Date: Mon, 20 Jan 2025 11:30:33 -0300 Subject: [PATCH 2/2] Case sensitive ignored in remove sparse --- package.json | 2 +- src/extension.ts | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 969f3ad..7ba3d19 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "rech-git-sparse-scm", "displayName": "SCM Sparse Checkout Extension", "description": "Rech Git Sparse enhances your version control experience in Visual Studio Code Source Control by integrating sparse checkout capabilities.", - "version": "0.0.11", + "version": "0.0.12", "publisher": "rechinformatica", "engines": { "vscode": "^1.89.0" diff --git a/src/extension.ts b/src/extension.ts index e1bbb7d..6e4d164 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -136,13 +136,14 @@ export function activate(context: vscode.ExtensionContext) { }); context.subscriptions.push(removeAllSparseCheckout); - const activeEditor = vscode.window.activeTextEditor; // Remove selected file in sparse-checkout control const removeSparseCheckout = vscode.commands.registerCommand('rech-git-sparse-scm.removeSparseCheckout', (resource: vscode.SourceControlResourceState | vscode.Uri) => { - let resourcePath = ""; + const activeEditor = vscode.window.activeTextEditor; + let resourcePath; let workspaceFolderFromFile; + if (activeEditor) { - workspaceFolderFromFile = vscode.workspace.getWorkspaceFolder(activeEditor.document.uri)?.uri.fsPath; + workspaceFolderFromFile = vscode.workspace.getWorkspaceFolder(activeEditor.document.uri)?.uri.fsPath.replaceAll("\\", "/") + "/"; } if (resource) { if (resource instanceof RemoteResource) { @@ -150,7 +151,9 @@ export function activate(context: vscode.ExtensionContext) { } if (resource instanceof vscode.Uri) { resourcePath = resource.path; - workspaceFolderFromFile = vscode.workspace.getWorkspaceFolder(resource)?.uri.fsPath; + workspaceFolderFromFile = vscode.workspace.getWorkspaceFolder(resource)?.uri.fsPath.replaceAll("\\", "/") + "/"; + vscode.window.showInformationMessage(`resourcePath: ${resourcePath}`); + vscode.window.showInformationMessage(`workspaceFolderFromFile: ${workspaceFolderFromFile}`); } } else { // Obtain repository directory mirror list @@ -163,12 +166,11 @@ export function activate(context: vscode.ExtensionContext) { }); } } - if (workspaceFolderFromFile) { - workspaceFolderFromFile = workspaceFolderFromFile.replaceAll("\\", "/") + "/"; - resourcePath = resourcePath.replace(workspaceFolderFromFile, ''); + if (workspaceFolderFromFile && resourcePath) { + resourcePath = resourcePath.replace(new RegExp(workspaceFolderFromFile.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), 'gi'), ''); } // Is there a valid file to sparse checkout? - if (resourcePath.length > 0) { + if (resourcePath) { RemoveSparseCheckoutCommand.removeSparseCheckout(resourcePath); } else { vscode.window.showErrorMessage('Nenhum arquivo selecionado ou aberto para adicionar no sparse-checkout.');