CreateChange: Store for empty revisions that they do not contain conflicts

If a change is created for an empty commit, we know that this revision
doesn't contain any conflicts. Hence we can store this information and
make it available to callers. Storing conflict information for revisions
has been added in change I15e48ba87.

In this case ours/theirs in ConflictsInfo is not set, since the revision
was not created by performing a Git merge. Not setting ours/theirs when
containsConflicts is false, is OK, since change I15e48ba87 already
implemented and documented these fields as optional.

Bug: Google b/373350443
Release-Notes: skip
Change-Id: Icaa5ff613c67efdc5b51a6dd83ea5c0496cb5ddb
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/java/com/google/gerrit/server/git/CodeReviewCommit.java b/java/com/google/gerrit/server/git/CodeReviewCommit.java
index 3e4a5f1..2990aa8 100644
--- a/java/com/google/gerrit/server/git/CodeReviewCommit.java
+++ b/java/com/google/gerrit/server/git/CodeReviewCommit.java
@@ -172,6 +172,12 @@
     this.statusMessage = Optional.ofNullable(statusMessage);
   }
 
+  public void setNoConflicts() {
+    this.conflicts =
+        PatchSet.Conflicts.create(
+            Optional.empty(), Optional.empty(), /* containsConflicts= */ false);
+  }
+
   public void setConflicts(
       ObjectId ours, ObjectId theirs, @Nullable Set<String> filesWithGitConflicts) {
     if (filesWithGitConflicts != null && !filesWithGitConflicts.isEmpty()) {
diff --git a/java/com/google/gerrit/server/restapi/change/CreateChange.java b/java/com/google/gerrit/server/restapi/change/CreateChange.java
index bc15148..57be320 100644
--- a/java/com/google/gerrit/server/restapi/change/CreateChange.java
+++ b/java/com/google/gerrit/server/restapi/change/CreateChange.java
@@ -707,9 +707,12 @@
     ObjectId treeId = mergeTip == null ? emptyTreeId(oi) : mergeTip.getTree().getId();
     logger.atFine().log("Tree ID of empty commit: %s", treeId.name());
     List<RevCommit> parents = mergeTip == null ? ImmutableList.of() : ImmutableList.of(mergeTip);
-    return rw.parseCommit(
-        CommitUtil.createCommitWithTree(
-            oi, authorIdent, committerIdent, parents, commitMessage, treeId));
+    CodeReviewCommit commit =
+        rw.parseCommit(
+            CommitUtil.createCommitWithTree(
+                oi, authorIdent, committerIdent, parents, commitMessage, treeId));
+    commit.setNoConflicts();
+    return commit;
   }
 
   private static CodeReviewCommit createCommitWithSuppliedTree(
diff --git a/javatests/com/google/gerrit/acceptance/rest/change/CreateChangeIT.java b/javatests/com/google/gerrit/acceptance/rest/change/CreateChangeIT.java
index 35874e9..7704b1f 100644
--- a/javatests/com/google/gerrit/acceptance/rest/change/CreateChangeIT.java
+++ b/javatests/com/google/gerrit/acceptance/rest/change/CreateChangeIT.java
@@ -224,11 +224,12 @@
     assertThat(messages).hasSize(1);
     assertThat(Iterables.getOnlyElement(messages).message).isEqualTo("Uploaded patch set 1.");
 
-    // Verify that no conflicts information is set (conflicts information is only set for merge
-    // commits)
     RevisionInfo currentRevision =
         gApi.changes().id(info.id).get(CURRENT_REVISION, CURRENT_COMMIT).getCurrentRevision();
-    assertThat(currentRevision.conflicts).isNull();
+    assertThat(currentRevision.conflicts).isNotNull();
+    assertThat(currentRevision.conflicts.containsConflicts).isFalse();
+    assertThat(currentRevision.conflicts.ours).isNull();
+    assertThat(currentRevision.conflicts.theirs).isNull();
   }
 
   @Test