diff --git a/app/models/commit_range.rb b/app/models/commit_range.rb
index b98f939a1158c3e9a1f1c13b6e1b11cd6bcb1885..fb1f6d09be6817d750f4089bf079fceadcb07bd1 100644
--- a/app/models/commit_range.rb
+++ b/app/models/commit_range.rb
@@ -61,11 +61,14 @@ class CommitRange
   end
 
   def to_reference(from_project = nil)
+    # Not using to_s because we want the full SHAs
+    reference = sha_from + notation + sha_to
+
     if cross_project_reference?(from_project)
-      "#{project.to_reference}@#{to_s}"
-    else
-      to_s
+      reference = project.to_reference + '@' + reference
     end
+
+    reference
   end
 
   # Returns a String for use in a link's title attribute
diff --git a/spec/lib/gitlab/markdown/commit_range_reference_filter_spec.rb b/spec/lib/gitlab/markdown/commit_range_reference_filter_spec.rb
index 7274cb309a0a5fb9cced19f7d463cd7de3df5b4a..1593088a0947b060bb5ded5d414c403fb5ad6d71 100644
--- a/spec/lib/gitlab/markdown/commit_range_reference_filter_spec.rb
+++ b/spec/lib/gitlab/markdown/commit_range_reference_filter_spec.rb
@@ -9,8 +9,7 @@ module Gitlab::Markdown
     let(:commit2) { project.commit("HEAD~2") }
 
     it 'requires project context' do
-      expect { described_class.call('Commit Range 1c002d..d200c1', {}) }.
-        to raise_error(ArgumentError, /:project/)
+      expect { described_class.call('') }.to raise_error(ArgumentError, /:project/)
     end
 
     %w(pre code a style).each do |elem|
diff --git a/spec/models/commit_range_spec.rb b/spec/models/commit_range_spec.rb
index 2d347a335a1d7ca041bd6f13f898058cf7d858c3..e7fb43ff3356f6245e4e9ce5808ce644b04b6c72 100644
--- a/spec/models/commit_range_spec.rb
+++ b/spec/models/commit_range_spec.rb
@@ -1,6 +1,12 @@
 require 'spec_helper'
 
 describe CommitRange do
+  describe 'modules' do
+    subject { described_class }
+
+    it { is_expected.to include_module(Referable) }
+  end
+
   let(:sha_from) { 'f3f85602' }
   let(:sha_to)   { 'e86e1013' }
 
@@ -11,10 +17,14 @@ describe CommitRange do
     expect { described_class.new("Foo") }.to raise_error
   end
 
-  describe 'modules' do
-    subject { described_class }
+  describe '#to_s' do
+    it 'is correct for three-dot syntax' do
+      expect(range.to_s).to eq "#{sha_from[0..7]}...#{sha_to[0..7]}"
+    end
 
-    it { is_expected.to include_module(Referable) }
+    it 'is correct for two-dot syntax' do
+      expect(range2.to_s).to eq "#{sha_from[0..7]}..#{sha_to[0..7]}"
+    end
   end
 
   describe '#to_reference' do
@@ -34,16 +44,6 @@ describe CommitRange do
     end
   end
 
-  describe '#to_s' do
-    it 'is correct for three-dot syntax' do
-      expect(range.to_s).to eq "#{sha_from[0..7]}...#{sha_to[0..7]}"
-    end
-
-    it 'is correct for two-dot syntax' do
-      expect(range2.to_s).to eq "#{sha_from[0..7]}..#{sha_to[0..7]}"
-    end
-  end
-
   describe '#reference_title' do
     it 'returns the correct String for three-dot ranges' do
       expect(range.reference_title).to eq "Commits #{sha_from} through #{sha_to}"