6e419a16d50c153e7f6a9dd7ae3d9fef0713e5d4
Author: Robin Luckey
Date: 2009-04-23 09:53:10 -0700
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
