2017-10-17 10 views
1

ノードスクリプトを使用して分岐をメインブランチにプログラムでマージしようとしています。最初に試したのはExecute a command line binary with Node.jsで、これは端末コマンドを実行するのに有効でした。しかし、私は作業ディレクトリを変更するのに苦労しました。私は作業ディレクトリをgitリポジトリに変更し、そこからgitコマンドを実行したいと思っていました。 cd ~/repoまたはcd /home/me/repoを実行しても、作業ディレクトリはまったく変更されず、cdを使用する以外は変更できませんでした。標準ターミナルコマンドを使用してノードからgitコマンドを実行する方法

次に、スクリプトのディレクトリからgitコマンドを実行しようとしましたが、私のrepoを指していました。私はgit --git-dirgit --work-treeを試しましたが、それらのコマンドのどちらも動作しませんでした。エラーは同じです:fatal: Not a git repository (or any of the parent directories): .gitこれは、スクリプトが実行されているディレクトリがgit repoではないためです。

私は、スクリプトを実行しているディレクトリ以外のディレクトリにgitコマンドを送るか、スクリプトの作業ディレクトリを変更する方法が必要です。好ましくは後者である。

> [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 
+0

'git --git-dir =/home/me/repo/.git --work-tree =/home/me/repo merge foo'を試してください。パスで '/ home/me'を置き換えるのに'〜 'を使わないでください。 – ElpieKay

+0

npm gitパッケージを使用するのではなく、子プロセスとしてこれをやっている理由は何ですか?それを使用すると約100万回簡単です... https://www.npmjs.com/package/nodegit – dvsoukup

答えて

0

を代わりにしてみてください:出力は

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); 
      }) 
     } 
    } 
})(); 

以下の私の完全なコードと出力され、あなたのgitのレポのコンテキストでのgitコマンドを実行します
git -C /path/to/git/repo your_git_command 

/path/to/git/repo

+0

ありがとう、私はそれを試してみましょう。私はすでにこのケースの解決策を見つけましたが、あなたの提案を使用するように単純化する価値があるかもしれません。 –

0

私はこの問題をShellJSを使用して回避しました。 ShellJSには、ディレクトリを変更して固執するような方法.cd()があります。

関連する問題