diff --git a/modules/openstack_project/files/git/cgitrc b/modules/openstack_project/files/git/cgitrc
index a8d7bb63e5..3ebc7e0791 100644
--- a/modules/openstack_project/files/git/cgitrc
+++ b/modules/openstack_project/files/git/cgitrc
@@ -17,6 +17,9 @@ cache-root-ttl=1
 # Specify some default clone prefixes
 clone-prefix=git://git.openstack.org https://git.openstack.org
 
+# Specify a command which will be invoked to format commit messages
+commit-filter=/usr/local/bin/commit-filter.sh
+
 # Specify the css url
 css=/static/openstack.css
 
diff --git a/modules/openstack_project/files/git/commit-filter.sh b/modules/openstack_project/files/git/commit-filter.sh
new file mode 100644
index 0000000000..d780d6738a
--- /dev/null
+++ b/modules/openstack_project/files/git/commit-filter.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+sed -re '
+s`(I[0-9a-f]{8,40})`<a href="https://review.openstack.org/\#q,\1,n,z">\0</a>`g
+s`\b([0-9a-fA-F]{8,40})\b`<a href="./?id=\1">\0</a>`g
+s`(\b[Bb]ug\b|\b[Ll][Pp]\b)[ \t#:]*([0-9]+)`<a href="https://code.launchpad.net/bugs/\2">\0</a>`g
+s`(\b[Bb]lue[Pp]rint\b|\b[Bb][Pp]\b)[ \t#:]*([A-Za-z0-9\.-]+)`<a href="https://blueprints.launchpad.net/openstack/?searchtext=\2">\0</a>`g
+'
diff --git a/modules/openstack_project/manifests/git_backend.pp b/modules/openstack_project/manifests/git_backend.pp
index 83819a1099..a6d53f4122 100644
--- a/modules/openstack_project/manifests/git_backend.pp
+++ b/modules/openstack_project/manifests/git_backend.pp
@@ -127,4 +127,11 @@ class openstack_project::git_backend (
     require => File['/var/www/cgit/static'],
   }
 
+  file { '/usr/local/bin/commit-filter.sh':
+    ensure  => present,
+    owner   => 'root',
+    group   => 'root',
+    mode    => '0755',
+    source  => 'puppet:///modules/openstack_project/git/commit-filter.sh',
+  }
 }