Git: Add cherryPick command

This commit is contained in:
sneakyfish5.sneaky@gmail.com 2020-08-09 16:48:22 -05:00
parent 6d913c4c14
commit ff8d4feeb4
5 changed files with 35 additions and 0 deletions

View file

@ -326,6 +326,11 @@
"title": "%command.pushFollowTagsForce%",
"category": "Git"
},
{
"command": "git.cherryPick",
"title": "%command.cherryPick%",
"category": "Git"
},
{
"command": "git.addRemote",
"title": "%command.addRemote%",
@ -673,6 +678,10 @@
"command": "git.pushWithTagsForce",
"when": "config.git.enabled && !git.missing && config.git.allowForcePush && gitOpenRepositoryCount != 0"
},
{
"command": "git.cherryPick",
"when": "config.git.enabled && !git.missing && gitOpenRepositoryCount != 0"
},
{
"command": "git.addRemote",
"when": "config.git.enabled && !git.missing && gitOpenRepositoryCount != 0"

View file

@ -56,6 +56,7 @@
"command.pushToForce": "Push to... (Force)",
"command.pushFollowTags": "Push (Follow Tags)",
"command.pushFollowTagsForce": "Push (Follow Tags, Force)",
"command.cherryPick": "Cherry Pick...",
"command.addRemote": "Add Remote...",
"command.removeRemote": "Remove Remote",
"command.sync": "Sync",

View file

@ -2027,6 +2027,21 @@ export class CommandCenter {
await this._push(repository, { pushType: PushType.PushFollowTags, forcePush: true });
}
@command('git.cherryPick', { repository: true })
async cherryPick(repository: Repository): Promise<void> {
const inputCommitHash = await window.showInputBox({
placeHolder: localize('commit hash', "Commit Hash"),
prompt: localize('provide commit hash', "Please provide the commit hash"),
ignoreFocusOut: true
});
if (!inputCommitHash) {
return;
}
await repository.cherryPick(inputCommitHash);
}
@command('git.pushTo', { repository: true })
async pushTo(repository: Repository): Promise<void> {
await this._push(repository, { pushType: PushType.PushTo });

View file

@ -1635,6 +1635,11 @@ export class Repository {
}
}
async cherryPick(commitHash: string): Promise<void> {
const args = ['cherry-pick', commitHash];
await this.run(args);
}
async blame(path: string): Promise<string> {
try {
const args = ['blame', sanitizePath(path)];

View file

@ -294,6 +294,7 @@ export const enum Operation {
Fetch = 'Fetch',
Pull = 'Pull',
Push = 'Push',
CherryPick = 'CherryPick',
Sync = 'Sync',
Show = 'Show',
Stage = 'Stage',
@ -1195,6 +1196,10 @@ export class Repository implements Disposable {
await this.run(Operation.Push, () => this._push(remote, undefined, false, true, forcePushMode));
}
async cherryPick(commitHash: string): Promise<void> {
await this.run(Operation.CherryPick, () => this.repository.cherryPick(commitHash));
}
async blame(path: string): Promise<string> {
return await this.run(Operation.Blame, () => this.repository.blame(path));
}