0

例如,当我使用 shell 对 gerrit 发表评论时,

ssh -p 29418 gerritlink gerrit 审查 --verified=0 '--message=[FAILURE] 提交消息检查失败。

PCPID 不存在。

A360-ID 不存在。d9a5d29799ada8237679efd1121cd7e3a85f333d

这在 gerrit 评论中效果很好,你可以在那里看到多行。 但是当我使用java调用命令时,所有的句子都在一行中。如何在java中的多行中进行注释?

4

3 回答 3

0

这里有两个对我有用的解决方案:

  1. Gerrit 折叠单个换行符,所以使用双换行符“\n\n”而不是“\r\n”。
  2. 在每一行前加上空格,这将说服 Gerrit 将它们显示为单独的等距行。该段落使用 HTML 预样式进行格式化,这对于代码示例很有用。

来源: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 回答
0

我很确定这是否会有所帮助,但您可以尝试使用;or分隔您的命令&&

于 2012-07-31T02:28:41.000 回答
0

我将在 shell 中解释它。问题与使用不正确的引号有关。

$> msg="- line1                               
- line2
- line3
- line4"
$> echo ${msg}
$> - line1 - line2 - line3 - line4
$> echo "${msg}"
- line1
- line2
- line3
- line4

Gerrit 命令也是如此,您必须确保所需的引号位于所需的位置。

ssh -p 29418 admin@localhost gerrit review 3,2 --project test -m "'"${msg}"'" --code-review 1

管理员补丁集 2:

  • 你好 - wordl - line3 - line4
ssh -p 29418 admin@localhost gerrit review 3,2 --project test -m "'""${msg}""'" --code-review 1

管理员补丁集 2:

  • 第1行
  • 线2
  • 第 3 行
  • 第 4 行
于 2022-01-26T15:07:50.147 回答