def _hg_revert(self, files): wfiles = [self.repo.wjoin(x) for x in files] if self.count_revs() > 1: Prompt('Nothing Reverted', 'Revert is not enabled when multiple revisions are specified.', self).run() return # Create new opts, so nothing unintented gets through. # commands.table revert key changed after 0.9.5, in change d4ec6d61b3ee key = '^revert' in commands.table and '^revert' or 'revert' revertopts = self.merge_opts(commands.table[key][1], ('include', 'exclude', 'rev')) def dohgrevert(): commands.revert(self.ui, self.repo, *wfiles, **revertopts) # TODO: Ask which revision when multiple parents (currently just shows abort message) # TODO: Don't need to prompt when reverting added or removed files if self.count_revs() == 1: # rev options needs extra tweaking since is not an array for revert command revertopts['rev'] = revertopts['rev'][0] dialog = Confirm('Revert', files, self, 'Revert files to revision ' + revertopts['rev'] + '?') else: dialog = Confirm('Revert', files, self) if dialog.run() == gtk.RESPONSE_YES: success, outtext = self._hg_call_wrapper('Revert', dohgrevert) if success: shell_notify(wfiles) self.reload_status()
def _hg_commit(self, files): if not self.repo.ui.config('ui', 'username'): Prompt('Username not configured', 'Please enter a username', self).run() from thgconfig import ConfigDialog dlg = ConfigDialog(self.repo.root, False) dlg.show_all() dlg.focus_field('ui.username') dlg.run() dlg.hide() self.repo = hg.repository(ui.ui(), self.repo.root) self.ui = self.repo.ui # call the threaded CmdDialog to do the commit, so the the large commit # won't get locked up by potential large commit. CmdDialog will also # display the progress of the commit operation. cmdline = ["hg", "commit", "--verbose", "--repository", self.repo.root] if self.opts['addremove']: cmdline += ['--addremove'] cmdline += ['--message', fromutf(self.opts['message'])] cmdline += [self.repo.wjoin(x) for x in files] dialog = CmdDialog(cmdline, True) dialog.set_transient_for(self) dialog.run() dialog.hide() # refresh overlay icons and commit dialog if dialog.return_code() == 0: self.text.set_buffer(gtk.TextBuffer()) self._update_recent_messages(self.opts['message']) shell_notify([self.cwd] + files) self._last_commit_id = self._get_tip_rev(True) self.reload_status()
def _do_update(self): rev = self._rev_input.get_text() overwrite = self._overwrite.get_active() if not rev: error_dialog(self, "Can't update", "please enter revision to update to") return response = question_dialog(self, "Really want to update?", "to revision %s" % rev) if response != gtk.RESPONSE_YES: return cmdline = ['hg', 'update', '-R', self.root, '--rev', rev, '--verbose'] if overwrite: cmdline.append('--clean') from hgcmd import CmdDialog dlg = CmdDialog(cmdline) dlg.run() dlg.hide() if self.notify_func: self.notify_func(self.notify_args) self._refresh() shell_notify([self.cwd])
def _hg_add(self, files): wfiles = [self.repo.wjoin(x) for x in files] # Create new opts, so nothing unintented gets through addopts = self.merge_opts(commands.table['^add'][1], ('include', 'exclude')) def dohgadd(): commands.add(self.ui, self.repo, *wfiles, **addopts) success, outtext = self._hg_call_wrapper('Add', dohgadd) if success: shell_notify(wfiles) self.reload_status()
def _do_unmerge(self): rev = self._rev_input.get_text() if not rev: error_dialog(self, "Can't unmerge", "please select revision to unmerge") return response = question_dialog(self, "Undo merge", "and checkout revision %s?" % rev) if response != gtk.RESPONSE_YES: return cmdline = ['hg', 'update', '-R', self.root, '--rev', rev, '--clean', '--verbose'] dlg = CmdDialog(cmdline) dlg.run() dlg.hide() if self.notify_func: self.notify_func(self.notify_args) shell_notify([self.cwd]) self._refresh()
def _do_merge(self): rev = self._rev_input.get_text() force = self._chbox_force.get_active() if not rev: error_dialog(self, "Can't merge", "please enter revision to merge") return response = question_dialog(self, "Really want to merge?", "with revision %s" % rev) if response != gtk.RESPONSE_YES: return cmdline = ['hg', 'merge', '-R', self.root, '--rev', rev] if force: cmdline.append("--force") dlg = CmdDialog(cmdline) dlg.run() dlg.hide() shell_notify([self.cwd]) if self.notify_func: self.notify_func(self.notify_args) self._refresh()
def _notify(self, ret, *args): import time time.sleep(0.5) # give fs some time to pick up changes shell_notify([self.cwd])