--- 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): """