Как использовать nodegit с ssh ключами

Использование пакета nodegit для работы с удаленным репозиторием с доступом по SSH ключам

При разработке системы бекапов конфигураций сетевого оборудования на node js потребовалось использовать git для просмотра изменений в файлах. Git репозиторий, где лежат конфиги, приватный, доступ осуществляется по SSH ключам.

Nodegit - это node js пакет, который использует Си библиотеку libgit2. Пакет позволяет работать с удаленными и локальными репозиториями. Можно делать все тоже самое, что командой git. Создавать ветки, коммиты, делать git pull, push, checkout. В общем, все то, что умеет консольная команда git.

Пример кода:

const Git = require('nodegit'); // v0.26.4

const cloneOptions = {};
cloneOptions.fetchOpts = {
  callbacks: {
    certificateCheck: (e) => 0,
    credentials: (url, userName) => {
      return Git.Cred.sshKeyNew(
        userName,
        '/home/user1/.ssh/id_rsa.pub', // public key
        '/home/user1/.ssh/id_rsa', // private key
        '' // passphrase
      );
    }
  }
}

Git.Clone.clone("git@github.com:repo/repo.git", "./repo", cloneOptions)
.then(repository => {
  return repository.getBranchCommit("master");
})
.then(commit => {
  return commit.message();
})
.then(message => console.log("Message:", message))
.catch(err => {
  console.error(err.message);
});