Skip to content

Commit cc28f16

Browse files
authored
Git - add the ability to create a worktree from a worktree (microsoft#258956)
1 parent 724eea7 commit cc28f16

File tree

1 file changed

+32
-4
lines changed

1 file changed

+32
-4
lines changed

extensions/git/src/commands.ts

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3397,8 +3397,36 @@ export class CommandCenter {
33973397
}
33983398
}
33993399

3400-
@command('git.createWorktree', { repository: true, repositoryFilter: ['repository', 'submodule'] })
3401-
async createWorktree(repository: Repository): Promise<void> {
3400+
@command('git.createWorktree')
3401+
async createWorktree(repository: any): Promise<void> {
3402+
repository = this.model.getRepository(repository);
3403+
3404+
if (!repository) {
3405+
// Single repository/submodule/worktree
3406+
if (this.model.repositories.length === 1) {
3407+
repository = this.model.repositories[0];
3408+
}
3409+
}
3410+
3411+
if (!repository) {
3412+
// Single repository/submodule
3413+
const repositories = this.model.repositories
3414+
.filter(r => r.kind === 'repository' || r.kind === 'submodule');
3415+
3416+
if (repositories.length === 1) {
3417+
repository = repositories[0];
3418+
}
3419+
}
3420+
3421+
if (!repository) {
3422+
// Multiple repositories/submodules
3423+
repository = await this.model.pickRepository(['repository', 'submodule']);
3424+
}
3425+
3426+
if (!repository) {
3427+
return;
3428+
}
3429+
34023430
await this._createWorktree(repository);
34033431
}
34043432

@@ -3640,7 +3668,7 @@ export class CommandCenter {
36403668
}
36413669
}
36423670

3643-
@command('git.openWorktree', { repository: true, repositoryFilter: ['worktree'] })
3671+
@command('git.openWorktree', { repository: true })
36443672
async openWorktreeInCurrentWindow(repository: Repository): Promise<void> {
36453673
if (!repository) {
36463674
return;
@@ -3650,7 +3678,7 @@ export class CommandCenter {
36503678
await commands.executeCommand('vscode.openFolder', uri, { forceReuseWindow: true });
36513679
}
36523680

3653-
@command('git.openWorktreeInNewWindow', { repository: true, repositoryFilter: ['worktree'] })
3681+
@command('git.openWorktreeInNewWindow', { repository: true })
36543682
async openWorktreeInNewWindow(repository: Repository): Promise<void> {
36553683
if (!repository) {
36563684
return;

0 commit comments

Comments
 (0)