diff --git a/cloudpebble/ide/api/project.py b/cloudpebble/ide/api/project.py
index 6b3d59f..0cae894 100644
--- a/cloudpebble/ide/api/project.py
+++ b/cloudpebble/ide/api/project.py
@@ -483,13 +483,19 @@ def _serialize_build(build, project):
else:
download = build.package_url if project.project_type == 'package' else build.pbw_url
log = build.build_log_url
+ commit = build.commit_sha
+ commit_url = None
+ if commit and project.github_repo:
+ sha = commit[:-6] if commit.endswith('-dirty') else commit
+ commit_url = 'https://github.com/%s/commit/%s' % (project.github_repo, sha)
return {
'uuid': build.uuid,
'state': build.state,
'started': str(build.started),
'finished': str(build.finished) if build.finished else None,
'id': build.id,
- 'commit': build.commit_sha,
+ 'commit': commit,
+ 'commit_url': commit_url,
'download': download,
'log': log,
'build_dir': build.get_url(),
diff --git a/cloudpebble/ide/static/ide/js/compile.js b/cloudpebble/ide/static/ide/js/compile.js
index 3f09689..adbeddd 100644
--- a/cloudpebble/ide/static/ide/js/compile.js
+++ b/cloudpebble/ide/static/ide/js/compile.js
@@ -25,7 +25,13 @@ CloudPebble.Compile = (function() {
tr.append($('
' + (build.id === null ? '?' : build.id) + ' | '));
tr.append($('' + CloudPebble.Utils.FormatDatetime(build.started) + ' | '));
tr.append($('' + COMPILE_SUCCESS_STATES[build.state].english + ' | '));
- tr.append($('').attr('title', build.commit || '').text(format_commit(build.commit)));
+ var commit_td = $(' | ').attr('title', build.commit || '');
+ if (build.commit_url) {
+ commit_td.append($('').attr('href', build.commit_url).text(format_commit(build.commit)));
+ } else {
+ commit_td.text(format_commit(build.commit));
+ }
+ tr.append(commit_td);
var pbw_badge = $(' | ').appendTo(tr);
if (build.state == 3) {
pbw_badge.append($('')
@@ -342,8 +348,13 @@ CloudPebble.Compile = (function() {
} else {
pane.find('#last-compilation, .build-stats').removeClass('hide');
pane.find('#last-compilation-started').text(CloudPebble.Utils.FormatDatetime(build.started));
- pane.find('#last-compilation-commit').toggleClass('hide', !build.commit)
- .find('span').attr('title', build.commit || '').text(format_commit(build.commit));
+ var commit_link = pane.find('#last-compilation-commit').toggleClass('hide', !build.commit).find('a');
+ commit_link.attr('title', build.commit || '').text(format_commit(build.commit));
+ if (build.commit_url) {
+ commit_link.attr('href', build.commit_url);
+ } else {
+ commit_link.removeAttr('href');
+ }
if(build.state > 1) {
pane.find('#last-compilation-time').removeClass('hide').find('span').text(CloudPebble.Utils.FormatInterval(build.started, build.finished));
pane.find('#last-compilation-log').removeClass('hide').attr('href', build.log).off('click').click(function(e) {
diff --git a/cloudpebble/ide/templates/ide/project/compile.html b/cloudpebble/ide/templates/ide/project/compile.html
index bd031bc..456b4dc 100644
--- a/cloudpebble/ide/templates/ide/project/compile.html
+++ b/cloudpebble/ide/templates/ide/project/compile.html
@@ -94,7 +94,7 @@ {% trans 'Last build' %}
April 17, 2013, 11:50 a.m.
0.98 seconds
Successful
-
+
|