<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -254,35 +254,63 @@ module Deprec2
     if defined?(src_package[:md5sum])
       md5_clause = &quot; &amp;&amp; echo '#{src_package[:md5sum]}' | md5sum -c - &quot;
     end
-    apt.install( {:base =&gt; %w(wget)}, :stable )
-    # XXX replace with invoke_command
-    run &quot;cd #{src_dir} &amp;&amp; test -f #{src_package[:filename]} #{md5_clause} || #{sudo} wget --quiet --timestamping #{src_package[:url]}&quot;
+    case src_package[:download_method]
+      # when getting source with git
+      when :git
+        # ensure git is installed
+        apt.install( {:base =&gt; %w(git-core)}, :stable) #TODO fix this to test ubuntu version &lt;hardy might need specific git version for full git submodules support
+        package_dir = File.join(src_dir, src_package[:dir])
+        run &quot;if [ -d #{package_dir} ]; then cd #{package_dir} &amp;&amp; #{sudo} git pull &amp;&amp; #{sudo} git submodule init &amp;&amp; #{sudo} git submodule update; else #{sudo} git clone #{src_package[:url]} #{package_dir} &amp;&amp; cd #{package_dir} &amp;&amp; #{sudo} git submodule init &amp;&amp; #{sudo} git submodule update ; fi&quot;
+	# Checkout the revision wanted if defined
+	invoke_command &quot;cd #{package_dir} &amp;&amp; git co #{src_package[:version]}&quot;, :via =&gt; :via if src_package[:version]
+      # when getting source with wget
+      when :http
+        # ensure wget is installed
+        apt.install( {:base =&gt; %w(wget)}, :stable )
+        # XXX replace with invoke_command
+        run &quot;cd #{src_dir} &amp;&amp; test -f #{src_package[:filename]} #{md5_clause} || #{sudo} wget --quiet --timestamping #{src_package[:url]}&quot;
+      else
+        puts &quot;DOWNLOAD SRC: Download method not recognised. src_package[:download_method]: #{src_package[:download_method]}&quot;
+    end
   end
 
   # unpack src and make it writable by the group
   def unpack_src(src_package, src_dir)
     set_package_defaults(src_package)
     package_dir = File.join(src_dir, src_package[:dir])
-    # XXX replace with invoke_command
+    case src_package[:download_method]
+      # when unpacking git sources - nothing to do
+      when :git
+        puts &quot;UNPACK SRC: nothing to do for git installs&quot;
+      when :http
+        sudo &lt;&lt;-EOF
+        bash -c '
+        cd #{src_dir};
+        test -d #{package_dir}.old &amp;&amp; rm -fr #{package_dir}.old;
+        test -d #{package_dir} &amp;&amp; mv #{package_dir} #{package_dir}.old;
+        #{src_package[:unpack]}
+        '
+        EOF
+      else
+        puts &quot;UNPACK SRC: Download method not recognised. src_package[:download_method]: #{src_package[:download_method]} &quot;
+    end
     sudo &lt;&lt;-EOF
     bash -c '
     cd #{src_dir};
-    test -d #{package_dir}.old &amp;&amp; rm -fr #{package_dir}.old;
-    test -d #{package_dir} &amp;&amp; mv #{package_dir} #{package_dir}.old;
-    #{src_package[:unpack]}
     chgrp -R #{group} #{package_dir};  
     chmod -R g+w #{package_dir};
     '
     EOF
   end
-  
+
   def set_package_defaults(pkg)
-      pkg[:filename] ||= File.basename(pkg[:url])  
-      pkg[:dir] ||= pkg[:filename].sub(/(\.tgz|\.tar\.gz)/,'')  
-      pkg[:unpack] ||= &quot;tar zxf #{pkg[:filename]};&quot;
-      pkg[:configure] ||= './configure ;'
-      pkg[:make] ||= 'make;'
-      pkg[:install] ||= 'make install;'
+    pkg[:filename] ||= File.basename(pkg[:url])
+    pkg[:dir] ||= pkg[:filename].sub(/(\.tgz|\.tar\.gz)/,'')
+    pkg[:download_method] ||= :http
+    pkg[:unpack] ||= &quot;tar zxf #{pkg[:filename]};&quot;
+    pkg[:configure] ||= './configure ;'
+    pkg[:make] ||= 'make;'
+    pkg[:install] ||= 'make install;'
   end
 
   # install package from source</diff>
      <filename>lib/deprec/capistrano_extensions.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>c1137ac58d70072ea4c441651cf05b0723de1b69</id>
    </parent>
  </parents>
  <author>
    <name>Pritesh Mehta</name>
    <email>pritesh@phatforge.com</email>
  </author>
  <url>http://github.com/mbailey/deprec/commit/65e8d87ab33e3dc8767d54728cb9e392da010d96</url>
  <id>65e8d87ab33e3dc8767d54728cb9e392da010d96</id>
  <committed-date>2008-09-08T19:39:50-07:00</committed-date>
  <authored-date>2008-08-21T09:18:01-07:00</authored-date>
  <message>Extend capistrano_extensions.rb to allow install from git sources.</message>
  <tree>2f24293c067cf3ab24b446143fec78a76eb67680</tree>
  <committer>
    <name>Mike Bailey</name>
    <email>mike@bailey.net.au</email>
  </committer>
</commit>
