lib/rim/sync_module_helper.rb in esr-rim-1.2.2 vs lib/rim/sync_module_helper.rb in esr-rim-1.3.0
- old
+ new
@@ -1,10 +1,11 @@
require 'rim/module_helper'
require 'rim/rim_info'
require 'rim/file_helper'
require 'rim/dirty_check'
require 'tempfile'
+require 'pathname'
module RIM
class SyncModuleHelper < ModuleHelper
def initialize(dest_root, workspace_root, module_info, logger)
super(workspace_root, module_info, logger)
@@ -31,16 +32,22 @@
raise RimException.new("Unknown target revision '#{@module_info.target_revision}' for module '#{@module_info.local_path}'.")
end
local_path = File.join(@dest_root, @module_info.local_path)
prepare_empty_folder(local_path, @module_info.ignores)
temp_commit(d, "clear directory") if d.uncommited_changes?
- s.execute("git archive --format tar #{@module_info.target_revision} | tar -x -C #{local_path}")
+ strip = ""
+ if @module_info.subdir
+ depth = Pathname(@module_info.subdir).each_filename.count()
+ strip = "--strip-components=#{depth}"
+ end
+ s.execute("git archive --format tar #{@module_info.target_revision} #{@module_info.subdir} | tar #{strip} -x -C #{local_path}")
sha1 = s.execute("git rev-parse #{@module_info.target_revision}").strip
@rim_info = RimInfo.new
@rim_info.remote_url = @module_info.remote_url
@rim_info.target_revision = @module_info.target_revision
@rim_info.revision_sha1 = sha1
@rim_info.ignores = @module_info.ignores.join(",")
+ @rim_info.subdir = @module_info.subdir
@rim_info.to_dir(local_path)
DirtyCheck.mark_clean(local_path)
end
temp_commit(d, "commit changes") if needs_commit?(d)
d.execute("git reset --soft #{start_sha1}")