ChangeSet, MergeOp: Ease up change set calculation
In MergeOp we need a list of ChangeData for a target branch. This
can be directly extracted from the ChangeSet instead of using a list
of change ids and reconstructing ChangeData from it using a
changeDataFactory.
Change-Id: I0d7f682016da5a19cf7f46230db67851f64fdd00
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ChangeSet.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ChangeSet.java
index d4b0c4b..fdf9b34 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ChangeSet.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ChangeSet.java
@@ -91,12 +91,12 @@
return ret;
}
- public Multimap<Branch.NameKey, Change.Id> changesByBranch()
+ public Multimap<Branch.NameKey, ChangeData> changesByBranch()
throws OrmException {
- ListMultimap<Branch.NameKey, Change.Id> ret =
+ ListMultimap<Branch.NameKey, ChangeData> ret =
ArrayListMultimap.create();
for (ChangeData cd : changeData) {
- ret.put(cd.change().getDest(), cd.getId());
+ ret.put(cd.change().getDest(), cd);
}
return ret;
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
index c5367ff..032be9d 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
@@ -394,18 +394,14 @@
logDebug("Perform the merges");
try {
Multimap<Project.NameKey, Branch.NameKey> br = cs.branchesByProject();
- Multimap<Branch.NameKey, Change.Id> cbb = cs.changesByBranch();
+ Multimap<Branch.NameKey, ChangeData> cbb = cs.changesByBranch();
for (Project.NameKey project : br.keySet()) {
openRepository(project);
for (Branch.NameKey branch : br.get(project)) {
setDestProject(branch);
- List<ChangeData> cds = new ArrayList<>();
- for (Change.Id id : cbb.get(branch)) {
- cds.add(changeDataFactory.create(db, id));
- }
ListMultimap<SubmitType, ChangeData> submitting =
- validateChangeList(cds);
+ validateChangeList(cbb.get(branch));
toSubmit.put(branch, submitting);
Set<SubmitType> submitTypes = new HashSet<>(submitting.keySet());
@@ -586,7 +582,7 @@
}
private ListMultimap<SubmitType, ChangeData> validateChangeList(
- List<ChangeData> submitted) throws MergeException {
+ Collection<ChangeData> submitted) throws MergeException {
logDebug("Validating {} changes", submitted.size());
ListMultimap<SubmitType, ChangeData> toSubmit = ArrayListMultimap.create();