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

history: add 'show revision ancestry' feature

closes #192

The grapher logic needs a _major_ cleanup in the next release.

Changeset 57dfee27f841

Parent 53e7dfe36d1f

by Steve Borho

Changes to 3 files · Browse files at 57dfee27f841 Showing diff from parent 53e7dfe36d1f Diff from another changeset...

Change 1 of 2 Show Entire File hggtk/​history.py Stacked
 
167
168
169
170
 
 
 
 
 
171
172
173
 
304
305
306
 
 
 
 
 
 
307
308
309
 
167
168
169
 
170
171
172
173
174
175
176
177
 
308
309
310
311
312
313
314
315
316
317
318
319
@@ -167,7 +167,11 @@
  button.connect('toggled', self._filter_selected, 'tagged')   menu.append(button)   - button = gtk.RadioMenuItem(button, _('Show Parent Revisions')) + button = gtk.RadioMenuItem(button, _('Show Revision Ancestry')) + button.connect('toggled', self._filter_selected, 'ancestry') + menu.append(button) + + button = gtk.RadioMenuItem(button, _('Show Working Parents'))   button.connect('toggled', self._filter_selected, 'parents')   menu.append(button)   @@ -304,6 +308,12 @@
  elif self._filter == "no_merges":   self.opts['no_merges'] = True   self.graphview.refresh(False, [], self.opts) + elif self._filter == "ancestry": + if not self.currow: + return + range = [self.currow[treemodel.REVID], 0] + sopts = {'noheads': True, 'revrange': range} + self.graphview.refresh(True, None, sopts)   elif self._filter == "tagged":   tagged = []   for t, r in self.repo.tagslist():
 
14
15
16
17
 
18
19
20
 
37
38
39
 
 
 
40
41
42
 
14
15
16
 
17
18
19
20
 
37
38
39
40
41
42
43
44
45
@@ -14,7 +14,7 @@
 def __get_parents(repo, rev):   return [x for x in repo.changelog.parentrevs(rev) if x != nullrev]   -def revision_grapher(repo, start_rev, stop_rev, branch=None): +def revision_grapher(repo, start_rev, stop_rev, branch=None, noheads=False):   """incremental revision grapher     This generator function walks through the revision history from @@ -37,6 +37,9 @@
  while curr_rev >= stop_rev:   # Compute revs and next_revs.   if curr_rev not in revs: + if noheads and curr_rev != start_rev: + curr_rev -= 1 + continue   if branch:   ctx = repo.changectx(curr_rev)   if ctx.branch() != branch:
 
135
136
137
138
 
 
 
139
140
141
 
135
136
137
 
138
139
140
141
142
143
@@ -135,7 +135,9 @@
  end = start   else:   start = len(self.repo.changelog) - 1 - self.grapher = revision_grapher(self.repo, start, end, pats) + noheads = opts.get('noheads', False) + self.grapher = revision_grapher(self.repo, start, end, pats, + noheads)   elif opts.get('revs', None):   self.grapher = dumb_log_generator(self.repo, opts['revs'])   else: