gpt4 book ai didi

git - 使用 nodegit 获取所有分支上的所有提交

转载 作者:太空狗 更新时间:2023-10-29 13:26:15 29 4
gpt4 key购买 nike

我正在编写一个小应用程序来分析文件夹中的 git 存储库。我正在使用 nodegit 来解析基于 libgit2 的 repo。

如何使用 nodegit 获取 repo 中所有分支的所有提交?

这是我当前的代码:

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

最佳答案

你应该改变这个:

walker.pushHead();

到:

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

关于git - 使用 nodegit 获取所有分支上的所有提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38335804/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com