nodegit:使用GitHub API令牌克隆私有存储库不起作用

时间:2015-10-12 08:20:28

标签: node.js coffeescript nodegit

我想使用nodegit(一个npm包)克隆一个私有存储库。我跟着a guides for cloning private repository并将克隆选项设置为fllows,

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()只被调用一次(这是预期的行为)并且克隆了存储库。

有人能给我一些关于我的代码有什么问题的提示吗?

1 个答案:

答案 0 :(得分:0)

与远程托管服务交谈时,错误的凭据将导致nodegit重新尝试您的请求。根据您是在Windows或Mac上,请求将无限期重试,否则将重试5次。

所以我猜你的OAuth凭证不正确,而且nodegit正在不断重试请求。