Frage

Ich möchte einen Remote-Befehl (git diff von current_revision und HEAD in wenigen Ordner) laufen zu lassen und die Ausgabe zu erfassen.

Ich habe versucht, läuft. ( „Git diff rev1 rev2 - Ordner | cat“), aber die Methode scheint immer kehrt Null zurückzukehren (auch wenn ich die Ausgabe von diff in der Capistrano Ausgabe sehen kann)

Irgendwelche Ideen? Kann ich verschiedene mittels Rohrleitungen den Befehl, oder etwas ähnliches verwenden? Im nicht ein Unix-Assistenten, so dass es etwas trivial Im fehlt hier sein könnte.

War es hilfreich?

Lösung

Vielleicht capture?

„Der Capture-Helfer wird den angegebenen Befehl auf dem ersten passenden Server ausführen und wird die Ausgabe des Befehls als String zurück.“

https://github.com/capistrano/ Capistrano / wiki / 2.x-DSL-Aktion-Inspection-Capture-

Andere Tipps

Wenn Sie die Ausgabe von mehreren Hosts zu erfassen, verwenden Sie laufen mit einem Block: z.

 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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top