From ef204c73353204fb06e6af1f00a7a6c4e7d6acaf Mon Sep 17 00:00:00 2001 From: Changcheng Xiao Date: Thu, 15 Mar 2018 11:15:58 +0100 Subject: [PATCH] SubmoduleOp: sort subscriptions before creating gitlink commit message This commit makes sure that the commit message for the super repo is created with an sorted list of subscriptions. Without this fix, the following test could fail because the commit message may change for different runs. SubmoduleSubscriptionsWholeTopicMergeIT#updateManySubmodules Change-Id: If84195c04fb89b1397295d0d80b6b697f20598e4 --- java/com/google/gerrit/server/git/SubmoduleOp.java | 8 +++++++- .../git/SubmoduleSubscriptionsWholeTopicMergeIT.java | 8 ++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/java/com/google/gerrit/server/git/SubmoduleOp.java b/java/com/google/gerrit/server/git/SubmoduleOp.java index 56ed432a23..0e3e146273 100644 --- a/java/com/google/gerrit/server/git/SubmoduleOp.java +++ b/java/com/google/gerrit/server/git/SubmoduleOp.java @@ -14,6 +14,8 @@ package com.google.gerrit.server.git; +import static java.util.Comparator.comparing; + import com.google.common.collect.ImmutableSet; import com.google.common.collect.MultimapBuilder; import com.google.common.collect.SetMultimap; @@ -47,6 +49,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; +import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; @@ -416,7 +419,10 @@ public class SubmoduleOp { DirCache dc = readTree(or.rw, currentCommit); DirCacheEditor ed = dc.editor(); int count = 0; - for (SubmoduleSubscription s : targets.get(subscriber)) { + + List subscriptions = new ArrayList<>(targets.get(subscriber)); + Collections.sort(subscriptions, comparing((SubmoduleSubscription s) -> s.getPath())); + for (SubmoduleSubscription s : subscriptions) { if (count > 0) { msgbuf.append("\n\n"); } diff --git a/javatests/com/google/gerrit/acceptance/git/SubmoduleSubscriptionsWholeTopicMergeIT.java b/javatests/com/google/gerrit/acceptance/git/SubmoduleSubscriptionsWholeTopicMergeIT.java index 7583830587..2812c8637e 100644 --- a/javatests/com/google/gerrit/acceptance/git/SubmoduleSubscriptionsWholeTopicMergeIT.java +++ b/javatests/com/google/gerrit/acceptance/git/SubmoduleSubscriptionsWholeTopicMergeIT.java @@ -346,17 +346,17 @@ public class SubmoduleSubscriptionsWholeTopicMergeIT extends AbstractSubmoduleSu "master", "Update git submodules\n\n" + "* Update " - + name("sub3") + + name("sub1") + " from branch 'master'\n to " - + sub3HEAD + + sub1HEAD + "\n\n* Update " + name("sub2") + " from branch 'master'\n to " + sub2HEAD + "\n\n* Update " - + name("sub1") + + name("sub3") + " from branch 'master'\n to " - + sub1HEAD); + + sub3HEAD); } superRepo