提交 d8806899 编写于 作者: J Joao Moreno

git: fetch from all remotes

fixes #56463
上级 f9d5b656
......@@ -260,6 +260,11 @@
"title": "%command.fetch%",
"category": "Git"
},
{
"command": "git.fetchAll",
"title": "%command.fetchAll%",
"category": "Git"
},
{
"command": "git.pull",
"title": "%command.pull%",
......@@ -494,6 +499,10 @@
"command": "git.fetch",
"when": "config.git.enabled && gitOpenRepositoryCount != 0"
},
{
"command": "git.fetchAll",
"when": "config.git.enabled && gitOpenRepositoryCount != 0"
},
{
"command": "git.push",
"when": "config.git.enabled && gitOpenRepositoryCount != 0"
......
......@@ -36,6 +36,7 @@
"command.merge": "Merge Branch...",
"command.createTag": "Create Tag",
"command.fetch": "Fetch",
"command.fetchAll": "Fetch From All Remotes",
"command.pull": "Pull",
"command.pullRebase": "Pull (Rebase)",
"command.pullFrom": "Pull from...",
......
......@@ -1397,6 +1397,16 @@ export class CommandCenter {
await repository.fetchDefault();
}
@command('git.fetchAll', { repository: true })
async fetchAll(repository: Repository): Promise<void> {
if (repository.remotes.length === 0) {
window.showWarningMessage(localize('no remotes to fetch', "This repository has no remotes configured to fetch from."));
return;
}
await repository.fetchAll();
}
@command('git.pullFrom', { repository: true })
async pullFrom(repository: Repository): Promise<void> {
const remotes = repository.remotes;
......
......@@ -1142,19 +1142,21 @@ export class Repository {
await this.run(args);
}
async fetch(remote?: string, ref?: string): Promise<void> {
async fetch(options: { remote?: string, ref?: string, all?: boolean } = {}): Promise<void> {
const args = ['fetch'];
if (remote) {
args.push(remote);
if (options.remote) {
args.push(options.remote);
if (ref) {
args.push(ref);
if (options.ref) {
args.push(options.ref);
}
} else if (options.all) {
args.push('--all');
}
try {
await this.run(['fetch']);
await this.run(args);
} catch (err) {
if (/No remote repository specified\./.test(err.stderr || '')) {
err.gitErrorCode = GitErrorCodes.NoRemoteRepositorySpecified;
......
......@@ -900,8 +900,13 @@ export class Repository implements Disposable {
await this.run(Operation.Fetch, () => this.repository.fetch());
}
@throttle
async fetchAll(): Promise<void> {
await this.run(Operation.Fetch, () => this.repository.fetch({ all: true }));
}
async fetch(remote?: string, ref?: string): Promise<void> {
await this.run(Operation.Fetch, () => this.repository.fetch());
await this.run(Operation.Fetch, () => this.repository.fetch({ remote, ref }));
}
@throttle
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册