0

たとえば、シェルを使用して gerrit に関するコメントを公開している場合、

ssh -p 29418 gerritlink gerrit review --verified=0 '--message=[FAILURE] COMMIT MESSAGE CHECK FAIL.

PCPID が存在しません。

A360-ID が存在しません。d9a5d29799ada8237679efd1121cd7e3a85f333d

これは gerrit コメントで正常に機能し、そこに複数行が表示されます。 しかし、Javaを使用してコマンドを呼び出すと、すべての文が1行になります。Javaで複数行のコメントを作成するにはどうすればよいですか?

4

3 に答える 3

0

これが役立つかどうかは確信していますが、;またはを使用してコマンドを区切ってみてください&&

于 2012-07-31T02:28:41.000 に答える
0

これが私のために働いた2つの解決策です:

  1. Gerrit は単一の改行を折りたたむため、"\r\n" の代わりに二重の改行 "\n\n" を使用します。
  2. 各行の前にスペースを付けると、Gerrit がそれらを個別の等幅行として表示するようになります。段落は、コード サンプルに役立つ HTML pre スタイルを使用して書式設定されます。

出典: Re: gerritコメント形式の複数行コメント

上記のソリューションを機能させるには、ProcessBuilder を使用して ssh コマンドを実行する必要もありました。

例: 解決策 1 を使用してメッセージを送信する:

String solution1_msg = "Test1\n\nThis is a test\n\nTesting has completed"
String solution2_msg = "Test2\n   This is a test\n   Testing has completed"

ProcessBuilder pb = new ProcessBuilder("ssh", "-p", "29418", "<gerrit server>",
    "gerrit", "review", "--message=\"" + solution1_message + "\"commit SHA-1>");
pb.redirectErrorStream(); //redirect stderr to stdout
Process process = pb.start();
InputStream inputStream = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line = null;
while((line = reader.readLine())!= null) {
  System.out.println(line);
}
process.waitFor();

解決策 2 でも同じコードが機能します。solution2_messageの代わりにメッセージとして渡しますsolution1_message

ソース: Java を介して SSH で複数のコマンドを実行するにはどうすればよいですか?

于 2014-01-14T22:09:28.177 に答える