From 5ca4bab8fc017ea23914ee1fd39cb1ee9655a1a5 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Fri, 10 Nov 2017 10:05:01 +0100 Subject: [PATCH] use -z --stdin when running check-ignore, qualified guess for #37857 --- extensions/git/src/repository.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index 71fe3eeecab..e58cd47a39f 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -756,15 +756,17 @@ export class Repository implements Disposable { return Promise.resolve(new Set()); } - const child = this.repository.stream(['check-ignore', ...filePaths]); + // https://git-scm.com/docs/git-check-ignore#git-check-ignore--z + const child = this.repository.stream(['check-ignore', '-z', '--stdin'], { stdio: [null, null, null] }); + child.stdin.end(filePaths.join('\0'), 'utf8'); const onExit = (exitCode: number) => { if (exitCode === 1) { // nothing ignored resolve(new Set()); } else if (exitCode === 0) { - // each line is something ignored - resolve(new Set(data.split('\n'))); + // paths are separated by the null-character + resolve(new Set(data.split('\0'))); } else { reject(new GitError({ stdout: data, stderr, exitCode })); } -- GitLab