我想运行一个远程命令(git diff current_revision,并在几个文件夹中head)并捕获输出。

我已经尝试过运行(“ git diff rev1 rev2 - 文件夹| cat”),但是该方法始终返回似乎返回nil(即使我可以看到Capistrano输出中的diff输出)。

有任何想法吗?我可以使用不同的手段来管道命令或类似的东西吗?我不是一个Unix向导,所以这里可能会缺少琐碎的我。

有帮助吗?

解决方案

也许 capture?

“捕获助手将在第一个匹配服务器上执行给定命令,并将命令的输出作为字符串返回。”

https://github.com/capistrano/capistrano/wiki/2.x-dsl-actor-action-inspection-capture

其他提示

如果要捕获多个主机的输出,请使用一个块运行:例如:

 desc "capture output from multiple servers"
  task :capture_multiple_servers, :roles => [:some_servers] do
    results = {}
    run "hostname --fqdn" do |channel, stream, data|
      if stream == :out
        results[channel[:host]] = [] unless results.key?(channel[:host])
        results[channel[:host]] << data if stream == :out
      end
    end
    puts "Your results were:"
    results.keys.sort.each do | host |
      puts "#{host}:#{results[host].join}"
    end
  end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top