2015-08-10 1 views
1

Я построил эту функцию в 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». Они используют обещания в качестве обработчика обратного вызова.

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

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

+0

Я не вижу, что вы ловите «ошибку» или пустой ответ от 'getMasterCommit'. Вы должны сделать эту проверку, и я предполагаю, что вы продолжаете 'callbackGitCommitHistory (ошибка)' – AhmadAssaf

ответ

1

Related issue на GitHub репо.

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