Add command to drop all stashes

This commit is contained in:
Ladislau Szomoru 2022-01-07 11:11:01 +01:00
parent 419e16a49c
commit 302c41cf4e
No known key found for this signature in database
GPG key ID: 2B88287CB9DB080B
4 changed files with 41 additions and 1 deletions

View file

@ -501,6 +501,11 @@
"title": "%command.stashDrop%",
"category": "Git"
},
{
"command": "git.stashDropAll",
"title": "%command.stashDropAll%",
"category": "Git"
},
{
"command": "git.timeline.openDiff",
"title": "%command.timelineOpenDiff%",
@ -914,6 +919,10 @@
"command": "git.stashDrop",
"when": "config.git.enabled && !git.missing && gitOpenRepositoryCount != 0"
},
{
"command": "git.stashDropAll",
"when": "config.git.enabled && !git.missing && gitOpenRepositoryCount != 0"
},
{
"command": "git.timeline.openDiff",
"when": "false"
@ -1651,6 +1660,10 @@
{
"command": "git.stashDrop",
"group": "stash@7"
},
{
"command": "git.stashDropAll",
"group": "stash@8"
}
],
"git.tags": [

View file

@ -87,6 +87,7 @@
"command.stashApply": "Apply Stash...",
"command.stashApplyLatest": "Apply Latest Stash",
"command.stashDrop": "Drop Stash...",
"command.stashDropAll": "Drop All Stashes...",
"command.timelineOpenDiff": "Open Changes",
"command.timelineCopyCommitId": "Copy Commit ID",
"command.timelineCopyCommitMessage": "Copy Commit Message",

View file

@ -2604,6 +2604,29 @@ export class CommandCenter {
await repository.dropStash(stash.index);
}
@command('git.stashDropAll', { repository: true })
async stashDropAll(repository: Repository): Promise<void> {
const stashes = await repository.getStashes();
if (stashes.length === 0) {
window.showInformationMessage(localize('no stashes', "There are no stashes in the repository."));
return;
}
// request confirmation for the operation
const yes = localize('yes', "Yes");
const question = stashes.length === 1 ?
localize('drop one stash', "Are you sure you want to drop ALL stashes? There is 1 stash that will be subject to pruning, and MAY BE IMPOSSIBLE TO RECOVER.") :
localize('drop all stashes', "Are you sure you want to drop ALL stashes? There are {0} stashes that will be subject to pruning, and MAY BE IMPOSSIBLE TO RECOVER.", stashes.length);
const result = await window.showWarningMessage(question, yes);
if (result !== yes) {
return;
}
await repository.dropStash();
}
private async pickStash(repository: Repository, placeHolder: string): Promise<Stash | undefined> {
const stashes = await repository.getStashes();

View file

@ -1794,10 +1794,13 @@ export class Repository {
}
async dropStash(index?: number): Promise<void> {
const args = ['stash', 'drop'];
const args = ['stash'];
if (typeof index === 'number') {
args.push('drop');
args.push(`stash@{${index}}`);
} else {
args.push('clear');
}
try {