diff --git a/extensions/git/src/git.ts b/extensions/git/src/git.ts index fa80f263a6e..4aa21475b3b 100644 --- a/extensions/git/src/git.ts +++ b/extensions/git/src/git.ts @@ -10,7 +10,6 @@ import * as cp from 'child_process'; import { fileURLToPath } from 'url'; import which from 'which'; import { EventEmitter } from 'events'; -import * as iconv from '@vscode/iconv-lite-umd'; import * as filetype from 'file-type'; import { assign, groupBy, IDisposable, toDisposable, dispose, mkdirp, readBytes, detectUnicodeEncoding, Encoding, onceEvent, splitInChunks, Limiter, Versions, isWindows, pathEquals, isMacintosh, isDescendant, relativePath } from './util'; import { CancellationError, CancellationToken, ConfigurationChangeEvent, LogOutputChannel, Progress, Uri, workspace } from 'vscode'; @@ -1739,10 +1738,10 @@ export class Repository { await this.exec(args); } - async stage(path: string, data: string, encoding: string): Promise { + async stage(path: string, data: Uint8Array): Promise { const relativePath = sanitizeRelativePath(this.repositoryRoot, path); const child = this.stream(['hash-object', '--stdin', '-w', '--path', relativePath], { stdio: [null, null, null] }); - child.stdin!.end(iconv.encode(data, encoding)); + child.stdin!.end(data); const { exitCode, stdout } = await exec(child); const hash = stdout.toString('utf8'); diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index ae5c65040b9..cf2723f1d60 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -1222,7 +1222,8 @@ export class Repository implements Disposable { async stage(resource: Uri, contents: string, encoding: string): Promise { await this.run(Operation.Stage, async () => { - await this.repository.stage(resource.fsPath, contents, encoding); + const data = await workspace.encode(contents, resource, { encoding }); + await this.repository.stage(resource.fsPath, data); this._onDidChangeOriginalResource.fire(resource); this.closeDiffEditors([], [...resource.fsPath]);