Index: /applications/editors/josm/plugins/reverter/src/reverter/ChangesetIdQuery.java
===================================================================
--- /applications/editors/josm/plugins/reverter/src/reverter/ChangesetIdQuery.java	(revision 31595)
+++ /applications/editors/josm/plugins/reverter/src/reverter/ChangesetIdQuery.java	(revision 31596)
@@ -8,4 +8,5 @@
 import java.awt.event.WindowEvent;
 import java.awt.event.WindowListener;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedList;
@@ -26,5 +27,4 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.gui.ExtendedDialog;
-import org.openstreetmap.josm.gui.widgets.ChangesetIdTextField;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
 import org.openstreetmap.josm.tools.GBC;
@@ -35,5 +35,5 @@
 public class ChangesetIdQuery extends ExtendedDialog {
     private final JPanel panel = new JPanel(new GridBagLayout());
-    private final ChangesetIdTextField tcid = new ChangesetIdTextField();
+    private final ChangesetIdsTextField tcid = new ChangesetIdsTextField();
     private final HistoryComboBox cbId = new HistoryComboBox();
     private final ButtonGroup bgRevertType = new ButtonGroup();
@@ -43,6 +43,6 @@
     private final JCheckBox cbNewLayer = new JCheckBox(tr("Download as new layer"));
     
-    public int getChangesetId() {
-        return tcid.getChangesetId();
+    public Collection<Integer> getIdsInReverseOrder() {
+        return tcid.getIdsInReverseOrder();
     }
     
Index: /applications/editors/josm/plugins/reverter/src/reverter/ChangesetIdsTextField.java
===================================================================
--- /applications/editors/josm/plugins/reverter/src/reverter/ChangesetIdsTextField.java	(revision 31596)
+++ /applications/editors/josm/plugins/reverter/src/reverter/ChangesetIdsTextField.java	(revision 31596)
@@ -0,0 +1,52 @@
+package reverter;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.StringTokenizer;
+import java.util.TreeSet;
+
+import javax.swing.text.JTextComponent;
+
+import org.openstreetmap.josm.gui.widgets.AbstractIdTextField;
+import org.openstreetmap.josm.gui.widgets.ChangesetIdTextField;
+
+public class ChangesetIdsTextField extends AbstractIdTextField<ChangesetIdsTextField.OsmIdsValidator> {
+
+    public ChangesetIdsTextField() {
+        super(OsmIdsValidator.class);
+    }
+
+    @Override
+    public boolean readIds() {
+        return validator.readChangesetId();
+    }
+
+    public Collection<Integer> getIdsInReverseOrder() {
+        return validator.ids;
+    }
+
+    public static class OsmIdsValidator extends ChangesetIdTextField.ChangesetIdValidator {
+
+        private Collection<Integer> ids = new TreeSet<>(Collections.reverseOrder());
+
+        public OsmIdsValidator(JTextComponent tc) {
+            super(tc);
+        }
+
+        @Override
+        public boolean readChangesetId() {
+            ids.clear();
+            String value = getComponent().getText();
+            try {
+                final StringTokenizer tokenizer = new StringTokenizer(value, ",.+/ \t\n");
+                while(tokenizer.hasMoreTokens()) {
+                    ids.add(Integer.parseInt(tokenizer.nextToken().trim()));
+                }
+                return true;
+            } catch (NumberFormatException e) {
+                ids.clear();
+                return false;
+            }
+        }
+    }
+}
Index: /applications/editors/josm/plugins/reverter/src/reverter/RevertChangesetAction.java
===================================================================
--- /applications/editors/josm/plugins/reverter/src/reverter/RevertChangesetAction.java	(revision 31595)
+++ /applications/editors/josm/plugins/reverter/src/reverter/RevertChangesetAction.java	(revision 31596)
@@ -5,4 +5,5 @@
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
+import java.util.Collection;
 
 import org.openstreetmap.josm.Main;
@@ -27,11 +28,13 @@
         final ChangesetIdQuery dlg = new ChangesetIdQuery();
         if (dlg.showDialog().getValue() != 1) return;
-        final int changesetId = dlg.getChangesetId();
+        final Collection<Integer> changesetIds = dlg.getIdsInReverseOrder();
         final RevertType revertType = dlg.getRevertType();
-        if (changesetId == 0) return;
         if (revertType == null) return;
 
-        boolean newLayer = dlg.isNewLayerRequired();
-        Main.worker.submit(new RevertChangesetTask(changesetId, revertType, newLayer, newLayer));
+        final boolean newLayer = dlg.isNewLayerRequired();
+        final boolean autoConfirmDownload = newLayer || changesetIds.size() > 1;
+        for (Integer changesetId : changesetIds) {
+            Main.worker.submit(new RevertChangesetTask(changesetId, revertType, autoConfirmDownload, newLayer));
+        }
     }
 }
