ReceiveCommits: add a "SUCCESS" marker for successful change updates

This will be colored bright green in upcoming git releases, which
draws attention to the actionable part of the output, which is the URL
for the created/updated changes.

Change-Id: Id9e2884f9bf3a9225e76f546e93127fac53079f4
This commit is contained in:
Han-Wen Nienhuys
2018-08-21 14:38:56 +02:00
parent 0f5ff8b1b9
commit b289707f99
2 changed files with 30 additions and 17 deletions

View File

@@ -580,6 +580,7 @@ class ReceiveCommits {
traceContext.forceLogging().addTag(RequestId.Type.TRACE_ID, traceId);
addMessage(RequestId.Type.TRACE_ID.name() + ": " + traceId);
}
try {
if (!projectState.getProject().getState().permitsWrite()) {
for (ReceiveCommand cmd : commands) {
@@ -652,7 +653,15 @@ class ReceiveCommits {
insertChangesAndPatchSets(newChanges, replaceProgress);
newProgress.end();
replaceProgress.end();
reportMessages(newChanges);
queueSuccessMessages(newChanges);
refsPublishDeprecationWarning();
}
}
private void refsPublishDeprecationWarning() {
// TODO(xchangcheng): remove after migrating tools which are using this magic branch.
if (magicBranch != null && magicBranch.publish) {
addMessage("Pushing to refs/publish/* is deprecated, use refs/for/* instead.");
}
}
@@ -737,9 +746,25 @@ class ReceiveCommits {
}
}
private void reportMessages(List<CreateRequest> newChanges) {
/** Appends messages for successful change creation/updates. */
private void queueSuccessMessages(List<CreateRequest> newChanges) {
List<CreateRequest> created =
newChanges.stream().filter(r -> r.change != null).collect(toList());
List<ReplaceRequest> updated =
replaceByChange
.values()
.stream()
.filter(r -> r.inputCommand.getResult() == OK)
.sorted(comparingInt(r -> r.notes.getChangeId().get()))
.collect(toList());
if (created.isEmpty() && updated.isEmpty()) {
return;
}
addMessage("");
addMessage("SUCCESS");
if (!created.isEmpty()) {
addMessage("");
addMessage("New Changes:");
@@ -748,16 +773,8 @@ class ReceiveCommits {
changeFormatter.newChange(
ChangeReportFormatter.Input.builder().setChange(c.change).build()));
}
addMessage("");
}
List<ReplaceRequest> updated =
replaceByChange
.values()
.stream()
.filter(r -> r.inputCommand.getResult() == OK)
.sorted(comparingInt(r -> r.notes.getChangeId().get()))
.collect(toList());
if (!updated.isEmpty()) {
addMessage("");
addMessage("Updated Changes:");
@@ -809,11 +826,6 @@ class ReceiveCommits {
}
addMessage("");
}
// TODO(xchangcheng): remove after migrating tools which are using this magic branch.
if (magicBranch != null && magicBranch.publish) {
addMessage("Pushing to refs/publish/* is deprecated, use refs/for/* instead.");
}
}
private void insertChangesAndPatchSets(List<CreateRequest> newChanges, Task replaceProgress) {

View File

@@ -301,13 +301,14 @@ public abstract class AbstractPushForReview extends AbstractDaemonTest {
r2.assertOkStatus();
r2.assertChange(Change.Status.NEW, null);
r2.assertMessage(
"New changes:\n"
"success\n"
+ "\n"
+ "New changes:\n"
+ " "
+ url
+ id2
+ " another commit\n"
+ "\n"
+ "\n"
+ "Updated changes:\n"
+ " "
+ url