繁体   English   中英

如何使用ssh使用nodegit克隆git存储库

[英]How to clone git repository with nodegit using ssh

我正在尝试使用库nodegit(版本0.2.4)和ssh从node.js中的teamforge服务器克隆git存储库。 我们的服务器请求用户进行身份验证,当我尝试仅使用克隆方法而不传递选项时,我收到错误:“回调无法初始化SSH凭据”。

我在private.key和public.key文件中有私钥和公钥。 它们位于我在web风暴中设置为工作目录的目录中,因此位置应该不是问题。

没找到示例怎么做(也许我错过了),但是下面的代码是我最接近的:

'use strict';

var nodegit = require("nodegit"),
Clone = nodegit.Clone,
cred = nodegit.Cred;

var options = {
    remoteCallbacks: {
        credentials: function () {
            return cred.sshKeyNew('user', 'public.key', 'private.key', '');
        }
    }
};

Clone.clone("ssh://user@teamforgeserver.net/reponame", "localTmp", options)
  .then(function(repo) {
        var r = repo;
    },
    function(err){
        var e = err;
    }
);

我收到这个错误:

TypeError: Object #<Object> has no method 'isFulfilled' at value
(c:\...\proj\node_modules\nodegit\node_modules\nodegit-promise\lib\core.js:36:15)

您是否暗示可能出现的问题或一般如何做?

这是创建新ssh密钥的错误。 我在这里创建了一个问题来跟踪它。

与此同时,如果您正在运行SSH代理,则可以从中获取凭据。

'use strict';

var nodegit = require("nodegit"),
Clone = nodegit.Clone,
cred = nodegit.Cred;

var options = {
    fetchOpts: {
        remoteCallbacks: {
            credentials: function (url, userName) {
                // this is changed from sshKeyNew to sshKeyFromAgent
                return cred.sshKeyFromAgent(userName);
            }
        }
    }
};

Clone.clone("ssh://user@teamforgeserver.net/reponame", "localTmp", options)
  .then(function(repo) {
        var r = repo;
    },
    function(err){
        var e = err;
    }
);

这在v0.2.4中对我有用。 如果您需要更多实时支持,请随时在我们的gitter频道与我们聊天。

更新:我刚刚在Pull Request#334上添加了一个修复程序。 测试通过后我将把它放在master上,然后问题中的代码应该可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM