raise ArgumentError.new "invalid sha1 #{sha1}"
end
src_gitdir, _ = git_dir_for repo_name
+ unless src_gitdir
+ raise ArgumentError.new "no local repository for #{repo_name}"
+ end
dst_gitdir = Rails.configuration.git_internal_dir
must_pipe("echo #{sha1.shellescape}",
"git --git-dir #{src_gitdir.shellescape} pack-objects -q --revs --stdout",
end
def self.cache_dir_for git_url
- Rails.root.join('tmp', 'git', Digest::SHA1.hexdigest(git_url) + ".git").
- to_s
+ File.join(cache_dir_base, Digest::SHA1.hexdigest(git_url) + ".git").to_s
+ end
+
+ def self.cache_dir_base
+ Rails.root.join 'tmp', 'git'
end
def self.fetch_remote_repository gitdir, git_url