В моей программе я использую nodegit.Я могу вывести список коммитов с помощью nodegit:
var nodegit = require("nodegit");
var path = require("path");
var fs = require("fs");
var shas = [];
var names= [];
var mess= [];
var sums= [];
var time =[];
let promise = new Promise(function(resolve, reject) {
nodegit.Repository.open(path.resolve(__dirname, "repo_dir/.git"))
.then(function(repo) {
return repo.getMasterCommit();
})
.then(function(firstCommitOnMaster){
// History returns an event.
var history = firstCommitOnMaster.history(nodegit.Revwalk.SORT.TIME,nodegit.Revwalk.SORT.REVERSE);
var sh = [];
var t =[];
var m = [];
var names = [];
var s = [];
var nfiles = [];
var numfiles = [];
// History emits "commit" event for each commit in the branch's history
history.on("commit", function(commit) {
t.push([commit.date().getDate(),commit.date().getMonth()+1,commit.date().getFullYear()]);
m.push(commit.message());
sh.push(commit.sha());
names.push(commit.committer().name());
s.push(commit.summary());
if(commit.sha()==firstCommitOnMaster.sha()){
resolve([t,m,sh,names,s,numfiles]);
};
});
history.start();
})
.done();
}).catch(function(e){console.log(e)});
promise.then(result =>{
time=result[0];
mess=result[1];
shas = result[2];
names = result[3];
sums = result[4];
nf = result[5];
let student = {
t: time,
m: mess,
shsh: shas,
n: names,
sum: sums,
numf: nf,
};
let data = JSON.stringify(student, null, 2);
fs.writeFileSync('fileJ.json', data, (err) => {
if (err) throw err;
console.log('Data written to file');
});
}).catch(function(e){console.log(e)});
Но моя проблема заключается в том, чтобы сделать то же самое, но в коммитах перечислены разные коммиты между двумя ветвями с использованием nodegit.
What I 'm найден в основном в GitBash по комендату:
$ git log --left-right --graph --cherry-pick --oneline feature...branch
Мой код должен сравнивать мастер с бранчем, как в этом инструменте на сайте: Инструмент сравнения на сайте
Затем получите все коммиты и сохраненную информацию в JSON, как в коде для мастера.Спасибо всем за любую помощь.