Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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.12",
"publisher": "rechinformatica",
"engines": {
"vscode": "^1.89.0"
Expand Down
48 changes: 26 additions & 22 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -136,16 +136,24 @@ 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.replaceAll("\\", "/") + "/";
}
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.replaceAll("\\", "/") + "/";
vscode.window.showInformationMessage(`resourcePath: ${resourcePath}`);
vscode.window.showInformationMessage(`workspaceFolderFromFile: ${workspaceFolderFromFile}`);
}
} else {
// Obtain repository directory mirror list
Expand All @@ -158,15 +166,11 @@ 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 && 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.');
Expand Down