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 ===================================================================