Merge "Do not fail to create account if email doesn't match"
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/AddApprovalsStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/AddApprovalsStep.java
index e703b60..a4a31ae 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/AddApprovalsStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/AddApprovalsStep.java
@@ -105,7 +105,8 @@
                 + " This label was referenced by an approval provided from '%s'"
                 + " for change '%s'."
                 + " This approval will be skipped. In order to import this"
-                + " approval configure the missing label and resume the import."
+                + " approval configure the missing label and resume the import"
+                + " with the force option."
                 , pluginName, labelName, a.username, changeInfo.id));
             continue;
           }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayChangesStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayChangesStep.java
index dcb2ceb..c7d058f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayChangesStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayChangesStep.java
@@ -17,6 +17,7 @@
 import com.google.common.collect.Iterators;
 import com.google.gerrit.common.Nullable;
 import com.google.gerrit.common.errors.NoSuchAccountException;
+import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.client.ChangeStatus;
 import com.google.gerrit.extensions.common.ChangeInfo;
 import com.google.gerrit.extensions.restapi.BadRequestException;
@@ -64,6 +65,7 @@
 
   private static Logger log = LoggerFactory.getLogger(ReplayChangesStep.class);
 
+  private final String pluginName;
   private final ReplayRevisionsStep.Factory replayRevisionsFactory;
   private final ReplayInlineCommentsStep.Factory replayInlineCommentsFactory;
   private final ReplayMessagesStep.Factory replayMessagesFactory;
@@ -86,6 +88,7 @@
 
   @Inject
   ReplayChangesStep(
+      @PluginName String pluginName,
       ReplayRevisionsStep.Factory replayRevisionsFactory,
       ReplayInlineCommentsStep.Factory replayInlineCommentsFactory,
       ReplayMessagesStep.Factory replayMessagesFactory,
@@ -105,6 +108,7 @@
       @Assisted("resume") boolean resume,
       @Assisted ResumeImportStatistic importStatistic,
       @Assisted ProgressMonitor pm) {
+    this.pluginName = pluginName;
     this.replayRevisionsFactory = replayRevisionsFactory;
     this.replayInlineCommentsFactory = replayInlineCommentsFactory;
     this.replayMessagesFactory = replayMessagesFactory;
@@ -170,6 +174,13 @@
         return;
       }
     }
+
+    if (c.revisions.isEmpty()) {
+      log.warn(String.format("[%s] Change %s has no revisions.",
+          pluginName, c.id));
+      return;
+    }
+
     replayRevisionsFactory.create(repo, rw, change, c).replay(api);
     upsertChange(resumeChange, change, c);
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayMessagesStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayMessagesStep.java
index 5f2d92c..306d819 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayMessagesStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ReplayMessagesStep.java
@@ -87,9 +87,10 @@
       if (msg.author != null) {
         Account.Id userId = accountUtil.resolveUser(api, msg.author);
         ChangeUpdate update = updateFactory.create(control(change, userId), ts);
-        ChangeMessage cmsg =
-            new ChangeMessage(msgKey, userId, ts, new PatchSet.Id(
-                change.getId(), msg._revisionNumber));
+        PatchSet.Id psId = msg._revisionNumber != null
+            ? new PatchSet.Id(change.getId(),  msg._revisionNumber)
+            : null;
+        ChangeMessage cmsg = new ChangeMessage(msgKey, userId, ts, psId);
         cmsg.setMessage(msg.message);
         cmUtil.addChangeMessage(db, update, cmsg);
         update.commit();