edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/context.rb;C666188
File: context.rb
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/context.rb;C666188  (server)    12/4/2008 2:49 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/context.rb;gitintegration
@@ -223,40 +223,53 @@
   end
 end
 
-class ProjectContext
-  Mapping = Struct.new(:merlin_path, :svn_path, :recurse)
+module IronRubyUtils
+  def banner(message)
+    rake_output_message "-" * 79
+    rake_output_message message
+    rake_output_message "-" * 79
+  end
 
-  class CommandContext
+  def copy_dir(source_dir, target_dir, options = '')
+    log_filename = Pathname.new(Dir.tmpdir) + "rake_transform.log"
+    exec_f %Q{robocopy "#{source_dir}" "#{target_dir}" #{DEFAULT_ROBOCOPY_OPTIONS} "/LOG+:#{log_filename}" #{options}}
+  end
+  # Low-level command helpers
 
-    # Low-level command helpers
+  def is_test?
+    ENV['test'] == 'true'
+  end
 
-    def is_test?
-      ENV['test'] == 'true'
+  def exec(cmd)
+    if is_test?
+      rake_output_message ">> #{cmd}"
+    else
+      sh cmd
     end
+  end
 
-    def exec(cmd)
-      if is_test?
-        rake_output_message ">> #{cmd}"
-      else
-        sh cmd
-      end
+  def exec_net(cmd)
+    if ENV['mono'].nil?
+      exec cmd
+    else
+      exec "mono #{cmd}"
     end
+  end
 
-    def exec_net(cmd)
-      if ENV['mono'].nil?
-        exec cmd
-      else
-        exec "mono #{cmd}"
-      end
+  def exec_f(cmd)
+    begin
+      exec(cmd)
+    rescue
     end
+  end
+end
 
-    def exec_f(cmd)
-      begin
-        exec(cmd)
-      rescue
-      end
-    end
+class ProjectContext
+  Mapping = Struct.new(:merlin_path, :svn_path, :recurse)
+  class CommandContext
+    include IronRubyUtils
 
+
     # context is either :source or :target. project_context is reference
     # to ProjectContext subclass class
 
@@ -305,13 +318,6 @@
       get_mapping(name).recurse
     end
 
-    # General filesystem related methods
-
-    def copy_dir(source_dir, target_dir, options = '')
-      log_filename = Pathname.new(Dir.tmpdir) + "rake_transform.log"
-      exec_f %Q{robocopy "#{source_dir}" "#{target_dir}" #{DEFAULT_ROBOCOPY_OPTIONS} "/LOG+:#{log_filename}" #{options}}
-    end
-
     def copy_to_temp_dir(name, temp_dir, extras = [])
       IronRuby.source_context do
         source = get_source_dir(name)
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Rakefile;C666188
File: Rakefile
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Rakefile;C666188  (server)    12/4/2008 2:39 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Rakefile;gitintegration
@@ -31,3 +31,4 @@
 import 'rake\compile.rake'
 import 'rake\package.rake'
 import 'rake\misc.rake'
+import 'rake\git.rake'
===================================================================
add: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/rake/git.rake
File: git.rake
===================================================================
--- [no source file]
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/rake/git.rake;gitintegration
@@ -1,0 +1,32 @@
+desc "Merge TFS into Git"
+task :to_git => [:happy] do
+  include IronRubyUtils
+
+  if File.exist?("#{ENV["MERLIN_ROOT"]}\\Languages\\IronPython")
+    banner("Error")
+    rake_output_message <<-EOL
+    This command must be run from an enlistment that only has the required ruby sources. To create one you can run:
+    
+    tf workspace /new /s:http://vstfdevdiv:8080 /template:rubysync;REDMOND\\jdeville %COMPUTERNAME% /noprompt
+
+    where %COMPUTERNAME% is the name of your enlisted computer
+    EOL
+
+    abort
+  end
+  # TODO: generalize target
+  target = File.expand_path("~\\projects\\ironruby")
+  banner "Removing extra files from the enlistment"
+  system "#{ENV["MERLIN_ROOT"]}\\External\\Tools\\tfpt.exe treeclean -delete" 
+
+  banner "Getting the latest TFS sources"
+  system "tf get /overwrite"
+
+  banner "Copying sources"
+  copy_dir(File.expand_path("#{ENV["MERLIN_ROOT"]}\\..\\.."), target,"/E")
+
+  banner "Git Status:"
+  Dir.chdir(target) do
+    system "git status"
+  end
+end
===================================================================
