From fd2e5ac7f8e0b562e8984d82875f0c4f343595d1 Mon Sep 17 00:00:00 2001 From: Tom Basche Date: Thu, 9 Aug 2018 11:48:08 +1000 Subject: [PATCH 1/2] Add the ability to push empty commits --- extensions/git/package.json | 20 ++++++++++++++++++++ extensions/git/package.nls.json | 1 + extensions/git/src/commands.ts | 8 ++++++++ extensions/git/src/repository.ts | 1 + 4 files changed, 30 insertions(+) diff --git a/extensions/git/package.json b/extensions/git/package.json index 0eba9ba5c94..8ec8b7b7296 100644 --- a/extensions/git/package.json +++ b/extensions/git/package.json @@ -190,6 +190,11 @@ "title": "%command.commitStaged%", "category": "Git" }, + { + "command": "git.commitEmpty", + "title": "%command.commitEmpty%", + "category": "Git" + }, { "command": "git.commitStagedSigned", "title": "%command.commitStagedSigned%", @@ -417,6 +422,10 @@ "command": "git.commit", "when": "config.git.enabled && gitOpenRepositoryCount != 0" }, + { + "command": "git.commitEmpty", + "when": "config.git.allowcommitEmptys && gitOpenRepositoryCount != 0" + }, { "command": "git.commitStaged", "when": "config.git.enabled && gitOpenRepositoryCount != 0" @@ -599,6 +608,11 @@ "group": "3_commit", "when": "scmProvider == git" }, + { + "command": "git.commitEmpty", + "group": "3_commit", + "when": "scmProvider == git" + }, { "command": "git.commitStagedSigned", "group": "3_commit", @@ -991,6 +1005,12 @@ "description": "%config.enableCommitSigning%", "default": false }, + "git.allowEmptyCommits": { + "type": "boolean", + "scope": "resource", + "description": "%config.allowEmptyCommits%", + "default": false + }, "git.decorations.enabled": { "type": "boolean", "default": true, diff --git a/extensions/git/package.nls.json b/extensions/git/package.nls.json index bc4c812d75b..68e49f75632 100644 --- a/extensions/git/package.nls.json +++ b/extensions/git/package.nls.json @@ -22,6 +22,7 @@ "command.cleanAll": "Discard All Changes", "command.commit": "Commit", "command.commitStaged": "Commit Staged", + "command.commitEmpty": "Commit Empty", "command.commitStagedSigned": "Commit Staged (Signed Off)", "command.commitStagedAmend": "Commit Staged (Amend)", "command.commitAll": "Commit All", diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts index 2e1c115c14f..ec24e327bd1 100644 --- a/extensions/git/src/commands.ts +++ b/extensions/git/src/commands.ts @@ -1071,10 +1071,13 @@ export class CommandCenter { } if ( + ( // no changes (noStagedChanges && noUnstagedChanges) // or no staged changes and not `all` || (!opts.all && noStagedChanges) + ) + && !opts.empty ) { window.showInformationMessage(localize('no changes', "There are no changes to commit.")); return false; @@ -1119,6 +1122,11 @@ export class CommandCenter { } } + @command('git.commitEmpty', { repository: true}) + async commit(repository: Repository): Promise { + await this.commitWithAnyInput(repository, { empty: true }); + } + @command('git.commit', { repository: true }) async commit(repository: Repository): Promise { await this.commitWithAnyInput(repository); diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index b3af0698312..a26b44927ac 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -386,6 +386,7 @@ export interface CommitOptions { amend?: boolean; signoff?: boolean; signCommit?: boolean; + empty?: boolean; } export interface GitResourceGroup extends SourceControlResourceGroup { From bf3b6947386244d58b0c5b786801ddecdd708a56 Mon Sep 17 00:00:00 2001 From: Tom Basche Date: Thu, 9 Aug 2018 11:52:33 +1000 Subject: [PATCH 2/2] Add --allow-empty option --- extensions/git/src/git.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/extensions/git/src/git.ts b/extensions/git/src/git.ts index a360264a394..c463c878b4b 100644 --- a/extensions/git/src/git.ts +++ b/extensions/git/src/git.ts @@ -940,6 +940,9 @@ export class Repository { if (opts.signCommit) { args.push('-S'); } + if (opts.empty) { + args.push('--allow-empty'); + } try { await this.run(args, { input: message || '' });