6e419a16d50c153e7f6a9dd7ae3d9fef0713e5d4

Author: Robin Luckey

Date: 2009-04-23 09:53:10 -0700

[NEW] Hg: Implement export

diff --git a/lib/scm/adapters/hg/misc.rb b/lib/scm/adapters/hg/misc.rb index 0542df7..f2091f2 100644 --- a/lib/scm/adapters/hg/misc.rb +++ b/lib/scm/adapters/hg/misc.rb @@ -10,7 +10,13 @@ module Scm::Adapters end def ls_tree(token) - run("cd #{path} && hg manifest -r #{token}").split("\n") + run("cd '#{path}' && hg manifest -r #{token}").split("\n") + end + + def export(dest_dir, token='tip') + run("cd '#{path}' && hg archive -r #{token} '#{dest_dir}'") + # Hg leaves a little cookie crumb in the export directory. Remove it. + File.delete(File.join(dest_dir, '.hg_archival.txt')) if File.exist?(File.join(dest_dir, '.hg_archival.txt')) end end end diff --git a/test/unit/hg_misc_test.rb b/test/unit/hg_misc_test.rb index 49e1b88..ce436a5 100644 --- a/test/unit/hg_misc_test.rb +++ b/test/unit/hg_misc_test.rb @@ -18,5 +18,14 @@ module Scm::Adapters end end + def test_export + with_hg_repository('hg') do |hg| + Scm::ScratchDir.new do |dir| + hg.export(dir) + assert_equal ['.', '..', 'README', 'makefile'], Dir.entries(dir).sort + end + end + end + end end