我正在嘗試以編程方式將分支合併到使用節點腳本的主分支中。我嘗試的第一件事是從Execute a command line binary with Node.js,它執行終端命令罰款。但是我在修改工作目錄時遇到了困難。我想將工作目錄更改爲git存儲庫,然後從那裏運行git命令。執行cd ~/repo
或cd /home/me/repo
根本沒有更改工作目錄,除了使用cd
之外,我找不到任何方法來更改它。如何使用標準終端命令從節點執行git命令
我接下來嘗試從腳本目錄執行git命令,但指向我的回購。我試過git --git-dir
和git --work-tree
,但這些命令都沒有奏效。錯誤是一樣的:fatal: Not a git repository (or any of the parent directories): .git
我猜這是因爲腳本運行的目錄不是一個git倉庫。
所以我要麼發送git命令到一個目錄,而不是我正在運行腳本的目錄,或者我想要一種方法來更改腳本的工作目錄。最好是後者。我完整的代碼和輸出低於
import JiraData from './jiradata';
const jiraData = new JiraData();
const { exec } = require('child_process');
(async function() {
const cards = await jiraData.getCardsInTest();
let commands = ['cd /home/me/repo', 'pwd'];
let proceeding = true;
// for (const card of cards) {
// commands.push(`git merge origin/${card} --commit --no-edit`);
// }
for (const command of commands) {
if (proceeding) {
console.log(`Executing command "${command}"`);
exec(command, (err, stdout, stderr) => {
if (err) {
proceeding = false;
console.log(stderr);
return;
}
console.log(stdout);
})
}
}
})();
輸出:
> [email protected] start /home/me/CI
> babel-node index.js --presets es2015,stage-2
Executing command "cd /home/me/repo"
Executing command "pwd"
/home/me/CI
試試'git --git-dir =/home/me/repo/.git --work-tree =/home/me/repo merge foo'。不要使用'〜'來替換路徑中的'/ home/me'。 – ElpieKay
爲什麼你要這樣做,而不是使用npm git包作爲子進程?使用它時容易一百萬倍... https://www.npmjs.com/package/nodegit – dvsoukup