我正在使用此命令来获取git存储库中的内容:
git archive --remote=ssh://git@git/repository.git HEAD filename.txt | tar xvOf -
该命令的第一部分将存储库中filename.txt
的内容返回给标准输出。
第二部分是为了删除git自动添加到内容中的pax_global_header
。
我想在node.js
v0.10.36
这是我尝试过的:
var git = spawn("git", ["archive","--remote=" + repositoryUrl,"HEAD",filename]);
var tar = spawn("tar", ["xvOf", "-"]);
var out = [];
tar.stdout.pipe(git.stdout).on('data', function(data){
var string = data.toString();
if(string) {
out.push(string);
}
});
但是当我运行它时,我在数据处理程序中得到的字符串就像git
输出永远不会通过tar
进程传递
我做错了什么?
答案 0 :(得分:0)
我在发布此内容后10秒钟找到答案......
我应该做的是将git
的输出传输到tar
的输入并使用tar
输出的流
所以我的代码看起来有点像这样:
var git = spawn("git", ["archive","--remote=" + repositoryUrl,"HEAD",filename]);
var tar = spawn("tar", ["xvOf", "-"]);
var out = [];
git.stdout.pipe(tar.stdin);
tar.stdout.on('data', function(data){
var string = data.toString();
if(string) {
out.push(string);
}
});
....