diff --git a/app/models/repository.rb b/app/models/repository.rb
index 7ea9f1459a01fa8b1b84fb3e23c1fa9ef1fa1103..4e9fe759fdc135c649fe90bd2bae6da8ef1f7068 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -944,7 +944,7 @@ class Repository
       if is_enabled
         raw_repository.is_ancestor?(ancestor_id, descendant_id)
       else
-        merge_base_commit(ancestor_id, descendant_id) == ancestor_id
+        rugged_is_ancestor?(ancestor_id, descendant_id)
       end
     end
   end
diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb
index 88529ba2c47c3ee57c6baa7555bd9260aef53719..70d793f8e4a19b19cccf9212c1362b4225e36777 100644
--- a/lib/gitlab/git/repository.rb
+++ b/lib/gitlab/git/repository.rb
@@ -353,6 +353,13 @@ module Gitlab
         rugged.merge_base(from, to)
       end
 
+      # Gitaly note: JV: check gitlab-ee before removing this method.
+      def rugged_is_ancestor?(ancestor_id, descendant_id)
+        return false if ancestor_id.nil? || descendant_id.nil?
+
+        merge_base_commit(ancestor_id, descendant_id) == ancestor_id
+      end
+
       # Returns true is +from+ is direct ancestor to +to+, otherwise false
       def is_ancestor?(from, to)
         gitaly_commit_client.is_ancestor(from, to)