From baf12f45d8705693755a8343e53525e92dc26ca6 Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Wed, 1 Jul 2015 11:02:37 +0200
Subject: [PATCH] Repository#blob_at should return nil for 00000000... sha

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
---
 app/models/repository.rb       | 6 ++++--
 spec/models/repository_spec.rb | 8 ++++++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/app/models/repository.rb b/app/models/repository.rb
index b32e8847bb5..cab3e896159 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -8,7 +8,7 @@ class Repository
     @project = project
 
     if path_with_namespace
-      @raw_repository = Gitlab::Git::Repository.new(path_to_repo) 
+      @raw_repository = Gitlab::Git::Repository.new(path_to_repo)
       @raw_repository.autocrlf = :input
     end
 
@@ -173,7 +173,9 @@ class Repository
   end
 
   def blob_at(sha, path)
-    Gitlab::Git::Blob.find(self, sha, path)
+    unless Gitlab::Git.blank_ref?(sha)
+      Gitlab::Git::Blob.find(self, sha, path)
+    end
   end
 
   def blob_by_oid(oid)
diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb
index f41e5a97ca3..77ceb6c8adc 100644
--- a/spec/models/repository_spec.rb
+++ b/spec/models/repository_spec.rb
@@ -25,4 +25,12 @@ describe Repository do
 
     it { is_expected.to eq('c1acaa58bbcbc3eafe538cb8274ba387047b69f8') }
   end
+
+  describe :blob_at do
+    context 'blank sha' do
+      subject { repository.blob_at(Gitlab::Git::BLANK_SHA, '.gitignore') }
+
+      it { is_expected.to be_nil }
+    end
+  end
 end
-- 
GitLab