summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-04-01 16:56:25 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-04-01 16:56:25 +0300
commit541d89941014137762dff696c83b3357eba8efeb (patch)
tree8d94e6baced612248531b94ce747fe8b7d76e4e5 /app
parent49b024f5f5b88d406b895f050943db1e75adfa2a (diff)
downloadgitlab-ce-541d89941014137762dff696c83b3357eba8efeb.tar.gz
Project.repository should never be nil so you can call repository.exists? or repository.empty?
Also specify separate project factory for project with filled repo
Diffstat (limited to 'app')
-rw-r--r--app/helpers/application_helper.rb2
-rw-r--r--app/models/project.rb14
-rw-r--r--app/models/repository.rb10
-rw-r--r--app/views/projects/_clone_panel.html.haml2
4 files changed, 16 insertions, 12 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index f03039e4b75..cb9cb1a3322 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -96,7 +96,7 @@ module ApplicationHelper
]
project_nav = []
- if @project && @project.repository && @project.repository.root_ref
+ if @project && @project.repository.exists? && @project.repository.root_ref
project_nav = [
{ label: "#{simple_sanitize(@project.name_with_namespace)} - Issues", url: project_issues_path(@project) },
{ label: "#{simple_sanitize(@project.name_with_namespace)} - Commits", url: project_commits_path(@project, @ref || @project.repository.root_ref) },
diff --git a/app/models/project.rb b/app/models/project.rb
index 934dd6b241b..0263ffefdf0 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -141,13 +141,7 @@ class Project < ActiveRecord::Base
end
def repository
- if path
- @repository ||= Repository.new(path_with_namespace, default_branch)
- else
- nil
- end
- rescue Gitlab::Git::NoRepository
- nil
+ @repository ||= Repository.new(path_with_namespace, default_branch)
end
def saved?
@@ -332,14 +326,14 @@ class Project < ActiveRecord::Base
end
def valid_repo?
- repo
+ repository.exists?
rescue
errors.add(:path, "Invalid repository path")
false
end
def empty_repo?
- !repository || repository.empty?
+ !repository.exists? || repository.empty?
end
def ensure_satellite_exists
@@ -363,7 +357,7 @@ class Project < ActiveRecord::Base
end
def repo_exists?
- @repo_exists ||= (repository && repository.branches.present?)
+ @repo_exists ||= repository.exists?
rescue
@repo_exists = false
end
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 0a4431f14c1..ed600e29232 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -3,6 +3,16 @@ class Repository
def initialize(path_with_namespace, default_branch)
@raw_repository = Gitlab::Git::Repository.new(path_with_namespace, default_branch)
+ rescue Gitlab::Git::Repository::NoRepository
+ nil
+ end
+
+ def exists?
+ raw_repository
+ end
+
+ def empty?
+ raw_repository.empty?
end
def commit(id = nil)
diff --git a/app/views/projects/_clone_panel.html.haml b/app/views/projects/_clone_panel.html.haml
index 9a2be429206..91353147c6b 100644
--- a/app/views/projects/_clone_panel.html.haml
+++ b/app/views/projects/_clone_panel.html.haml
@@ -4,7 +4,7 @@
.form-horizontal= render "shared/clone_panel"
.span4.pull-right
.pull-right
- - unless @project.empty_repo?
+ - if @project.empty_repo?
- if can? current_user, :download_code, @project
= link_to archive_project_repository_path(@project), class: "btn-small btn grouped" do
%i.icon-download-alt