Git: Add cherryPick command

上级 6d913c4c
...@@ -326,6 +326,11 @@ ...@@ -326,6 +326,11 @@
"title": "%command.pushFollowTagsForce%", "title": "%command.pushFollowTagsForce%",
"category": "Git" "category": "Git"
}, },
{
"command": "git.cherryPick",
"title": "%command.cherryPick%",
"category": "Git"
},
{ {
"command": "git.addRemote", "command": "git.addRemote",
"title": "%command.addRemote%", "title": "%command.addRemote%",
...@@ -673,6 +678,10 @@ ...@@ -673,6 +678,10 @@
"command": "git.pushWithTagsForce", "command": "git.pushWithTagsForce",
"when": "config.git.enabled && !git.missing && config.git.allowForcePush && gitOpenRepositoryCount != 0" "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", "command": "git.addRemote",
"when": "config.git.enabled && !git.missing && gitOpenRepositoryCount != 0" "when": "config.git.enabled && !git.missing && gitOpenRepositoryCount != 0"
......
...@@ -56,6 +56,7 @@ ...@@ -56,6 +56,7 @@
"command.pushToForce": "Push to... (Force)", "command.pushToForce": "Push to... (Force)",
"command.pushFollowTags": "Push (Follow Tags)", "command.pushFollowTags": "Push (Follow Tags)",
"command.pushFollowTagsForce": "Push (Follow Tags, Force)", "command.pushFollowTagsForce": "Push (Follow Tags, Force)",
"command.cherryPick": "Cherry Pick...",
"command.addRemote": "Add Remote...", "command.addRemote": "Add Remote...",
"command.removeRemote": "Remove Remote", "command.removeRemote": "Remove Remote",
"command.sync": "Sync", "command.sync": "Sync",
......
...@@ -2027,6 +2027,21 @@ export class CommandCenter { ...@@ -2027,6 +2027,21 @@ export class CommandCenter {
await this._push(repository, { pushType: PushType.PushFollowTags, forcePush: true }); 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 }) @command('git.pushTo', { repository: true })
async pushTo(repository: Repository): Promise<void> { async pushTo(repository: Repository): Promise<void> {
await this._push(repository, { pushType: PushType.PushTo }); await this._push(repository, { pushType: PushType.PushTo });
......
...@@ -1635,6 +1635,11 @@ export class Repository { ...@@ -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> { async blame(path: string): Promise<string> {
try { try {
const args = ['blame', sanitizePath(path)]; const args = ['blame', sanitizePath(path)];
......
...@@ -294,6 +294,7 @@ export const enum Operation { ...@@ -294,6 +294,7 @@ export const enum Operation {
Fetch = 'Fetch', Fetch = 'Fetch',
Pull = 'Pull', Pull = 'Pull',
Push = 'Push', Push = 'Push',
CherryPick = 'CherryPick',
Sync = 'Sync', Sync = 'Sync',
Show = 'Show', Show = 'Show',
Stage = 'Stage', Stage = 'Stage',
...@@ -1195,6 +1196,10 @@ export class Repository implements Disposable { ...@@ -1195,6 +1196,10 @@ export class Repository implements Disposable {
await this.run(Operation.Push, () => this._push(remote, undefined, false, true, forcePushMode)); 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> { async blame(path: string): Promise<string> {
return await this.run(Operation.Blame, () => this.repository.blame(path)); return await this.run(Operation.Blame, () => this.repository.blame(path));
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册