Plugins/VcsPlugins/vcsMercurial/hg.py

changeset 5501
59ed7b2dd952
parent 5496
d157a2319073
child 5503
20dd5c1e43ec
--- a/Plugins/VcsPlugins/vcsMercurial/hg.py	Thu Feb 09 19:52:17 2017 +0100
+++ b/Plugins/VcsPlugins/vcsMercurial/hg.py	Thu Feb 09 20:03:00 2017 +0100
@@ -2518,11 +2518,14 @@
         
         return status
     
-    def hgBundle(self, name):
+    def hgBundle(self, name, bundleData=None):
         """
         Public method to create a changegroup file.
         
-        @param name file/directory name (string)
+        @param name file/directory name
+        @type str
+        @param bundleData dictionary containing the bundle creation information
+        @type dict
         """
         dname, fname = self.splitPath(name)
         
@@ -2533,60 +2536,68 @@
             if os.path.splitdrive(repodir)[1] == os.sep:
                 return
         
-        from .HgBundleDialog import HgBundleDialog
-        dlg = HgBundleDialog(self.hgGetTagsList(repodir),
-                             self.hgGetBranchesList(repodir),
-                             self.hgGetBookmarksList(repodir))
-        if dlg.exec_() == QDialog.Accepted:
-            revs, baseRevs, compression, all = dlg.getParameters()
-            
-            fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
-                None,
-                self.tr("Create changegroup"),
-                self.__lastChangeGroupPath or repodir,
-                self.tr("Mercurial Changegroup Files (*.hg)"),
-                None,
-                E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
-            
-            if not fname:
-                return  # user aborted
+        if bundleData is None:
+            from .HgBundleDialog import HgBundleDialog
+            dlg = HgBundleDialog(self.hgGetTagsList(repodir),
+                                 self.hgGetBranchesList(repodir),
+                                 self.hgGetBookmarksList(repodir))
+            if dlg.exec_() != QDialog.Accepted:
+                return
             
-            ext = QFileInfo(fname).suffix()
-            if not ext:
-                ex = selectedFilter.split("(*")[1].split(")")[0]
-                if ex:
-                    fname += ex
-            if QFileInfo(fname).exists():
-                res = E5MessageBox.yesNo(
-                    self.__ui,
-                    self.tr("Create changegroup"),
-                    self.tr("<p>The Mercurial changegroup file <b>{0}</b> "
-                            "already exists. Overwrite it?</p>")
-                        .format(fname),
-                    icon=E5MessageBox.Warning)
-                if not res:
-                    return
-            fname = Utilities.toNativeSeparators(fname)
-            self.__lastChangeGroupPath = os.path.dirname(fname)
-            
-            args = self.initCommand("bundle")
-            if all:
-                args.append("--all")
-            for rev in revs:
-                args.append("--rev")
-                args.append(rev)
-            for baseRev in baseRevs:
-                args.append("--base")
-                args.append(baseRev)
-            if compression:
-                args.append("--type")
-                args.append(compression)
-            args.append(fname)
-            
-            dia = HgDialog(self.tr('Create changegroup'), self)
-            res = dia.startProcess(args, repodir)
-            if res:
-                dia.exec_()
+            revs, baseRevs, compression, all = dlg.getParameters()
+        else:
+            revs = bundleData["revs"]
+            baseRevs = [bundleData["base"]]
+            compression = ""
+            all = bundleData["all"]
+        
+        fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
+            None,
+            self.tr("Create changegroup"),
+            self.__lastChangeGroupPath or repodir,
+            self.tr("Mercurial Changegroup Files (*.hg)"),
+            None,
+            E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
+        
+        if not fname:
+            return  # user aborted
+        
+        ext = QFileInfo(fname).suffix()
+        if not ext:
+            ex = selectedFilter.split("(*")[1].split(")")[0]
+            if ex:
+                fname += ex
+        if QFileInfo(fname).exists():
+            res = E5MessageBox.yesNo(
+                self.__ui,
+                self.tr("Create changegroup"),
+                self.tr("<p>The Mercurial changegroup file <b>{0}</b> "
+                        "already exists. Overwrite it?</p>")
+                    .format(fname),
+                icon=E5MessageBox.Warning)
+            if not res:
+                return
+        fname = Utilities.toNativeSeparators(fname)
+        self.__lastChangeGroupPath = os.path.dirname(fname)
+        
+        args = self.initCommand("bundle")
+        if all:
+            args.append("--all")
+        for rev in revs:
+            args.append("--rev")
+            args.append(rev)
+        for baseRev in baseRevs:
+            args.append("--base")
+            args.append(baseRev)
+        if compression:
+            args.append("--type")
+            args.append(compression)
+        args.append(fname)
+        
+        dia = HgDialog(self.tr('Create changegroup'), self)
+        res = dia.startProcess(args, repodir)
+        if res:
+            dia.exec_()
     
     def hgPreviewBundle(self, name):
         """

eric ide

mercurial