<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -82,40 +82,42 @@ task :release =&gt; [:package] do
 end
 
 task :release_edge do
-  puts &quot;#{'=' * 50} Running rake release_edge&quot;
+  ensure_git_cleanup do
+    puts &quot;#{'=' * 50} Running rake release_edge&quot;
 
-  sh %{git checkout edge-gem}
-  sh %{git reset --hard origin/edge-gem}
-  sh %{git merge origin/master}
+    sh %{git checkout edge-gem}
+    sh %{git reset --hard origin/edge-gem}
+    sh %{git merge origin/master}
 
-  # Get the current master branch version
-  version = File.read('VERSION').strip.split('.').map {|n| n.to_i}
-  unless version[1] % 2 == 1 &amp;&amp; version[2] == 0
-    raise &quot;#{version.join('.')} is not a development version&quot; 
-  end
+    # Get the current master branch version
+    version = File.read('VERSION').strip.split('.').map {|n| n.to_i}
+    unless version[1] % 2 == 1 &amp;&amp; version[2] == 0
+      raise &quot;#{version.join('.')} is not a development version&quot; 
+    end
 
-  # Bump the edge gem version
-  edge_version = File.read('EDGE_GEM_VERSION').strip.split('.').map {|n| n.to_i}
-  if edge_version[0..1] != version[0..1]
-    # A new master branch version was released, reset the edge gem version
-    edge_version[0..1] = version[0..1]
-    edge_version[2] = 0
-  else
-    # Just bump the teeny version
-    edge_version[2] += 1
+    # Bump the edge gem version
+    edge_version = File.read('EDGE_GEM_VERSION').strip.split('.').map {|n| n.to_i}
+    if edge_version[0..1] != version[0..1]
+      # A new master branch version was released, reset the edge gem version
+      edge_version[0..1] = version[0..1]
+      edge_version[2] = 0
+    else
+      # Just bump the teeny version
+      edge_version[2] += 1
+    end
+    edge_version = edge_version.join('.')
+    File.open('EDGE_GEM_VERSION', 'w') {|f| f.puts(edge_version)}
+    sh %{git commit -m &quot;Bump edge gem version to #{edge_version}.&quot; EDGE_GEM_VERSION}
+    sh %{git push origin edge-gem}
+
+    # Package the edge gem with the proper version
+    File.open('VERSION', 'w') {|f| f.puts(edge_version)}
+    sh %{rake package}
+    sh %{git checkout VERSION}
+
+    sh %{rubyforge login}
+    sh %{rubyforge add_release haml haml-edge &quot;Bleeding Edge (v#{edge_version})&quot; pkg/haml-edge-#{edge_version}.gem}
   end
-  edge_version = edge_version.join('.')
-  File.open('EDGE_GEM_VERSION', 'w') {|f| f.puts(edge_version)}
-  sh %{git commit -m &quot;Bump edge gem version to #{edge_version}.&quot; EDGE_GEM_VERSION}
-  sh %{git push origin edge-gem}
-
-  # Package the edge gem with the proper version
-  File.open('VERSION', 'w') {|f| f.puts(edge_version)}
-  sh %{rake package}
-  sh %{git checkout VERSION}
-
-  sh %{rubyforge login}
-  sh %{rubyforge add_release haml haml-edge &quot;Bleeding Edge (v#{edge_version})&quot; pkg/haml-edge-#{edge_version}.gem}
 end
 
 task :watch_for_update do
@@ -156,13 +158,15 @@ rescue LoadError
 end
 
 task :pages do
-  puts &quot;#{'=' * 50} Running rake pages PROJ=#{ENV[&quot;PROJ&quot;].inspect}&quot;
-  raise 'No ENV[&quot;PROJ&quot;]!' unless proj = ENV[&quot;PROJ&quot;]
-  sh %{git checkout #{proj}-pages}
-  sh %{git reset --hard origin/#{proj}-pages}
-
-  sh %{rake build --trace}
-  sh %{rsync -av --delete site/ /var/www/#{proj}-pages}
+  ensure_git_cleanup do
+    puts &quot;#{'=' * 50} Running rake pages PROJ=#{ENV[&quot;PROJ&quot;].inspect}&quot;
+    raise 'No ENV[&quot;PROJ&quot;]!' unless proj = ENV[&quot;PROJ&quot;]
+    sh %{git checkout #{proj}-pages}
+    sh %{git reset --hard origin/#{proj}-pages}
+
+    sh %{rake build --trace}
+    sh %{rsync -av --delete site/ /var/www/#{proj}-pages}
+  end
 end
 
 # ----- Coverage -----
@@ -249,6 +253,14 @@ end
 
 # ----- Handling Updates -----
 
+def ensure_git_cleanup
+  yield
+ensure
+  sh %{git reset --hard HEAD}
+  sh %{git clean -xdf}
+  sh %{git checkout master}
+end
+
 task :handle_update do
   unless ENV[&quot;REF&quot;] =~ %r{^refs/heads/(master|(?:haml|sass)-pages)$}
     puts &quot;#{'=' * 20} Ignoring rake handle_update REF=#{ENV[&quot;REF&quot;].inspect}&quot;
@@ -265,18 +277,12 @@ task :handle_update do
   sh %{git fetch origin}
   sh %{git reset --hard origin/master}
 
-  begin
-    if branch == &quot;master&quot;
-      sh %{rake release_edge --trace}
-      sh %{rake pages --trace PROJ=haml}
-      sh %{rake pages --trace PROJ=sass}
-    elsif branch =~ /^(haml|sass)-pages$/
-      sh %{rake pages --trace PROJ=#{$1}}
-    end
-  ensure
-    sh %{git reset --hard HEAD}
-    sh %{git clean -xdf}
-    sh %{git checkout master}
+  if branch == &quot;master&quot;
+    sh %{rake release_edge --trace}
+    sh %{rake pages --trace PROJ=haml}
+    sh %{rake pages --trace PROJ=sass}
+  elsif branch =~ /^(haml|sass)-pages$/
+    sh %{rake pages --trace PROJ=#{$1}}
   end
 
   puts 'Done running handle_update'</diff>
      <filename>Rakefile</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>5709b7082a1953668e08b0293406efac82ce0646</id>
    </parent>
  </parents>
  <author>
    <name>Nathan Weizenbaum</name>
    <email>nex342@gmail.com</email>
  </author>
  <url>http://github.com/chriseppstein/haml/commit/2432d0c22a06c457d17d9739740f92a807cca118</url>
  <id>2432d0c22a06c457d17d9739740f92a807cca118</id>
  <committed-date>2009-07-04T16:36:50-07:00</committed-date>
  <authored-date>2009-07-04T16:36:50-07:00</authored-date>
  <message>Make sure we clean up the git repo after every relevant rake task.</message>
  <tree>cf015872a2de98ccc1a189533fbdc08a63c95322</tree>
  <committer>
    <name>Nathan Weizenbaum</name>
    <email>nex342@gmail.com</email>
  </committer>
</commit>
