[OSSCheck] Cache git repos (#4699)

By maintaining persistent clones of the repos which are incrementally
synced instead of cloned from scratch on every run.
This commit is contained in:
JP Simard 2023-01-17 12:07:48 -05:00 committed by GitHub
parent d120f41181
commit fbd9f16955
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 14 additions and 3 deletions

View File

@ -7,7 +7,6 @@
require 'fileutils'
require 'open3'
require 'optparse'
require 'erb'
################################
# Options
@ -136,10 +135,22 @@ def non_empty_lines(path)
end
def setup_repos
repos_cache_dir = '/tmp/SwiftLint-OSSCheck-Repos'
FileUtils.mkdir_p(repos_cache_dir)
@repos.each do |repo|
dir = "#{@working_dir}/#{repo.name}"
local_cache_dir = "#{repos_cache_dir}/#{repo.name}"
if File.directory?(local_cache_dir)
puts "Syncing #{repo}"
Dir.chdir(local_cache_dir) do
perform("git pull 2> /dev/null")
end
else
puts "Cloning #{repo}"
perform("git clone #{repo.git_url} --depth 1 #{dir} 2> /dev/null")
perform("git clone #{repo.git_url} --depth 1 #{local_cache_dir} 2> /dev/null")
end
dir = "#{@working_dir}/#{repo.name}"
perform("git clone #{local_cache_dir} #{dir} 2> /dev/null")
swiftlint_config = "#{dir}/.swiftlint.yml"
FileUtils.rm_rf(swiftlint_config)
if repo.name == 'Swift'