Fixes #111909 - adds user agent to push

This commit is contained in:
Eric Amodio 2020-12-10 17:02:36 -05:00
parent 92adef0bac
commit 6424b09b2c
2 changed files with 18 additions and 4 deletions

View file

@ -311,6 +311,7 @@ export class GitError {
export interface IGitOptions {
gitPath: string;
userAgent: string;
version: string;
env?: any;
}
@ -362,6 +363,8 @@ export interface ICloneOptions {
export class Git {
readonly path: string;
readonly userAgent: string;
readonly version: string;
private env: any;
private _onOutput = new EventEmitter();
@ -369,6 +372,8 @@ export class Git {
constructor(options: IGitOptions) {
this.path = options.gitPath;
this.version = options.version;
this.userAgent = options.userAgent;
this.env = options.env || {};
}
@ -1689,6 +1694,8 @@ export class Repository {
args.push(name);
}
args.splice(0, 0, '-c', `http.userAgent="${this.git.userAgent}"`);
try {
await this.run(args);
} catch (err) {

View file

@ -6,7 +6,7 @@
import * as nls from 'vscode-nls';
const localize = nls.loadMessageBundle();
import { ExtensionContext, workspace, window, Disposable, commands, Uri, OutputChannel, WorkspaceFolder } from 'vscode';
import { env, ExtensionContext, workspace, window, Disposable, commands, Uri, OutputChannel, version as vscodeVersion, WorkspaceFolder } from 'vscode';
import { findGit, Git, IGit } from './git';
import { Model } from './model';
import { CommandCenter } from './commands';
@ -20,6 +20,7 @@ import { GitProtocolHandler } from './protocolHandler';
import { GitExtensionImpl } from './api/extension';
import * as path from 'path';
import * as fs from 'fs';
import * as os from 'os';
import { GitTimelineProvider } from './timelineProvider';
import { registerAPICommands } from './api/api1';
import { TerminalEnvironmentManager } from './terminal';
@ -39,11 +40,17 @@ async function createModel(context: ExtensionContext, outputChannel: OutputChann
const askpass = await Askpass.create(outputChannel, context.storagePath);
disposables.push(askpass);
const env = askpass.getEnv();
const terminalEnvironmentManager = new TerminalEnvironmentManager(context, env);
const environment = askpass.getEnv();
const terminalEnvironmentManager = new TerminalEnvironmentManager(context, environment);
disposables.push(terminalEnvironmentManager);
const git = new Git({ gitPath: info.path, version: info.version, env });
const git = new Git({
gitPath: info.path,
userAgent: `git/${info.version} (${(os as any).version?.() ?? os.type()} ${os.release()}; ${os.platform()} ${os.arch()}) vscode/${vscodeVersion} (${env.appName})`,
version: info.version,
env: environment,
});
const model = new Model(git, askpass, context.globalState, outputChannel);
disposables.push(model);