Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/microsoft/vscode.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLadislau Szomoru <3372902+lszomoru@users.noreply.github.com>2022-05-27 00:06:23 +0300
committerGitHub <noreply@github.com>2022-05-27 00:06:23 +0300
commit9bfd3c1d7242e31b1ef7d44a025b5f294e87d4c3 (patch)
tree0d0f87be2ef0952f4534f18d46eb62e062834c68 /extensions
parent33a8212fd2d00173b8d90f1273d2fde26ecf8c45 (diff)
Revert "A full editor can be used as git commit message editor (#95266)" (#150487)
This reverts commit 97f8e66d74b7b2d9cefbcb8db8589aa55c0e9cb9.
Diffstat (limited to 'extensions')
-rw-r--r--extensions/git/extension.webpack.config.js3
-rw-r--r--extensions/git/package.json62
-rw-r--r--extensions/git/package.nls.json2
-rw-r--r--extensions/git/src/api/git.d.ts3
-rw-r--r--extensions/git/src/askpass.ts14
-rw-r--r--extensions/git/src/commands.ts39
-rw-r--r--extensions/git/src/git.ts34
-rw-r--r--extensions/git/src/gitEditor/gitEditor.ts64
-rw-r--r--extensions/git/src/gitEditor/main.ts21
-rw-r--r--extensions/git/src/gitEditor/scripts/git-editor-empty.bat1
-rwxr-xr-xextensions/git/src/gitEditor/scripts/git-editor-empty.sh1
-rw-r--r--extensions/git/src/gitEditor/scripts/git-editor.bat4
-rwxr-xr-xextensions/git/src/gitEditor/scripts/git-editor.sh4
-rw-r--r--extensions/git/src/main.ts17
-rw-r--r--extensions/git/src/repository.ts7
-rw-r--r--extensions/git/tsconfig.json2
16 files changed, 44 insertions, 234 deletions
diff --git a/extensions/git/extension.webpack.config.js b/extensions/git/extension.webpack.config.js
index ee6203af47e..5efa2052e88 100644
--- a/extensions/git/extension.webpack.config.js
+++ b/extensions/git/extension.webpack.config.js
@@ -13,7 +13,6 @@ module.exports = withDefaults({
context: __dirname,
entry: {
main: './src/main.ts',
- ['askpass-main']: './src/askpass-main.ts',
- ['git-editor-main']: './src/gitEditor/main.ts'
+ ['askpass-main']: './src/askpass-main.ts'
}
});
diff --git a/extensions/git/package.json b/extensions/git/package.json
index 0ca505b8331..b5ad659a010 100644
--- a/extensions/git/package.json
+++ b/extensions/git/package.json
@@ -13,9 +13,7 @@
"diffCommand",
"contribMergeEditorToolbar",
"contribViewsWelcome",
- "resolvers",
"scmActionButton",
- "scmInput",
"scmSelectedProvider",
"scmValidation",
"timeline"
@@ -215,99 +213,83 @@
"command": "git.commit",
"title": "%command.commit%",
"category": "Git",
- "icon": "$(check)",
- "enablement": "!commitInProgress"
+ "icon": "$(check)"
},
{
"command": "git.commitStaged",
"title": "%command.commitStaged%",
- "category": "Git",
- "enablement": "!commitInProgress"
+ "category": "Git"
},
{
"command": "git.commitEmpty",
"title": "%command.commitEmpty%",
- "category": "Git",
- "enablement": "!commitInProgress"
+ "category": "Git"
},
{
"command": "git.commitStagedSigned",
"title": "%command.commitStagedSigned%",
- "category": "Git",
- "enablement": "!commitInProgress"
+ "category": "Git"
},
{
"command": "git.commitStagedAmend",
"title": "%command.commitStagedAmend%",
- "category": "Git",
- "enablement": "!commitInProgress"
+ "category": "Git"
},
{
"command": "git.commitAll",
"title": "%command.commitAll%",
- "category": "Git",
- "enablement": "!commitInProgress"
+ "category": "Git"
},
{
"command": "git.commitAllSigned",
"title": "%command.commitAllSigned%",
- "category": "Git",
- "enablement": "!commitInProgress"
+ "category": "Git"
},
{
"command": "git.commitAllAmend",
"title": "%command.commitAllAmend%",
- "category": "Git",
- "enablement": "!commitInProgress"
+ "category": "Git"
},
{
"command": "git.commitNoVerify",
"title": "%command.commitNoVerify%",
"category": "Git",
- "icon": "$(check)",
- "enablement": "!commitInProgress"
+ "icon": "$(check)"
},
{
"command": "git.commitStagedNoVerify",
"title": "%command.commitStagedNoVerify%",
- "category": "Git",
- "enablement": "!commitInProgress"
+ "category": "Git"
},
{
"command": "git.commitEmptyNoVerify",
"title": "%command.commitEmptyNoVerify%",
- "category": "Git",
- "enablement": "!commitInProgress"
+ "category": "Git"
},
{
"command": "git.commitStagedSignedNoVerify",
"title": "%command.commitStagedSignedNoVerify%",
- "category": "Git",
- "enablement": "!commitInProgress"
+ "category": "Git"
},
{
"command": "git.commitStagedAmendNoVerify",
"title": "%command.commitStagedAmendNoVerify%",
- "category": "Git",
- "enablement": "!commitInProgress"
+ "category": "Git"
},
{
"command": "git.commitAllNoVerify",
"title": "%command.commitAllNoVerify%",
- "category": "Git",
- "enablement": "!commitInProgress"
+ "category": "Git"
},
{
"command": "git.commitAllSignedNoVerify",
"title": "%command.commitAllSignedNoVerify%",
- "category": "Git",
- "enablement": "!commitInProgress"
+ "category": "Git"
},
{
"command": "git.commitAllAmendNoVerify",
"title": "%command.commitAllAmendNoVerify%",
- "category": "Git",
- "enablement": "!commitInProgress"
+ "category": "Git"
},
{
"command": "git.restoreCommitTemplate",
@@ -2017,18 +1999,6 @@
"scope": "machine",
"description": "%config.defaultCloneDirectory%"
},
- "git.useEditorAsCommitInput": {
- "type": "boolean",
- "scope": "resource",
- "description": "%config.useEditorAsCommitInput%",
- "default": false
- },
- "git.verboseCommit": {
- "type": "boolean",
- "scope": "resource",
- "markdownDescription": "%config.verboseCommit%",
- "default": false
- },
"git.enableSmartCommit": {
"type": "boolean",
"scope": "resource",
diff --git a/extensions/git/package.nls.json b/extensions/git/package.nls.json
index 8628ed655ca..e1a8c6a9faf 100644
--- a/extensions/git/package.nls.json
+++ b/extensions/git/package.nls.json
@@ -136,8 +136,6 @@
"config.ignoreLimitWarning": "Ignores the warning when there are too many changes in a repository.",
"config.ignoreRebaseWarning": "Ignores the warning when it looks like the branch might have been rebased when pulling.",
"config.defaultCloneDirectory": "The default location to clone a git repository.",
- "config.useEditorAsCommitInput": "Use an editor to author the commit message.",
- "config.verboseCommit": "Enable verbose output when `#git.useEditorAsCommitInput#` is enabled.",
"config.enableSmartCommit": "Commit all changes when there are no staged changes.",
"config.smartCommitChanges": "Control which changes are automatically staged by Smart Commit.",
"config.smartCommitChanges.all": "Automatically stage all changes.",
diff --git a/extensions/git/src/api/git.d.ts b/extensions/git/src/api/git.d.ts
index e552f03f25d..7ba58a0e607 100644
--- a/extensions/git/src/api/git.d.ts
+++ b/extensions/git/src/api/git.d.ts
@@ -137,8 +137,6 @@ export interface CommitOptions {
empty?: boolean;
noVerify?: boolean;
requireUserConfig?: boolean;
- useEditor?: boolean;
- verbose?: boolean;
}
export interface FetchOptions {
@@ -338,5 +336,4 @@ export const enum GitErrorCodes {
PatchDoesNotApply = 'PatchDoesNotApply',
NoPathFound = 'NoPathFound',
UnknownPath = 'UnknownPath',
- EmptyCommitMessage = 'EmptyCommitMessage'
}
diff --git a/extensions/git/src/askpass.ts b/extensions/git/src/askpass.ts
index ffbd7e48a0e..81895a0e0d6 100644
--- a/extensions/git/src/askpass.ts
+++ b/extensions/git/src/askpass.ts
@@ -6,8 +6,9 @@
import { window, InputBoxOptions, Uri, Disposable, workspace } from 'vscode';
import { IDisposable, EmptyDisposable, toDisposable } from './util';
import * as path from 'path';
-import { IIPCHandler, IIPCServer } from './ipc/ipcServer';
+import { IIPCHandler, IIPCServer, createIPCServer } from './ipc/ipcServer';
import { CredentialsProvider, Credentials } from './api/git';
+import { OutputChannelLogger } from './log';
export class Askpass implements IIPCHandler {
@@ -15,7 +16,16 @@ export class Askpass implements IIPCHandler {
private cache = new Map<string, Credentials>();
private credentialsProviders = new Set<CredentialsProvider>();
- constructor(private ipc?: IIPCServer) {
+ static async create(outputChannelLogger: OutputChannelLogger, context?: string): Promise<Askpass> {
+ try {
+ return new Askpass(await createIPCServer(context));
+ } catch (err) {
+ outputChannelLogger.logError(`Failed to create git askpass IPC: ${err}`);
+ return new Askpass();
+ }
+ }
+
+ private constructor(private ipc?: IIPCServer) {
if (ipc) {
this.disposable = ipc.registerHandler('askpass', this);
}
diff --git a/extensions/git/src/commands.ts b/extensions/git/src/commands.ts
index 4ea02b89155..e8cd512b648 100644
--- a/extensions/git/src/commands.ts
+++ b/extensions/git/src/commands.ts
@@ -1516,14 +1516,6 @@ export class CommandCenter {
opts.signoff = true;
}
- if (config.get<boolean>('useEditorAsCommitInput')) {
- opts.useEditor = true;
-
- if (config.get<boolean>('verboseCommit')) {
- opts.verbose = true;
- }
- }
-
const smartCommitChanges = config.get<'all' | 'tracked'>('smartCommitChanges');
if (
@@ -1571,7 +1563,7 @@ export class CommandCenter {
let message = await getCommitMessage();
- if (!message && !opts.amend && !opts.useEditor) {
+ if (!message && !opts.amend) {
return false;
}
@@ -1631,13 +1623,10 @@ export class CommandCenter {
private async commitWithAnyInput(repository: Repository, opts?: CommitOptions): Promise<void> {
const message = repository.inputBox.value;
- const root = Uri.file(repository.root);
- const config = workspace.getConfiguration('git', root);
-
const getCommitMessage = async () => {
let _message: string | undefined = message;
- if (!_message && !config.get<boolean>('useEditorAsCommitInput')) {
+ if (!_message) {
let value: string | undefined = undefined;
if (opts && opts.amend && repository.HEAD && repository.HEAD.commit) {
@@ -3021,7 +3010,7 @@ export class CommandCenter {
};
let message: string;
- let type: 'error' | 'warning' | 'information' = 'error';
+ let type: 'error' | 'warning' = 'error';
const choices = new Map<string, () => void>();
const openOutputChannelChoice = localize('open git log', "Open Git Log");
@@ -3084,12 +3073,6 @@ export class CommandCenter {
message = localize('missing user info', "Make sure you configure your 'user.name' and 'user.email' in git.");
choices.set(localize('learn more', "Learn More"), () => commands.executeCommand('vscode.open', Uri.parse('https://aka.ms/vscode-setup-git')));
break;
- case GitErrorCodes.EmptyCommitMessage:
- message = localize('empty commit', "Commit operation was cancelled due to empty commit message.");
- choices.clear();
- type = 'information';
- options.modal = false;
- break;
default: {
const hint = (err.stderr || err.message || String(err))
.replace(/^error: /mi, '')
@@ -3111,20 +3094,10 @@ export class CommandCenter {
return;
}
- let result: string | undefined;
const allChoices = Array.from(choices.keys());
-
- switch (type) {
- case 'error':
- result = await window.showErrorMessage(message, options, ...allChoices);
- break;
- case 'warning':
- result = await window.showWarningMessage(message, options, ...allChoices);
- break;
- case 'information':
- result = await window.showInformationMessage(message, options, ...allChoices);
- break;
- }
+ const result = type === 'error'
+ ? await window.showErrorMessage(message, options, ...allChoices)
+ : await window.showWarningMessage(message, options, ...allChoices);
if (result) {
const resultFn = choices.get(result);
diff --git a/extensions/git/src/git.ts b/extensions/git/src/git.ts
index f87cefbd653..a511db761a6 100644
--- a/extensions/git/src/git.ts
+++ b/extensions/git/src/git.ts
@@ -1400,37 +1400,20 @@ export class Repository {
}
async commit(message: string | undefined, opts: CommitOptions = Object.create(null)): Promise<void> {
- const args = ['commit', '--quiet'];
- const options: SpawnOptions = {};
-
- if (message) {
- options.input = message;
- args.push('--file', '-');
- }
-
- if (opts.verbose) {
- args.push('--verbose');
- }
+ const args = ['commit', '--quiet', '--allow-empty-message'];
if (opts.all) {
args.push('--all');
}
- if (opts.amend) {
+ if (opts.amend && message) {
args.push('--amend');
}
- if (!opts.useEditor) {
- if (!message) {
- if (opts.amend) {
- args.push('--no-edit');
- } else {
- options.input = '';
- args.push('--file', '-');
- }
- }
-
- args.push('--allow-empty-message');
+ if (opts.amend && !message) {
+ args.push('--amend', '--no-edit');
+ } else {
+ args.push('--file', '-');
}
if (opts.signoff) {
@@ -1455,7 +1438,7 @@ export class Repository {
}
try {
- await this.exec(args, options);
+ await this.exec(args, !opts.amend || message ? { input: message || '' } : {});
} catch (commitErr) {
await this.handleCommitError(commitErr);
}
@@ -1479,9 +1462,6 @@ export class Repository {
if (/not possible because you have unmerged files/.test(commitErr.stderr || '')) {
commitErr.gitErrorCode = GitErrorCodes.UnmergedChanges;
throw commitErr;
- } else if (/Aborting commit due to empty commit message/.test(commitErr.stderr || '')) {
- commitErr.gitErrorCode = GitErrorCodes.EmptyCommitMessage;
- throw commitErr;
}
try {
diff --git a/extensions/git/src/gitEditor/gitEditor.ts b/extensions/git/src/gitEditor/gitEditor.ts
deleted file mode 100644
index 34f8ee9f20f..00000000000
--- a/extensions/git/src/gitEditor/gitEditor.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-import * as path from 'path';
-import { TabInputText, Uri, window, workspace } from 'vscode';
-import { IIPCHandler, IIPCServer } from '../ipc/ipcServer';
-import { EmptyDisposable, IDisposable } from '../util';
-
-interface GitEditorRequest {
- commitMessagePath?: string;
-}
-
-export class GitEditor implements IIPCHandler {
-
- private disposable: IDisposable = EmptyDisposable;
-
- constructor(private ipc?: IIPCServer) {
- if (ipc) {
- this.disposable = ipc.registerHandler('git-editor', this);
- }
- }
-
- async handle({ commitMessagePath }: GitEditorRequest): Promise<any> {
- if (commitMessagePath) {
- const uri = Uri.file(commitMessagePath);
- const doc = await workspace.openTextDocument(uri);
- await window.showTextDocument(doc, { preview: false });
-
- return new Promise((c) => {
- const onDidClose = window.tabGroups.onDidChangeTabs(async (tabs) => {
- if (tabs.closed.some(t => t.input instanceof TabInputText && t.input.uri.toString() === uri.toString())) {
- onDidClose.dispose();
- return c(true);
- }
- });
- });
- }
- }
-
- getEnv(): { [key: string]: string } {
- if (!this.ipc) {
- const fileType = process.platform === 'win32' ? 'bat' : 'sh';
- const gitEditor = path.join(__dirname, `scripts/git-editor-empty.${fileType}`);
-
- return {
- GIT_EDITOR: `'${gitEditor}'`
- };
- }
-
- const fileType = process.platform === 'win32' ? 'bat' : 'sh';
- const gitEditor = path.join(__dirname, `scripts/git-editor.${fileType}`);
-
- return {
- GIT_EDITOR: `'${gitEditor}'`,
- VSCODE_GIT_EDITOR_NODE: process.execPath,
- VSCODE_GIT_EDITOR_MAIN: path.join(__dirname, 'main.js')
- };
- }
-
- dispose(): void {
- this.disposable.dispose();
- }
-}
diff --git a/extensions/git/src/gitEditor/main.ts b/extensions/git/src/gitEditor/main.ts
deleted file mode 100644
index 661540e0030..00000000000
--- a/extensions/git/src/gitEditor/main.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
-import { IPCClient } from '../ipc/ipcClient';
-
-function fatal(err: any): void {
- console.error(err);
- process.exit(1);
-}
-
-function main(argv: string[]): void {
- const ipcClient = new IPCClient('git-editor');
- const commitMessagePath = argv[2];
-
- ipcClient.call({ commitMessagePath }).then(() => {
- setTimeout(() => process.exit(0), 0);
- }).catch(err => fatal(err));
-}
-
-main(process.argv);
diff --git a/extensions/git/src/gitEditor/scripts/git-editor-empty.bat b/extensions/git/src/gitEditor/scripts/git-editor-empty.bat
deleted file mode 100644
index 56eeb8a5801..00000000000
--- a/extensions/git/src/gitEditor/scripts/git-editor-empty.bat
+++ /dev/null
@@ -1 +0,0 @@
-@ECHO off
diff --git a/extensions/git/src/gitEditor/scripts/git-editor-empty.sh b/extensions/git/src/gitEditor/scripts/git-editor-empty.sh
deleted file mode 100755
index 1a2485251c3..00000000000
--- a/extensions/git/src/gitEditor/scripts/git-editor-empty.sh
+++ /dev/null
@@ -1 +0,0 @@
-#!/bin/sh
diff --git a/extensions/git/src/gitEditor/scripts/git-editor.bat b/extensions/git/src/gitEditor/scripts/git-editor.bat
deleted file mode 100644
index ce28807cae1..00000000000
--- a/extensions/git/src/gitEditor/scripts/git-editor.bat
+++ /dev/null
@@ -1,4 +0,0 @@
-@ECHO off
-
-set ELECTRON_RUN_AS_NODE=1
-"%VSCODE_GIT_EDITOR_NODE%" "%VSCODE_GIT_EDITOR_MAIN%" %*
diff --git a/extensions/git/src/gitEditor/scripts/git-editor.sh b/extensions/git/src/gitEditor/scripts/git-editor.sh
deleted file mode 100755
index f4ba2e4fd73..00000000000
--- a/extensions/git/src/gitEditor/scripts/git-editor.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-ELECTRON_RUN_AS_NODE="1" \
-"$VSCODE_GIT_EDITOR_NODE" "$VSCODE_GIT_EDITOR_MAIN" $@
diff --git a/extensions/git/src/main.ts b/extensions/git/src/main.ts
index e5d99158a4e..ee60d2cb1b1 100644
--- a/extensions/git/src/main.ts
+++ b/extensions/git/src/main.ts
@@ -25,8 +25,6 @@ import { GitTimelineProvider } from './timelineProvider';
import { registerAPICommands } from './api/api1';
import { TerminalEnvironmentManager } from './terminal';
import { OutputChannelLogger } from './log';
-import { createIPCServer, IIPCServer } from './ipc/ipcServer';
-import { GitEditor } from './gitEditor/gitEditor';
const deactivateTasks: { (): Promise<any> }[] = [];
@@ -62,21 +60,10 @@ async function createModel(context: ExtensionContext, outputChannelLogger: Outpu
return !skip;
});
- let ipc: IIPCServer | undefined = undefined;
-
- try {
- ipc = await createIPCServer(context.storagePath);
- } catch (err) {
- outputChannelLogger.logError(`Failed to create git IPC: ${err}`);
- }
-
- const askpass = new Askpass(ipc);
+ const askpass = await Askpass.create(outputChannelLogger, context.storagePath);
disposables.push(askpass);
- const gitEditor = new GitEditor(ipc);
- disposables.push(gitEditor);
-
- const environment = { ...askpass.getEnv(), ...gitEditor.getEnv() };
+ const environment = askpass.getEnv();
const terminalEnvironmentManager = new TerminalEnvironmentManager(context, environment);
disposables.push(terminalEnvironmentManager);
diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts
index c6fa51b5497..69c184209fa 100644
--- a/extensions/git/src/repository.ts
+++ b/extensions/git/src/repository.ts
@@ -454,13 +454,6 @@ class ProgressManager {
const onDidChange = filterEvent(workspace.onDidChangeConfiguration, e => e.affectsConfiguration('git', Uri.file(this.repository.root)));
onDidChange(_ => this.updateEnablement());
this.updateEnablement();
-
- this.repository.onDidChangeOperations(() => {
- const commitInProgress = this.repository.operations.isRunning(Operation.Commit);
-
- this.repository.sourceControl.inputBox.enabled = !commitInProgress;
- commands.executeCommand('setContext', 'commitInProgress', commitInProgress);
- });
}
private updateEnablement(): void {
diff --git a/extensions/git/tsconfig.json b/extensions/git/tsconfig.json
index 899f8c9c33d..13997275056 100644
--- a/extensions/git/tsconfig.json
+++ b/extensions/git/tsconfig.json
@@ -11,9 +11,7 @@
"src/**/*",
"../../src/vscode-dts/vscode.d.ts",
"../../src/vscode-dts/vscode.proposed.diffCommand.d.ts",
- "../../src/vscode-dts/vscode.proposed.resolvers.d.ts",
"../../src/vscode-dts/vscode.proposed.scmActionButton.d.ts",
- "../../src/vscode-dts/vscode.proposed.scmInput.d.ts",
"../../src/vscode-dts/vscode.proposed.scmSelectedProvider.d.ts",
"../../src/vscode-dts/vscode.proposed.scmValidation.d.ts",
"../../src/vscode-dts/vscode.proposed.tabs.d.ts",