2015-06-04 3 views
0

Я пытаюсь написать общий командный элемент в Node.JS - однако это не так важно.
Моя установка выглядит следующим образом:Выполнение git из node.js в качестве дочернего процесса?

  1. У меня есть список строковых команд, которые выполняются с использованием child_process.exec один за другим.
  2. Я хочу запустить git из одной из этих команд, в частности, pull.
  3. Для определения местоположения, которое я вынимаю, требуется аутентификация SSH. HTTPS не вариант.
  4. Мой закрытый ключ с паролями.
  5. Я использую в настоящее время keychain для управления ssh-agent.

При запуске git pull из командной строки это удается. При запуске моего приложения в качестве зарегистрированного пользователя он преуспевает. Однако при запуске моего приложения с использованием forever он терпит неудачу.

Ошибка, которую я получаю, составляет Permission denied (publickey).. Я попытался позвонить keychain как часть моей команды, но я не могу заставить его распознавать учетные данные.

Как это исправить?

+0

Предположим, вам нужно запустить 'git pull' в интерактивной оболочке Bash, чтобы он работал с вашими ключами' ~/.ssh', но дочерний процесс Node запускает команду напрямую без какой-либо среды. – laggingreflex

+0

Попробуйте запустить 'bash -lic ' git pull "' – laggingreflex

+0

Спасибо @laggingreflex - когда я пытаюсь, что 'keychain' сообщает, что он не может найти' id_rsa'. Запуск 'keychain ...; git pull' из 'bash' заставляет команду висеть, предположительно ожидая ввода? –

ответ

0

Моя ошибка заключалась в содержании .bash_profile и использовании этого keychain из моего exec.

Что мне нужно сделать, это:
. $HOME/.keychain/$HOSTNAME-sh; git pull

Я нашел это, глядя на примеры того, как использовать keychain с bash сценариев.

Смежные вопросы