2016-07-12 5 views
3

私は、フォルダ内のgitリポジトリを解析する小さなアプリケーションを書いています。私はlibgit2に基づいてrepoを解析するためにnodegitを使用しています。すべてのブランチでnodegitをコミットする

どうすればを得ることができますか?は、nodegitを使ってレポのすべてのブランチからコミットしますか?

var git = require('nodegit'); 
var fs = require('fs'); 
var path = require('path'); 

var getDirectories = function(srcpath) { 
    return fs.readdirSync(srcpath).filter(function(file) { 
     return fs.statSync(path.join(srcpath, file)).isDirectory(); 
    }); 
} 

var getData = function(srcDir) { 

    var repos = getDirectories(srcDir); 
    var globalCommits = []; 

    var promises = repos.map(repoName => { 
     return git.Repository.open(path.join(srcDir, repoName)).then(function(repo) { 
      var walker = git.Revwalk.create(repo); 
      walker.pushHead(); 
      return walker.getCommitsUntil(c => true).then(function (commits) { 
       var cmts = commits.map(x => ({ 
        sha: x.sha(), 
        msg: x.message().split('\n')[0], 
        date: x.date(), 
        author: x.author(), 
        repo: repoName 
       })); 
       globalCommits = globalCommits.concat(cmts); 
      }); 
     }); 
    }); 

    return Promise.all(promises).then(function() { 
     return Promise.resolve(globalCommits); 
    }); 

} 

module.exports = { 
    getData: getData 
}; 

答えて

0

あなたはこれを変更する必要があります:

walker.pushHead(); 

へ:

walker.pushGlob('refs/heads/*'); 
ここ

は私の現在のコードです
関連する問題