From 6424b09b2c85b924ab0207e546831c9082b40e16 Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Thu, 10 Dec 2020 17:02:36 -0500 Subject: [PATCH] Fixes #111909 - adds user agent to push --- extensions/git/src/git.ts | 7 +++++++ extensions/git/src/main.ts | 15 +++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/extensions/git/src/git.ts b/extensions/git/src/git.ts index af536fe6c53..34eb1ab677a 100644 --- a/extensions/git/src/git.ts +++ b/extensions/git/src/git.ts @@ -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) { diff --git a/extensions/git/src/main.ts b/extensions/git/src/main.ts index b9b525203db..d5c81c8891f 100644 --- a/extensions/git/src/main.ts +++ b/extensions/git/src/main.ts @@ -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); -- GitLab