--- a/Plugins/VcsPlugins/vcsMercurial/hg.py Sun May 02 09:55:49 2010 +0000 +++ b/Plugins/VcsPlugins/vcsMercurial/hg.py Sun May 02 15:11:44 2010 +0000 @@ -39,6 +39,7 @@ from .HgTagBranchListDialog import HgTagBranchListDialog from .HgCommandDialog import HgCommandDialog from .HgBundleDialog import HgBundleDialog +from .HgBackoutDialog import HgBackoutDialog from .ProjectBrowserHelper import HgProjectBrowserHelper @@ -1290,6 +1291,8 @@ args.append('pull') self.addArguments(args, self.options['global']) args.append('-v') + if self.getPlugin().getPreferences("PullUpdate"): + args.append('--update') # find the root of the repo repodir = self.splitPath(name)[0] @@ -1749,6 +1752,15 @@ @param name directory name on which to base the changegroup (string) """ + dname, fname = self.splitPath(name) + + # find the root of the repo + repodir = str(dname) + while not os.path.isdir(os.path.join(repodir, self.adminDir)): + repodir = os.path.dirname(repodir) + if repodir == os.sep: + return + file = QFileDialog.getOpenFileName(\ None, self.trUtf8("Preview changegroup"), @@ -1799,7 +1811,7 @@ """ Public method to apply changegroup files. - @param name file/directory name (string) + @param name directory name (string) """ dname, fname = self.splitPath(name) @@ -1901,7 +1913,7 @@ while not os.path.isdir(os.path.join(repodir, self.adminDir)): repodir = os.path.dirname(repodir) if repodir == os.sep: - return False + return dia = HgDialog(\ self.trUtf8('Removing files from the Mercurial repository only')) @@ -1913,6 +1925,50 @@ else: self.__forgotNames.append(name) + def hgBackout(self, name): + """ + Public method used to backout an earlier changeset from the Mercurial repository. + + @param name directory name (string or list of strings)) + """ + dname, fname = self.splitPath(name) + + # find the root of the repo + repodir = str(dname) + while not os.path.isdir(os.path.join(repodir, self.adminDir)): + repodir = os.path.dirname(repodir) + if repodir == os.sep: + return + + dlg = HgBackoutDialog(self.tagsList, self.branchesList) + if dlg.exec_() == QDialog.Accepted: + rev, merge, date, user, message = dlg.getParameters() + if not rev: + QMessageBox.warning(None, + self.trUtf8("Backing out changeset"), + self.trUtf8("""No revision given. Aborting...""")) + return + + args = [] + args.append('backout') + args.append('-v') + if merge: + args.append('--merge') + if date: + args.append('--date') + args.append(date) + if user: + args.append('--user') + args.append(user) + args.append('--message') + args.append(message) + args.append(rev) + + dia = HgDialog(self.trUtf8('Backing out changeset')) + res = dia.startProcess(args, repodir) + if res: + dia.exec_() + ############################################################################ ## Methods to get the helper objects are below. ############################################################################