-
Notifications
You must be signed in to change notification settings - Fork 697
Closed
Description
When I compare the history returned by fileHistoryWalk to git log console output, there are a lot of commits missing from the fileHistoryWalk commits.
For example, using the atom editor repo and source:
cd /tmp
git clone https://github.com/atom/atom.git
cd atom
git log src/text-editor.coffee...then, using a slightly modified examples/walk-history-for-file.js (see below) and compare. The output from the example says there are 129 commits to text-editor.coffee but git log src/text-editor.coffee shows 481 commits to that file.
modified example (changed repo, test tile path and added count output:
var nodegit = require("../"),
path = require("path"),
historyFile = "src/text-editor.coffee",
walker,
historyCommits = [],
commit,
repo;
// This code walks the history of the master branch and prints results
// that look very similar to calling `git log` from the command line
function compileHistory(resultingArrayOfCommits) {
var lastSha;
if (historyCommits.length > 0) {
lastSha = historyCommits[historyCommits.length - 1].commit.sha();
if (
resultingArrayOfCommits.length == 1 &&
resultingArrayOfCommits[0].commit.sha() == lastSha
) {
return;
}
}
resultingArrayOfCommits.forEach(function(entry) {
historyCommits.push(entry);
});
lastSha = historyCommits[historyCommits.length - 1].commit.sha();
walker = repo.createRevWalk();
walker.push(lastSha);
walker.sorting(nodegit.Revwalk.SORT.TIME);
return walker.fileHistoryWalk(historyFile, 500)
.then(compileHistory);
}
//nodegit.Repository.open(path.resolve(__dirname, "../.git"))
nodegit.Repository.open("/tmp/atom/.git")
.then(function(r) {
repo = r;
return repo.getMasterCommit();
})
.then(function(firstCommitOnMaster){
// History returns an event.
walker = repo.createRevWalk();
walker.push(firstCommitOnMaster.sha());
walker.sorting(nodegit.Revwalk.SORT.Time);
return walker.fileHistoryWalk(historyFile, 500);
})
.then(compileHistory)
.then(function() {
historyCommits.forEach(function(entry) {
commit = entry.commit;
console.log("commit " + commit.sha());
console.log("Author:", commit.author().name() +
" <" + commit.author().email() + ">");
console.log("Date:", commit.date());
console.log("\n " + commit.message());
});
console.log("\n\n" + historyCommits.length + " total commits");
})
.done();shaunc, 6174, gins3000 and kumarvaradarajulu
Metadata
Metadata
Assignees
Labels
No labels