Index: script/add_project
===================================================================
--- script/add_project	(revision 576)
+++ script/add_project	(working copy)
@@ -10,16 +10,17 @@
 scm_options = {:interactive => true}
 
 ARGV.options do |opts|
-  opts.banner = "usage: cruise add <project-name> --url <URL> [subversion options]"
+  opts.banner = "usage: cruise add <project-name> --url <URL> [scm options]"
 
   opts.separator ""
 
   opts.on("-u", "--url url", String,
-          "The subversion url for the project (eg. svn://rubyforge.org/var/svn/cruisecontrolrb)") do |v|
+          "The scm url for the project (eg. using Subversion: svn://rubyforge.org/var/svn/cruisecontrolrb)") do |v|
     scm_options[:url] = v
   end
   opts.on("--username username", String, "Specify a username for source control") { |v| scm_options[:username] = v }
   opts.on("--password password", String, "Specify a password for source control") { |v| scm_options[:password] = v }
+  opts.on("--scm scm", String, "Specify the source control manager to use (default: subversion)") { |v| scm_options[:scm] = v }
   opts.on('-t', '--trace', 'Print out exception stack traces') { trace = true }
 
   opts.separator ""
@@ -49,7 +50,16 @@
 begin 
 	require RAILS_ROOT + "/config/environment"
 	
-	source_control = Subversion.new(scm_options)
+	scm_options[:scm] ||= 'subversion'
+	source_control_class = scm_options[:scm].to_s.camelize.constantize rescue nil
+	unless source_control_class
+    STDERR.puts "'#{scm_options[:scm]}' is not a valid source code manager!"
+    exit(-1)
+  end
+
+  scm_options.delete(:scm)
+  
+	source_control = source_control_class.new(scm_options)
 	project = Project.new(project_name, source_control)
 	projects = Projects.load_all
 	projects << project
