2017-12-07 9 views
0

nodegitを使用してリポジトリをクローンしてgetHeadCommit()を呼び出した後、Nodeプロセスはディレクトリを保持します。これにより、コード(fs-extra remove) 。nodegit:getHeadCommit()はディレクトリ(libgit2)を保持します

console.log((async(): Promise<void> => { 
    const tempDirectory: string = path.join(process.cwd(), '.tmp'); 

    console.log('clone'); 
    const repository: nodegit.Repository = await nodegit.Clone.clone(
     'ssh://[email protected]***.git', 
     tempDirectory, 
     { 
      checkoutBranch: 'master', 
      fetchOpts: { 
       callbacks: { 
        certificateCheck:(): number => 1, 
        credentials: (url: string, userName: string): nodegit.Cred => 
         nodegit.Cred.sshKeyNew(
          userName, 
          path.join(os.homedir(), '.ssh', 'id_rsa.pub'), 
          path.join(os.homedir(), '.ssh', 'id_rsa'), 
          '' 
         ) 
       } 
      } 
     } 
    ); 

    console.log('get head commit'); 
    const commit: nodegit.Commit = await repository.getHeadCommit(); 

    console.log('remove'); 
    await fse.remove(tempDirectory); // Here Node hangs 

    console.log('end'); 
})()); 

エラーメッセージ:

Error: EBUSY: resource busy or locked, unlink '***\.tmp\.git\objects\pack\pack-27924883cff8a0039ced57d07bad35459885ff9d.pack' 

は私のコードに誤りがありますか?またはrepository.getHeadCommit()を使用した後にリポジトリディレクトリを解放する方法がnodegitにありますか?

答えて

0

おっと!私はfreeメソッドが欠けていました。問題を修正しました。

関連する問題