summaryrefslogtreecommitdiffstats
path: root/lib/redmine/scm/adapters/cvs_adapter.rb
diff options
context:
space:
mode:
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>2011-03-11 00:42:40 +0000
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>2011-03-11 00:42:40 +0000
commitd3d7ea08f421645a071cbbf9905f6d164325a553 (patch)
treeae2219fce49ff03dd4b2d3df0f6b95519a65697c /lib/redmine/scm/adapters/cvs_adapter.rb
parentf41848fda457d6c35d1bf22bb302e351b3ddd93d (diff)
downloadredmine-d3d7ea08f421645a071cbbf9905f6d164325a553.tar.gz
redmine-d3d7ea08f421645a071cbbf9905f6d164325a553.zip
scm: cvs: add new method 'scm_cmd' to wrap shellout.
Refer Mercurial adapter r4830. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5082 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'lib/redmine/scm/adapters/cvs_adapter.rb')
-rw-r--r--lib/redmine/scm/adapters/cvs_adapter.rb16
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/redmine/scm/adapters/cvs_adapter.rb b/lib/redmine/scm/adapters/cvs_adapter.rb
index a557199a3..0a0f45540 100644
--- a/lib/redmine/scm/adapters/cvs_adapter.rb
+++ b/lib/redmine/scm/adapters/cvs_adapter.rb
@@ -25,6 +25,9 @@ module Redmine
# CVS executable name
CVS_BIN = Redmine::Configuration['scm_cvs_command'] || "cvs"
+ # raised if scm command exited with error, e.g. unknown revision.
+ class ScmCommandAborted < CommandFailed; end
+
class << self
def client_command
@@bin ||= CVS_BIN
@@ -338,8 +341,19 @@ module Redmine
def normalize_path(path)
path.sub(/^(\/)*(.*)/,'\2').sub(/(.*)(,v)+/,'\1')
end
+
+ def scm_cmd(*args, &block)
+ full_args = [CVS_BIN, '-d', root_url]
+ full_args += args
+ ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block)
+ if $? && $?.exitstatus != 0
+ raise ScmCommandAborted, "cvs exited with non-zero status: #{$?.exitstatus}"
+ end
+ ret
+ end
+ private :scm_cmd
end
-
+
class CvsRevisionHelper
attr_accessor :complete_rev, :revision, :base, :branchid