2016-07-12 15 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/*'); 
다음

내 현재 코드입니다