我正在使用名为GitNode的Node.JS库。我不认为它很重要,但基本上它是Node.JS中git命令的API。
我有一段代码,其目的是在现有存储库中创建一个新分支。运行代码后,我知道它没有创建存储库,我也知道它无法正常工作。
这是我的全部代码:
var Git = require("nodegit");
var getMostRecentCommit = function(repository) {
return repository.getBranchCommit("master");
};
var makeBranch = function(respository) {
console.log("in here1")
repository.createBranch("tester", getMostRecentCommit(repository)).then(
function(reference) {
console.log("good")}, // if it works
function(reasonForFailure) {
console.log("bad_error")}) // createBranch has error case
.catch(function(reasonForFailure) {
console.log("bad_catch")}); // if the error function fails, I also have a catch statement
};
Git.Repository.open("../test_repo")
.then(makeBranch);
为了找到我的错误,我已经发布了许多捕获语句。但我似乎无法输出任何东西。短语" Bad_error"或" Bad_catch"输出。
我知道代码已损坏且createBranch无法正常工作。我测试了一些应该在我调用repository.createBranch
之后运行的代码,但是它永远不会在调用createBranch之前的任何地方运行。这表明CreateBranch是问题所在。
那为什么我的错误没有被抓住?
修改
我修复了代码并输出了错误(请参阅下面的答案),但我仍然想知道为什么我的其他异常/错误陈述无效。
答案 0 :(得分:0)
所以,由于here
,我想出了部分问题我只需要在我的Repository.open()函数中添加一个catch语句。
var makeBranch = function(respository) {
console.log("in here1")
repository.createBranch("tester", getMostRecentCommit(repository)).then(
function(reference) {
console.log("good")},
function(reasonForFailure) {
console.log("bad_error")})
.catch(function(reasonForFailure) {
console.log("bad_catch")});
};
Git.Repository.open("../test_repo")
.then(makeBranch).catch(
function(reasonForFailure) {console.log("bad")}); // This Works
如果有人好奇,结果我传入变量respository
而不是repository
:p
这将输出bad
。这很好。我仍然不完全为什么这样做,但我的另一个声明并没有。我还在寻找一个好的答案或解释。