def refresh(self): repo = self.repo oldtags, oldparents = self.tagrevs, self.wcparents oldbookmarks = self.bookmarkrevs try: oldbranches = [repo[n].rev() for n in self.branchtags.values()] except error.RepoLookupError: oldbranches = [] hglib.invalidaterepo(repo) self.longsummary = repo.ui.configbool('tortoisehg', 'longsummary', False) self.set_author_color() self.hidetags = hglib.gethidetags(repo.ui) try: self.wcparents = [x.rev() for x in repo.parents()] self.tagrevs = [repo[r].rev() for t, r in repo.tagslist()] self.branchtags = repo.branchtags() self.curbookmark = repo._bookmarkcurrent self.bookmarkrevs = [repo[n].rev() for n in repo._bookmarks.values()] except util.Abort: pass brevs = [repo[n].rev() for n in self.branchtags.values()] allrevs = set(oldtags + oldparents + oldbranches + oldbookmarks + brevs + self.wcparents + self.tagrevs + self.bookmarkrevs) for rev in allrevs: if rev in self.revisions: del self.revisions[rev] self.mqpatches = [] if hasattr(self.repo, 'mq'): self.repo.mq.parse_series() self.mqpatches = [p.name for p in self.repo.mq.applied]
def search_thread(self, q, tgts, copy): hglib.invalidaterepo(self.repo) srcs = [] audit_path = util.path_auditor(self.repo.root) m = cmdutil.match(self.repo) for abs in self.repo.walk(m): target = self.repo.wjoin(abs) good = True try: audit_path(abs) except: good = False status = self.repo.dirstate[abs] if (not good or not os.path.lexists(target) or (os.path.isdir(target) and not os.path.islink(target))): srcs.append(abs) elif copy and status == 'n': # looking for copies, so any revisioned file is a # potential source (yes, this will be expensive) # Added and removed files are not considered as copy # sources. srcs.append(abs) if copy: simularity = 1.0 else: simularity = self.adjustment.get_value() / 100.0; gen = similar.findrenames(self.repo, tgts, srcs, simularity) for old, new, score in gen: q.put( [old, new, '%d%%' % (score*100)] )
def command_done(self, returncode, useraborted, type): hglib.invalidaterepo(self.repo) merged = undo = True if type == 'merge': if returncode == 0: self.cmd.set_result(_('Merged successfully'), style='ok') elif useraborted: self.cmd.set_result(_('Canceled merging'), style='error') else: self.cmd.set_result(_('Failed to merge'), style='error') if len(self.repo.parents()) == 1: return merged = False focus = 'commit' elif type == 'undo': if returncode == 0: self.cmd.set_result(_('Undo successfully'), style='ok') elif useraborted: self.cmd.set_result(_('Canceled undo'), style='error') else: self.cmd.set_result(_('Failed to undo'), style='error') undo = False focus = 'merge' else: raise _('unexpected type: %s') % type self.discard.set_sensitive(merged) self.mergetool.set_sensitive(merged) self.mergelabel.set_sensitive(merged) self.buttons['merge'].set_sensitive(merged) self.buttons['undo'].set_sensitive(undo) self.buttons['commit'].set_sensitive(undo) self.buttons[focus].grab_focus()
def refresh(self): hglib.invalidaterepo(self.repo) matcher = match.always(self.repo.root, self.repo.root) try: unknown = self.repo.status(match=matcher, unknown=True)[4] except (EnvironmentError, util.Abort), inst: gdialog.Prompt(_('Error while reading status'), hglib.toutf(str(inst)), self).run() return
def cmd_done(self, returncode, useraborted, noemit=False): if returncode == 0: if self.cmd.get_pbar(): self.cmd.set_result(_('Succeed'), style='ok') elif useraborted: self.cmd.set_result(_('Canceled'), style='error') else: self.cmd.set_result(_('Failed'), style='error') hglib.invalidaterepo(self.repo) self.refresh() if not noemit: self.emit('repo-invalidated')
def unknown_thread(self, q): hglib.invalidaterepo(self.repo) matcher = match.always(self.repo.root, self.repo.root) status = self.repo.status(node1=self.repo.dirstate.parents()[0], node2=None, match=matcher, ignored=False, clean=False, unknown=True) (modified, added, removed, deleted, unknown, ignored, clean) = status for u in unknown: q.put( u ) for a in added: if not self.repo.dirstate.copied(a): q.put( a )
def show_diff(self, selection): 'User selected a row in the candidate tree' hglib.invalidaterepo(self.repo) model, cpaths = selection.get_selected_rows() sensitive = cpaths and True or False self.acceptbtn.set_sensitive(sensitive) self.buf.set_text('') bufiter = self.buf.get_start_iter() for path in cpaths: row = model[path] src, usrc, dest, udest, percent, sensitive = row if not sensitive: continue ctx = self.repo['.'] aa = self.repo.wread(dest) rr = ctx.filectx(src).data() opts = mdiff.defaultopts difftext = mdiff.unidiff(rr, '', aa, '', src, dest, None, opts=opts) if not difftext: l = _('== %s and %s have identical contents ==\n\n') % (src, dest) self.buf.insert(bufiter, l) continue difflines = difftext.splitlines(True) for line in difflines: line = hglib.toutf(line) if line.startswith('---') or line.startswith('+++'): self.buf.insert_with_tags_by_name(bufiter, line, 'header') elif line.startswith('-'): line = hglib.diffexpand(line) self.buf.insert_with_tags_by_name(bufiter, line, 'removed') elif line.startswith('+'): line = hglib.diffexpand(line) self.buf.insert_with_tags_by_name(bufiter, line, 'added') elif line.startswith('@@'): self.buf.insert_with_tags_by_name(bufiter, line, 'position') else: line = hglib.diffexpand(line) self.buf.insert(bufiter, line)
def accept_match(self): 'User pressed "accept match" button' hglib.invalidaterepo(self.repo) wctx = self.repo[None] canmodel, upaths = self.cantree.get_selection().get_selected_rows() for path in upaths: row = canmodel[path] src, usrc, dest, udest, percent, sensitive = row if not sensitive: continue if not os.path.exists(self.repo.wjoin(src)): # Mark missing rename source as removed wctx.remove([src]) wctx.copy(src, dest) shlib.shell_notify([self.repo.wjoin(src), self.repo.wjoin(dest)]) if self.notify_func: self.notify_func() # Mark all rows with this target file as non-sensitive for row in canmodel: if row[2] == dest: row[5] = False self.refresh()
self.update_check_count() self.stbar.end() self.stbar.set_text(self.status_error) return False self.repo = self.newrepo self.ui = self.repo.ui self.refresh_file_tree() self.update_check_count() self.refresh_complete() self.ready = True self.stbar.end() return False self.set_preview_tab_name() repo = self.repo hglib.invalidaterepo(repo) if hasattr(repo, 'mq'): self.mqmode = repo.mq.applied and repo['.'] == repo['qtip'] self.set_title(self.get_title()) self.ready = False self.stbar.begin() thread = threading.Thread(target=get_repo_status) thread.setDaemon(True) thread.start() gobject.timeout_add(50, status_wait, thread) return True def nodes(self): return (self._node1, self._node2)