scm: catch exception of getting command and version in model (#4273).

If command does not exist, Windows raises exception in shellout().
Linux does not raise exception.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4882 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Toshi MARUYAMA 2011-02-19 01:11:48 +00:00 committed by Eric Davis
parent 6c6bc81654
commit 66662ac84b

View File

@ -187,7 +187,7 @@ class Repository < ActiveRecord::Base
begin begin
project.repository.fetch_changesets project.repository.fetch_changesets
rescue Redmine::Scm::Adapters::CommandFailed => e rescue Redmine::Scm::Adapters::CommandFailed => e
logger.error "Repository: error during fetching changesets: #{e.message}" logger.error "scm: error during fetching changesets: #{e.message}"
end end
end end
end end
@ -218,15 +218,33 @@ class Repository < ActiveRecord::Base
end end
def self.scm_command def self.scm_command
self.scm_adapter_class.nil? ? "" : self.scm_adapter_class.client_command ret = ""
begin
ret = self.scm_adapter_class.client_command if self.scm_adapter_class
rescue Redmine::Scm::Adapters::CommandFailed => e
logger.error "scm: error during get command: #{e.message}"
end
ret
end end
def self.scm_version_string def self.scm_version_string
self.scm_adapter_class.nil? ? "" : self.scm_adapter_class.client_version_string ret = ""
begin
ret = self.scm_adapter_class.client_version_string if self.scm_adapter_class
rescue Redmine::Scm::Adapters::CommandFailed => e
logger.error "scm: error during get version string: #{e.message}"
end
ret
end end
def self.scm_available def self.scm_available
self.scm_adapter_class.nil? ? false : self.scm_adapter_class.client_available ret = false
begin
ret = self.scm_adapter_class.client_available if self.scm_adapter_class
rescue Redmine::Scm::Adapters::CommandFailed => e
logger.error "scm: error during get scm available: #{e.message}"
end
ret
end end
private private