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
};