Вопрос: Как запустить git push
из node.js
с помощью passphrase
.
Я пытаюсь создать небольшой модуль, где мне нужно запустить git push
from node.js
для удаленного repo
, но я получаю сообщение об ошибке, когда я с node.js exec
но не с терминала.
Мой код.
./command.ts
import * as util from 'util';
const exec = util.promisify(require('child_process').exec);
export default function command(command: string): Promise<string> {
return exec(command, {cwd: process.cwd()}).then((resp) => {
const data = resp.stdout.toString().replace(/[\n\r]/g, '');
return Promise.resolve(data);
});
}
./index.ts
import command from './command';
async function init() {
try {
await command('git add .');
await command('git commit -m "my commit" ');
conat result = await command('git push');
} catch (e) {
console.log(e);
}
}
init();
и когда я запускаю ts-node./index.ts
я получаю следующую ошибку.
Error: Command failed: git push
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Но когда я запускаю git push
с терминала, я получаю подсказку с парольной фразой, и это работает.
Любая идея о том, как решить эту проблему, есть способ запускать git push
с помощью парольной фразы, используя node.js
?
Имейте в виду, что я буду любить исправлять это без каких-либо внешних библиотек.
Заранее спасибо.
Как описано здесь, проверьте, работает ли одна и та же программа, когда:
Не только приглашение больше не запрашивает вашу кодовую фразу (теперь кешируется агентом), но ваш скрипт также может извлечь выгоду из этого кеша.
Вам может потребоваться добавить env: process.env
в параметры exec()
, если ваш ключ загружен в процесс ssh-agent. Существуют некоторые переменные среды ssh-agent export, которые используются другими процессами, чтобы найти ssh-agent для доступа к своим ключам.
git push https://username:[email protected]/file.git --all