@@ -170,8 +170,16 @@ export class DataSource {
170170
171171 public async getCommitFile ( commitHash : string , filePath : string ) {
172172 return new Promise < string > ( ( resolve ) => {
173- cp . exec ( 'git show "' + commitHash + '":"' + filePath + '"' , { cwd : this . workspaceDir } , ( err , stdout ) => {
174- resolve ( ! err ? stdout : '' ) ;
173+ let args = [ 'show' , commitHash + ':' + filePath ] , stdout = '' , err = false ;
174+ const cmd = cp . spawn ( 'git' , args , { cwd : this . workspaceDir } ) ;
175+ cmd . stdout . on ( 'data' , ( d ) => { stdout += d ; } ) ;
176+ cmd . on ( 'error' , ( ) => {
177+ resolve ( '' ) ;
178+ err = true ;
179+ } ) ;
180+ cmd . on ( 'exit' , ( code ) => {
181+ if ( err ) return ;
182+ resolve ( code === 0 ? stdout : '' ) ;
175183 } ) ;
176184 } ) ;
177185 }
@@ -248,8 +256,23 @@ export class DataSource {
248256
249257 private async getGitLog ( branch : string , num : number , showRemoteBranches : boolean ) {
250258 return new Promise < GitCommit [ ] > ( ( resolve ) => {
251- cp . exec ( 'git log ' + ( branch !== '' ? escapeRefName ( branch ) : '--branches' + ( showRemoteBranches ? ' --remotes' : '' ) ) + ' --max-count=' + num + ' --format="' + gitLogFormat + '"' , { cwd : this . workspaceDir } , ( err , stdout ) => {
252- if ( ! err ) {
259+ let args = [ 'log' , '--max-count=' + num , '--format=' + gitLogFormat ] , stdout = '' , err = false ;
260+ if ( branch !== '' ) {
261+ args . push ( escapeRefName ( branch ) ) ;
262+ } else {
263+ args . push ( '--branches' ) ;
264+ if ( showRemoteBranches ) args . push ( '--remotes' ) ;
265+ }
266+
267+ const cmd = cp . spawn ( 'git' , args , { cwd : this . workspaceDir } ) ;
268+ cmd . stdout . on ( 'data' , ( d ) => { stdout += d ; } ) ;
269+ cmd . on ( 'error' , ( ) => {
270+ resolve ( [ ] ) ;
271+ err = true ;
272+ } ) ;
273+ cmd . on ( 'exit' , ( code ) => {
274+ if ( err ) return ;
275+ if ( code === 0 ) {
253276 let lines = stdout . split ( eolRegex ) ;
254277 let gitCommits : GitCommit [ ] = [ ] ;
255278 for ( let i = 0 ; i < lines . length - 1 ; i ++ ) {
0 commit comments