2015-10-12 59 views
0

我想使用nodegit(一个npm包)克隆私有存储库。我跟着a guides for cloning private repository和设置选项克隆作如下,nodegit:使用GitHub API令牌克隆私有存储库令牌不起作用

cloneOptions: 
    remoteCallbacks: 
    certificateCheck:()-> return 1 
    credentials:()-> 
     return NodeGit.Cred.userpassPlaintextNew(GITHUB_TOKEN, "x-oauth-basic") 

,但我得到一个错误的说法,"authentication required but no callback set"。于是我查了一些nodegit相关的源代码,并设置cloneOptions如下,

cloneOptions = 
    fetchOpts: 
    callbacks: 
     certificateCheck:()-> return 1 # For OS X issue with GitHub certificate 
     credentials:()-> 
     cred = NodeGit.Cred.userpassPlaintextNew(GITHUB_TOKEN, "x-auth-basic") 
     return cred 

这段代码的行为是有些奇怪,因为它似乎克隆库,但cloneOpts.fetchOpts.callbacks.credential()反复调用,程序不停止运行。

如果我使用用户名和密码作为git.Cred.userpassPlaintextNew的参数,则仅调用credentials()一次(这是预期行为)并且存储库被克隆。

任何人都可以给我一些关于我的代码有什么问题的提示吗?

回答

0

与远程托管服务通话时,错误凭证将导致nodegit重新尝试请求。取决于您是在Windows还是Mac上,请求将无限期地重试,或者重试5次。

所以我猜你的OAuth证书是不正确的,nodegit连续重试请求。