Sha256: febefcb389bab7c4e33aad216b6234bd7e1860b63e6832a4289cf1ae109ea616
Contents?: true
Size: 1.31 KB
Versions: 9
Compression:
Stored size: 1.31 KB
Contents
require 'thor' require 'gitx' require 'gitx/cli/base_command' module Gitx module Cli class CleanupCommand < BaseCommand desc 'cleanup', 'Cleanup branches that have been merged into master from the repo' def cleanup checkout_branch config.base_branch run_cmd 'git pull' run_cmd 'git remote prune origin' say 'Deleting local and remote branches that have been merged into ' say config.base_branch, :green merged_branches(remote: true).each do |branch| run_cmd "git push origin --delete #{branch}" end merged_branches(remote: false).each do |branch| run_cmd "git branch -d #{branch}" end end private # @return list of branches that have been merged def merged_branches(options = {}) args = [] args << '-r' if options[:remote] args << '--merged' output = run_cmd("git branch #{args.join(' ')}").split("\n") branches = output.map do |branch| branch = branch.gsub(/\*/, '').strip.split(' ').first branch = branch.split('/').last if options[:remote] branch end branches.uniq! branches -= config.reserved_branches branches.reject! { |b| config.aggregate_branch?(b) } branches end end end end
Version data entries
9 entries across 9 versions & 1 rubygems