0f25bca3d27c253af7efce12e9c5011443ec3653
Author: Robin Luckey
Date: 2009-04-23 10:06:26 -0700
diff --git a/lib/scm/adapters/bzr/misc.rb b/lib/scm/adapters/bzr/misc.rb
index ead665b..3831209 100644
--- a/lib/scm/adapters/bzr/misc.rb
+++ b/lib/scm/adapters/bzr/misc.rb
@@ -31,5 +31,14 @@ module Scm::Adapters
def is_merge_commit?(commit)
parent_tokens(commit).size > 1
end
+
+ def export(dest_dir, token=head_token)
+ # Unlike other SCMs, Bzr doesn't simply place the contents into dest_dir.
+ # It actually *creates* dest_dir. Since it should already exist at this point,
+ # first we have to delete it.
+ Dir.delete(dest_dir) if File.exist?(dest_dir)
+
+ run "cd '#{url}' && bzr export --format=dir -r #{to_rev_param(token)} '#{dest_dir}'"
+ end
end
end
diff --git a/test/unit/bzr_misc_test.rb b/test/unit/bzr_misc_test.rb
index 14f87d8..a1d4c3a 100644
--- a/test/unit/bzr_misc_test.rb
+++ b/test/unit/bzr_misc_test.rb
@@ -22,5 +22,14 @@ module Scm::Adapters
end
end
+ def test_export
+ with_bzr_repository('bzr') do |bzr|
+ Scm::ScratchDir.new do |dir|
+ bzr.export(dir)
+ assert_equal ['.', '..', 'file1.txt', 'file3.txt', 'file4.txt', 'file5.txt'], Dir.entries(dir).sort
+ end
+ end
+ end
+
end
end
