2016-07-12 3 views
3

Я пишу небольшое приложение, которое анализирует репозитории git внутри папки. Я использую nodegit для анализа репо, основанного на libgit2.Получение всех фиксаций на всех ветвях с 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/*');