Обработка возвращаемых значений в обещаниях nodejs

Я построил эту функцию в NodeJs,

var Git = require('nodegit');
var fse = require('fs-extra');
var path = require('path');
var fs = require('fs');
var repoPath = 'D:\\sample'

function gitCommitHistory(repoPath, callbackGitCommitHistory) {
try {
    var open = Git.Repository.open;
    var commitList = [];
    open(repoPath)
      .then(function(repo) {              
        return repo.getMasterCommit();
      })
      .then(function(firstCommitOnMaster) {
        var history = firstCommitOnMaster.history();            
        history.on("commit", function(commit) {
            if (commit === 'undefined') {
                callbackGitCommitHistory(null, commitList);
            }
          var author = commit.author();
          commitList.push({commitAuthor:author.name(),commitAuthorEmail:author.email(), 
              commitMessage:commit.message(), commitSha:commit.sha(), commitDate:commit.date()});
        });
        history.on("error", function(err){
            console.log(err)
        })
        history.on("end", function(){               
            callbackGitCommitHistory(null, commitList);
        });
        history.start();
      });   
} catch (error) {
    callbackGitCommitHistory(error);
}

};

Я построил эту функцию с помощью модуля "Nodegit". Они используют обещания в качестве обработчика обратного вызова.

В этой функции я извлекаю все коммиты, выполненные пользователем в репозитории, и отправляю их в качестве ответа на вызывающий веб-сервис.

Функция работает нормально, если есть хотя бы один коммит (то есть) repo.getMasterCommit возвращает историю коммитов. Но если я дам repoPath новому репо с нулевым коммитом, то из этой функции ничего не вернется, поэтому я не могу отправить ответ вызывающему веб-сервису. Пожалуйста, помогите о том, как справиться с этой ситуацией!!!!!!!!

1 ответ

Решение

Связанная проблема на репозитории GitHub.

Это должно быть исправлено в следующем выпуске (0.5) и в настоящее время исправлено в master через 661. Ахмад Ассаф прав, хотя, он отверг цепочку обещаний, так как нет никакого главного коммита.

Другие вопросы по тегам