const git = require('nodegit') const fs = require('fs-extra') const { URL } = require('url') const REPO_URL = 'git@github.com:org/path.git' const CLONE_DIR = '/tmp/private-repo-clone-test' ;(async () => { await fs.emptyDir(CLONE_DIR) let authAttempted = false await git.Clone.clone(REPO_URL, CLONE_DIR, { fetchOpts: { callbacks: { certificateCheck: () => 1, credentials: (url, username) => { if (authAttempted) return git.Cred.defaultNew() authAttempted = true if (url.startsWith('https://') && url.includes('@')) { url = new URL(url) return git.Cred.userpassPlaintextNew(url.username, url.password) } else { return git.Cred.sshKeyFromAgent(username) } } }, }, }) })()