1

Node.jsでこれを実行したいと思います。

git archive remote=git@example.com:repo.git HEAD | tar -x - -C /path/to/extracted/

だから、私は次のようなコードを書きました:

git = spawn 'git', ['archive', "--remote=git@example.com:repo.git", 'HEAD']
tar = spawn 'tar', ['-x', '-', '-C /path/to/extracted']

git.stderr.on 'data', (data) ->
  console.log "git error: #{data}"

git.stdout.on 'data', (data) ->
  tar.stdin.write data

tar.stderr.on 'data', (data) ->
  console.log "tar error: #{data}"

git.on 'exit', (code) ->
  console.log "git process done with code #{code}"

tar.on 'exit', (code) ->
  console.log "tar process done with code #{code}"

しかし、これは私が期待したようには機能しません。これを正しく機能させるには何を変更する必要がありますか?

前もって感謝します。

アップデート

-適切なコマンドは実際にはとの間-xで必要ありません-C

git archive remote=git@example.com:repo.git HEAD | tar -x -C /path/to/extracted/
4

2 に答える 2

0

その場合、spanではなく、関数execを使用する必要があります。execドキュメントに見られるように、それはパイプexecドキュメントを受け入れます

exec('git archive remote=git@example.com:repo.git HEAD | tar -x - -C /path/to/extracted/', function (error, stdout, stderr) {
    // logic here
}
于 2013-03-26T14:27:59.200 に答える
0

child_process.execを使用するときは、コマンドの挿入に注意する必要があります。.pipeストリームに適用できる(spawnが使用するもの)を使用して、spawnで同様の動作を実現できます。https://nodejs.org/api/stream.html#stream_event_pipe

于 2018-04-10T09:32:53.317 に答える