Example #1
0
    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()
Example #2
0
    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()
Example #3
0
    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])
Example #4
0
 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()
Example #5
0
    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()
Example #6
0
    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()
Example #7
0
 def _notify(self, ret, *args):
     import time
     time.sleep(0.5)     # give fs some time to pick up changes
     shell_notify([self.cwd])