0f25bca3d27c253af7efce12e9c5011443ec3653

Author: Robin Luckey

Date: 2009-04-23 10:06:26 -0700

[NEW] Bzr: Implement export

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