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