From 7bdbccd2407af8fb16db905e34b3b4fe0d40a113 Mon Sep 17 00:00:00 2001 From: Ladislau Szomoru <3372902+lszomoru@users.noreply.github.com> Date: Fri, 7 Nov 2025 11:38:52 +0000 Subject: [PATCH] Git - improve logic to pick a worktree to migrate changes from (#276048) --- extensions/git/src/commands.ts | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts index 37f8732ee34..824798dc0c5 100644 --- a/extensions/git/src/commands.ts +++ b/extensions/git/src/commands.ts @@ -3397,23 +3397,33 @@ export class CommandCenter { } @command('git.migrateWorktreeChanges', { repository: true, repositoryFilter: ['repository', 'submodule'] }) - async migrateWorktreeChanges(repository: Repository): Promise { - const worktreePicks = async (): Promise => { + async migrateWorktreeChanges(repository: Repository, worktreeUri?: Uri): Promise { + let worktreeRepository: Repository | undefined; + if (worktreeUri !== undefined) { + worktreeRepository = this.model.getRepository(worktreeUri); + } else { const worktrees = await repository.getWorktrees(); - return worktrees.length === 0 - ? [{ label: l10n.t('$(info) This repository has no worktrees.') }] - : worktrees.map(worktree => new WorktreeItem(worktree)); - }; + if (worktrees.length === 1) { + worktreeRepository = this.model.getRepository(worktrees[0].path); + } else { + const worktreePicks = async (): Promise => { + return worktrees.length === 0 + ? [{ label: l10n.t('$(info) This repository has no worktrees.') }] + : worktrees.map(worktree => new WorktreeItem(worktree)); + }; - const placeHolder = l10n.t('Select a worktree to migrate changes from'); - const choice = await this.pickRef(worktreePicks(), placeHolder); + const placeHolder = l10n.t('Select a worktree to migrate changes from'); + const choice = await this.pickRef(worktreePicks(), placeHolder); - if (!choice || !(choice instanceof WorktreeItem)) { - return; + if (!choice || !(choice instanceof WorktreeItem)) { + return; + } + + worktreeRepository = this.model.getRepository(choice.worktree.path); + } } - const worktreeRepository = this.model.getRepository(choice.worktree.path); - if (!worktreeRepository) { + if (!worktreeRepository || worktreeRepository.kind !== 'worktree') { return; }