例如,当我使用 shell 对 gerrit 发表评论时,
ssh -p 29418 gerritlink gerrit 审查 --verified=0 '--message=[FAILURE] 提交消息检查失败。
PCPID 不存在。
A360-ID 不存在。d9a5d29799ada8237679efd1121cd7e3a85f333d
这在 gerrit 评论中效果很好,你可以在那里看到多行。 但是当我使用java调用命令时,所有的句子都在一行中。如何在java中的多行中进行注释?
这里有两个对我有用的解决方案:
我还必须使用 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.
我很确定这是否会有所帮助,但您可以尝试使用;or分隔您的命令&&。
我将在 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:
ssh -p 29418 admin@localhost gerrit review 3,2 --project test -m "'""${msg}""'" --code-review 1
管理员补丁集 2: