Class: Autoproj::CLI::Git
- Inherits:
-
InspectionTool
- Object
- InspectionTool
- Autoproj::CLI::Git
- Defined in:
- lib/autoproj/cli/git.rb
Instance Method Summary collapse
- #cleanup(user_selection, options = Hash.new) ⇒ Object
- #cleanup_package(pkg, progress, options = Hash.new) ⇒ Object
- #git_all_remotes(pkg) ⇒ Object
- #git_gc(pkg, progress) ⇒ Object
- #git_remote_prune(pkg, progress) ⇒ Object
- #git_remove_obsolete_remotes(pkg, progress) ⇒ Object
- #git_repack(pkg, progress) ⇒ Object
Instance Method Details
#cleanup(user_selection, options = Hash.new) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/autoproj/cli/git.rb', line 8 def cleanup(user_selection, = Hash.new) initialize_and_load source_packages, * = finalize_setup(user_selection, ignore_non_imported_packages: true) git_packages = source_packages.map do |pkg_name| pkg = ws.manifest.find_autobuild_package(pkg_name) pkg if pkg.importer.kind_of?(Autobuild::Git) end.compact git_packages.each_with_index do |pkg, i| cleanup_package(pkg, "[#{i}/#{git_packages.size}] ", local: [:local], remove_obsolete_remotes: [:remove_obsolete_remotes]) end end |
#cleanup_package(pkg, progress, options = Hash.new) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/autoproj/cli/git.rb', line 68 def cleanup_package(pkg, progress, = Hash.new) if [:remove_obsolete_remotes] git_remove_obsolete_remotes(pkg, progress) end if ![:local] git_remote_prune(pkg, progress) end git_gc(pkg, progress) git_repack(pkg, progress) end |
#git_all_remotes(pkg) ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/autoproj/cli/git.rb', line 37 def git_all_remotes(pkg) pkg.importer.run_git(pkg, 'config', '--list'). map do |line| if match = /remote\.(.*)\.url=/.match(line) match[1] end end.compact.to_set end |
#git_gc(pkg, progress) ⇒ Object
25 26 27 28 29 |
# File 'lib/autoproj/cli/git.rb', line 25 def git_gc(pkg, progress) pkg.progress_start "#{progress}%s: gc", done_message: "#{progress}%s: gc" do pkg.importer.(pkg, 'gc') end end |
#git_remote_prune(pkg, progress) ⇒ Object
46 47 48 49 50 51 52 53 |
# File 'lib/autoproj/cli/git.rb', line 46 def git_remote_prune(pkg, progress) remotes = git_all_remotes(pkg) remotes.each do |remote_name| pkg.progress_start "#{progress}%s: pruning #{remote_name}", done_message: "#{progress}%s: pruned #{remote_name}" do pkg.importer.run_git(pkg, 'remote', 'prune', remote_name) end end end |
#git_remove_obsolete_remotes(pkg, progress) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/autoproj/cli/git.rb', line 55 def git_remove_obsolete_remotes(pkg, progress) remotes = git_all_remotes(pkg) pkg.importer.each_configured_remote do |remote_name, _| remotes.delete(remote_name) end remotes.each do |remote_name| pkg.progress_start "#{progress}%s: removing remote #{remote_name}", done_message: "#{progress}%s: removed remote #{remote_name}" do pkg.importer.run_git(pkg, 'remote', 'rm', remote_name) end end end |
#git_repack(pkg, progress) ⇒ Object
31 32 33 34 35 |
# File 'lib/autoproj/cli/git.rb', line 31 def git_repack(pkg, progress) pkg.progress_start "#{progress}%s: repack", done_message: "#{progress}%s: repack" do pkg.importer.(pkg, 'repack', '-adl') end end |