Commit 90d0875a authored by Toshi MARUYAMA's avatar Toshi MARUYAMA Committed by Eric Davis

scm: git: add new method 'scm_cmd' to wrap shellout.

Refer Mercurial adapter r4830.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4886 e93f8b46-1217-0410-a6f0-8f06a7374b81
parent 899a35fc
...@@ -24,6 +24,9 @@ module Redmine ...@@ -24,6 +24,9 @@ module Redmine
# Git executable name # Git executable name
GIT_BIN = Redmine::Configuration['scm_git_command'] || "git" GIT_BIN = Redmine::Configuration['scm_git_command'] || "git"
# raised if scm command exited with error, e.g. unknown revision.
class ScmCommandAborted < CommandFailed; end
class << self class << self
def client_command def client_command
@@bin ||= GIT_BIN @@bin ||= GIT_BIN
...@@ -82,9 +85,9 @@ module Redmine ...@@ -82,9 +85,9 @@ module Redmine
end end
def default_branch def default_branch
branches.include?('master') ? 'master' : branches.first branches.include?('master') ? 'master' : branches.first
end end
def entries(path=nil, identifier=nil) def entries(path=nil, identifier=nil)
path ||= '' path ||= ''
entries = Entries.new entries = Entries.new
...@@ -279,7 +282,7 @@ module Redmine ...@@ -279,7 +282,7 @@ module Redmine
end end
blame blame
end end
def cat(path, identifier=nil) def cat(path, identifier=nil)
if identifier.nil? if identifier.nil?
identifier = 'HEAD' identifier = 'HEAD'
...@@ -300,6 +303,19 @@ module Redmine ...@@ -300,6 +303,19 @@ module Redmine
identifier[0,8] identifier[0,8]
end end
end end
def scm_cmd(*args, &block)
repo_path = root_url || url
full_args = [GIT_BIN, '--git-dir', repo_path]
full_args += args
full_args << '--no-color'
ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block)
if $? && $?.exitstatus != 0
raise ScmCommandAborted, "git exited with non-zero status: #{$?.exitstatus}"
end
ret
end
private :scm_cmd
end end
end end
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment