git push remote ssh с помощью Nodegit, не работает?

Привет я пытаюсь сделать git push origin master Команда с помощью Nodegit, но это приводит к ошибке,

var Git = require('nodegit');
function gitRemoteLookUp(repoPath) {
var open = Git.Repository.open;
var Remote = Git.Remote;    
open(repoPath).then(function(repo){
    return Remote.lookup(repo, "origin");
}).then(function(remote){       
    var ref = "refs/heads/master:remotes/origin/master";                
    var firstPass = true;
    var options = {
      callbacks: {
        credentials: function(url, userName) {
          if (firstPass) {
            firstPass = false;
            if (url.indexOf("https") === -1) {                  
              return Git.Cred.sshKeyFromAgent('XYZ');
            } else {                    
                return Git.Cred.userpassPlaintextNew('XYZ', "XYZ");
            }
          } else {
            return Git.Cred.defaultNew();
          }
        },
        certificateCheck: function() {
          return 1;
        }
      }
    };
    return remote.push(ref, options);
}).catch(function(err){
    console.log(err);
})
}

Я использую наш внутренний ssh-сервер github, который из git Bash, для каждого нажатия запрашивает имя пользователя и пароль.

Поэтому в этом коде я использовал аналогичный пример, упомянутый на сайте github, а также на сайте тестирования.

Просьба помочь по этому!!!!!!

1 ответ

Я нашел ответ на свой вопрос,

Путаница заключается в SSH-сервере и универсальном сервере,

я нашел два удивительных поста в прошлых вопросах ноджит,

var remote;
var repository;
function gitRemoteLookUp(repoPath) {
    var open = Git.Repository.open;     
    open(repoPath).then(function(repo){
        repository = repo;
        return repo.getRemote('origin');
    }).then(function(remoteResult){
        remote = remoteResult;          
        remote.setCallbacks({
              credentials: function(url, userName) {
                  // return Git.Cred.sshKeyFromAgent(userName);
                  return Git.Cred.userpassPlaintextNew('XYZ', "XYZ");
              }
          });


        return remote.connect(Git.Enums.DIRECTION.PUSH);
    }).then(function() {
      console.log('remote Connected?', remote.connected())

      return remote.push(
                ["refs/heads/master:refs/heads/master"],
                null,
                repository.defaultSignature(),
                "Push to master")
    }).then(function() {
        console.log('remote Pushed!')
    })
    .catch(function(reason) {
        console.log(reason);
    });
}

Основная проблема заключается в настройке учетных данных в библиотеке Nodegit. Пожалуйста, будьте осторожны при проверке, является ли это нажатием на ключ SSH или хорошо ли он работает в обычном режиме userpassPainTestNow. Я прокомментировал оба сценария там. Эти ссылки оказались действительно полезными для устранения этой проблемы. Узел: Как изменить файл и отправить изменения? https://github.com/nodegit/nodegit/issues/463

Другие вопросы по тегам