# HG changeset patch # User osimons # Date 1286740477 0 # Node ID 70aebfc3a45fb375155659b709baed9c3a8c87a9 # Parent 7c80375d4817270b9845fe2256482162525173c2 Use `display_rev` strategy instead of just `rev` as that displays much nicer for DVCS sytems with long hash revisions numbers using Trac 0.12. No visual differences for Trac 0.11 users. Thanks to Felix Schwarz and trbs for patches and testing. Closes #610. diff --git a/bitten/templates/bitten_build.html b/bitten/templates/bitten_build.html --- a/bitten/templates/bitten_build.html +++ b/bitten/templates/bitten_build.html @@ -30,7 +30,7 @@
Triggered by:
- Changeset [$build.rev] by + Changeset [$build.display_rev] by ${format_author(build.chgset_author)}
Built by:
diff --git a/bitten/templates/bitten_config.html b/bitten/templates/bitten_config.html --- a/bitten/templates/bitten_config.html +++ b/bitten/templates/bitten_config.html @@ -87,7 +87,7 @@

Latest builds

@@ -179,7 +179,7 @@
- [$youngest_rev.id] + [$youngest_rev.display_rev] by ${format_author(youngest_rev.author)}

$youngest_rev.date

$youngest_rev.message

- [$rev_num] + [$rev.display_rev] diff --git a/bitten/tests/web_ui.py b/bitten/tests/web_ui.py --- a/bitten/tests/web_ui.py +++ b/bitten/tests/web_ui.py @@ -48,6 +48,7 @@ get_node=lambda path, rev=None: Mock(get_history=lambda: [], isdir=True), normalize_path=lambda path: path, + normalize_rev=lambda rev: rev, sync=lambda: None, ) self.repos.authz = Mock(has_permission=lambda path: True, assert_permission=lambda path: None) @@ -87,7 +88,8 @@ get_history=lambda: [('trunk', rev, 'edit') for rev in range(123, 111, -1)]) self.repos = Mock(get_node=lambda path, rev=None: root, - sync=lambda: None, normalize_path=lambda path: path) + sync=lambda: None, normalize_path=lambda path: path, + normalize_rev=lambda rev: rev) self.repos.authz = Mock(has_permission=lambda path: True, assert_permission=lambda path: None) module = BuildConfigController(self.env) @@ -125,7 +127,8 @@ revision_list = [('trunk', revision, 'edit') for revision in revision_ids] root = Mock(get_entries=lambda: ['foo'], get_history=lambda: revision_list) self.repos = Mock(get_node=lambda path, rev=None: root, - sync=lambda: None, normalize_path=lambda path: path) + sync=lambda: None, normalize_path=lambda path: path, + normalize_rev=lambda rev: rev) self.repos.authz = Mock(has_permission=lambda path: True, assert_permission=lambda path: None) module = BuildConfigController(self.env) @@ -151,7 +154,8 @@ get_history=lambda: [('trunk', rev, 'edit') for rev in range(123, 110, -1)]) self.repos = Mock(get_node=lambda path, rev=None: root, - sync=lambda: None, normalize_path=lambda path: path) + sync=lambda: None, normalize_path=lambda path: path, + normalize_rev=lambda rev: rev) self.repos.authz = Mock(has_permission=lambda path: True, assert_permission=lambda path: None) module = BuildConfigController(self.env) @@ -203,6 +207,7 @@ self.repos = Mock(get_node=lambda path, rev=None: root, sync=lambda: None, normalize_path=lambda path: path, + normalize_rev=lambda rev: rev, get_changeset=lambda rev: Mock(author='joe')) self.repos.authz = Mock(has_permission=lambda path: True, assert_permission=lambda path: None) diff --git a/bitten/web_ui.py b/bitten/web_ui.py --- a/bitten/web_ui.py +++ b/bitten/web_ui.py @@ -32,6 +32,7 @@ from trac.web.chrome import INavigationContributor, ITemplateProvider, \ add_link, add_stylesheet, add_ctxtnav, \ prevnext_nav, add_script +from trac.versioncontrol import NoSuchChangeset from trac.wiki import wiki_to_html, wiki_to_oneliner from bitten.api import ILogFormatter, IReportChartGenerator, IReportSummarizer from bitten.master import BuildMaster @@ -261,6 +262,7 @@ chgset = repos.get_changeset(rev) config_data['youngest_rev'] = { 'id': rev, 'href': req.href.changeset(rev), + 'display_rev': repos.normalize_rev(rev), 'author': chgset.author or 'anonymous', 'date': format_datetime(chgset.date), 'message': wiki_to_oneliner( @@ -458,6 +460,7 @@ revisions.append(rev) builds.setdefault(rev, {}) builds[rev].setdefault('href', req.href.changeset(rev)) + builds[rev].setdefault('display_rev', repos.normalize_rev(rev)) if build and build.status != Build.PENDING: build_data = _get_build_data(self.env, req, build) build_data['steps'] = [] @@ -603,6 +606,7 @@ _has_permission(repos, config.path, req.perm, True) chgset = repos.get_changeset(build.rev) data['build']['chgset_author'] = chgset.author + data['build']['display_rev'] = repos.normalize_rev(build.rev) add_script(req, 'common/js/folding.js') add_script(req, 'bitten/tabset.js') @@ -657,9 +661,10 @@ db=db): errors += [(step.name, error) for error in step.errors] - + display_rev = repos.normalize_rev(rev) yield (event_kinds[status], to_datetime(stopped, utc), None, - (id_, config, label, rev, platform, status, errors)) + (id_, config, label, display_rev, platform, status, + errors)) def render_timeline_event(self, context, field, event): id_, config, label, rev, platform, status, errors = event[3]