Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.8, 0.8.1, and 0.8.2

history: apply filename filter to (visual) diffs

When revision graph is filtered by file patterns, apply those
filters to diffs between revisions. Required some cleanup of
pattern usage. I'm still not very happy with how complicated
the search criteria code is.

Fixes #66

Changeset e7ccddab9657

Parent 723014e69843

by Steve Borho

Changes to 3 files · Browse files at e7ccddab9657 Showing diff from parent 723014e69843 Diff from another changeset...

 
660
661
662
663
 
664
665
 
666
667
668
 
660
661
662
 
663
664
 
665
666
667
668
@@ -660,9 +660,9 @@
  if self.glog_parent:   # If this changeset browser is embedded in glog, send   # send this event to the main app - opts = {'filehist' : self.curfile} + opts = {'pats' : [self.curfile]}   self.glog_parent.custombutton.set_active(True) - self.glog_parent.graphview.refresh(True, None, opts) + self.glog_parent.reload_log(opts)   else:   # Else launch our own GLog instance   import history
Change 1 of 5 Show Entire File hggtk/​history.py Stacked
 
196
197
198
199
 
200
201
202
203
204
 
205
206
207
 
210
211
212
213
 
214
215
216
 
270
271
272
273
 
274
275
276
 
281
282
283
284
285
 
286
287
288
289
 
 
290
291
292
 
465
466
467
468
469
470
 
471
472
473
474
475
476
 
 
477
478
479
480
481
482
483
 
 
 
 
484
485
486
 
196
197
198
 
199
200
201
202
 
 
203
204
205
206
 
209
210
211
 
212
213
214
215
 
269
270
271
 
272
273
274
275
 
280
281
282
 
283
284
285
286
 
 
287
288
289
290
291
 
464
465
466
 
467
 
468
469
470
471
472
473
 
474
475
476
477
478
479
480
481
 
482
483
484
485
486
487
488
@@ -196,12 +196,11 @@
  self.curfile = None   self.opts['rev'] = [] # This option is dangerous - used directly by hg   self.opts['revs'] = None - os.chdir(self.repo.root) # paths relative to repo root do not work otherwise + os.chdir(self.repo.root) # for paths relative to repo root     if 'filehist' in self.opts:   self.custombutton.set_active(True) - self.graphview.refresh(True, None, self.opts) - del self.opts['filehist'] + self.reload_log({'pats' : [self.opts['filehist']]})   elif 'revrange' in self.opts:   self.custombutton.set_active(True)   self.graphview.refresh(True, None, self.opts) @@ -210,7 +209,7 @@
  self.reload_log()   elif self.pats:   self.custombutton.set_active(True) - self.graphview.refresh(False, self.pats, self.opts) + self.reload_log({'pats' : self.pats})   else:   self.reload_log()   @@ -270,7 +269,7 @@
    def reload_log(self, filteropts={}):   """Send refresh event to treeview object""" - os.chdir(self.repo.root) # paths relative to repo root do not work otherwise + os.chdir(self.repo.root) # for paths relative to repo root   self.nextbutton.set_sensitive(True)   self.allbutton.set_sensitive(True)   self.opts['rev'] = [] @@ -281,12 +280,12 @@
  self.opts['date'] = filteropts.get('date', None)   self.opts['keyword'] = filteropts.get('keyword', [])   if filteropts: - branch = filteropts.get('branch', None)   if 'revrange' in filteropts or 'branch' in filteropts: + branch = filteropts.get('branch', None)   self.graphview.refresh(True, branch, self.opts)   else: - pattern = filteropts.get('pats', []) - self.graphview.refresh(False, pattern, self.opts) + self.pats = filteropts.get('pats', []) + self.graphview.refresh(False, self.pats, self.opts)   elif self._filter == "all":   self.graphview.refresh(True, None, self.opts)   elif self._filter == "only_merges": @@ -465,22 +464,25 @@
    def _diff_revs(self, menuitem):   from status import GStatus - from gtools import cmdtable   rev0, rev1 = self._revs - statopts = self.merge_opts(cmdtable['gstatus|gst'][1], + statopts = self.merge_opts(commands.table['^status|st'][1],   ('include', 'exclude', 'git'))   statopts['rev'] = ['%u:%u' % (rev0, rev1)]   statopts['modified'] = True   statopts['added'] = True   statopts['removed'] = True - dialog = GStatus(self.ui, self.repo, self.cwd, [], statopts, False) + dialog = GStatus(self.ui, self.repo, self.cwd, self.pats, + statopts, False)   dialog.display()   return True     def _vdiff_selected(self, menuitem):   rev0, rev1 = self._revs   self.opts['rev'] = ["%s:%s" % (rev0, rev1)] - self._diff_file(None, '') + if len(self.pats) == 1: + self._diff_file(None, self.pats[0]) + else: + self._diff_file(None, '')     def _email_revs(self, menuitem):   from hgemail import EmailDialog
Change 1 of 1 Show Entire File hggtk/​status.py Stacked
 
148
149
150
151
152
153
154
155
156
157
 
 
 
158
159
160
 
148
149
150
 
 
 
 
 
 
 
151
152
153
154
155
156
@@ -148,13 +148,9 @@
  def get_title(self):   root = os.path.basename(self.repo.root)   revs = self.opts.get('rev') - if revs: - r = ':'.join(revs) - return ' '.join([root, 'status', r]) - elif self.pats: - return root + ' filtered status' - else: - return root + ' status' + name = self.pats and 'filtered status' or 'status' + r = revs and ':'.join(revs) or '' + return ' '.join([root, name, r])     def get_icon(self):   return 'menushowchanged.ico'