<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>.gitignore</filename>
    </added>
    <added>
      <filename>lib/git.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -6,7 +6,6 @@ class ChangeInSourceControlTrigger
   def build_necessary?(reasons)
     p = @triggered_project
     p.notify :polling_source_control
-    
     if !p.source_control.up_to_date?(reasons)
       p.notify :new_revisions_detected, reasons.flatten.find_all{|reason| reason.is_a? Revision}
       return true</diff>
      <filename>app/models/change_in_source_control_trigger.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,7 +8,7 @@ class Project
   end
 
   def self.read(dir, load_config = true)
-    @project_in_the_works = Project.new(File.basename(dir))
+    @project_in_the_works = Project.new(File.basename(dir), File.exists?(&quot;#{dir}/work/.git&quot;) ? Git.new : Subversion.new)
     begin
       @project_in_the_works.load_config if load_config
       return @project_in_the_works</diff>
      <filename>app/models/project.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,16 +10,26 @@ trace = false
 scm_options = {:interactive =&gt; true}
 
 ARGV.options do |opts|
-  opts.banner = &quot;usage: cruise add &lt;project-name&gt; --url &lt;URL&gt; [subversion options]&quot;
+  opts.banner = &quot;usage: cruise add &lt;project-name&gt; --svn-url &lt;URL&gt; [subversion options]&quot;
+  opts.banner &lt;&lt; &quot;\n       cruise add &lt;project-name&gt; --git-url &lt;URL&gt; [git options]&quot;
 
   opts.separator &quot;&quot;
 
-  opts.on(&quot;-u&quot;, &quot;--url url&quot;, String,
+  opts.on(&quot;-s&quot;, &quot;--svn-url url&quot;, String,
           &quot;The subversion url for the project (eg. svn://rubyforge.org/var/svn/cruisecontrolrb)&quot;) do |v|
     scm_options[:url] = v
+    scm_options[:svn] = true
   end
+  
+  opts.on(&quot;-g&quot;, &quot;--git-url url&quot;, String,
+          &quot;The git url for the project (eg. git://github.com/benburkert/cruisecontrolrb.git)&quot;) do |v|
+    scm_options[:url] = v
+    scm_options[:git] = true
+  end
+  
   opts.on(&quot;--username username&quot;, String, &quot;Specify a username for source control&quot;) { |v| scm_options[:username] = v }
   opts.on(&quot;--password password&quot;, String, &quot;Specify a password for source control&quot;) { |v| scm_options[:password] = v }
+  opts.on(&quot;-b&quot;, &quot;--branch&quot;, String, &quot;Specify a branch to track(git only)&quot;) { |v| scm_options[:branch] = v}
   opts.on('-t', '--trace', 'Print out exception stack traces') { trace = true }
 
   opts.separator &quot;&quot;
@@ -47,14 +57,21 @@ end
 puts &quot;Adding project '#{project_name}' (this may take a while)...&quot;
 
 begin 
-	require RAILS_ROOT + &quot;/config/environment&quot;
-	
-	source_control = Subversion.new(scm_options)
-	project = Project.new(project_name, source_control)
-	projects = Projects.load_all
-	projects &lt;&lt; project
-	
-	if source_control.url =~ /^svn\+ssh\:\/\//
+  require RAILS_ROOT + &quot;/config/environment&quot;
+  
+  if scm_options.has_key?(:svn)
+    source_control = Subversion.new(scm_options)
+  elsif scm_options.has_key?(:git)
+    source_control = Git.new(scm_options)
+  else
+    raise &quot;Unsupported SCM&quot;
+  end
+  
+  project = Project.new(project_name, source_control)
+  projects = Projects.load_all
+  projects &lt;&lt; project
+  
+  if source_control.url =~ /^svn\+ssh\:\/\//
     puts &quot;IMPORTANT!!! - It looks like you are connecting to your repository with an svn+ssh connection.  &quot; +
          &quot;For cruise to build this project, you need to have set up authentication caching for ssh, see this article&quot;
     puts &quot;   http://subversion.tigris.org/faq.html#ssh-auth-cache&quot;</diff>
      <filename>script/add_project</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ require 'optparse'
 CRUISE_OPTIONS = { :verbose =&gt; false }
 
 ARGV.options do |opts|
-  opts.banner = &quot;Usage: cruise builder &lt;project_name&gt; []options]&quot;
+  opts.banner = &quot;Usage: cruise builder &lt;project_name&gt; [options]&quot;
 
   opts.separator &quot;&quot;
 </diff>
      <filename>script/builder</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>c4efd1a65235f7989268f80409700dd409f8e71f</id>
    </parent>
  </parents>
  <author>
    <name>Ben Burkert</name>
    <email>ben@benburkert.com</email>
  </author>
  <url>http://github.com/benburkert/cruisecontrolrb/commit/2a51723432b357e3fc792a1d489a7c974c27289d</url>
  <id>2a51723432b357e3fc792a1d489a7c974c27289d</id>
  <committed-date>2008-02-11T22:07:16-08:00</committed-date>
  <authored-date>2008-02-11T22:07:16-08:00</authored-date>
  <message>Hacked together git support for cruisecontrolrb</message>
  <tree>79aab8c97f744de2f801fe4e3c3d0fb3a5ded1db</tree>
  <committer>
    <name>Ben Burkert</name>
    <email>ben@benburkert.com</email>
  </committer>
</commit>
