lib/gitx/cli/nuke_command.rb in gitx-3.1.0 vs lib/gitx/cli/nuke_command.rb in gitx-3.1.1
- old
+ new
@@ -12,10 +12,11 @@
good_branch = options[:destination] || ask("What branch do you want to reset #{bad_branch} to? (default: #{bad_branch})")
good_branch = bad_branch if good_branch.empty?
last_known_good_tag = current_build_tag(good_branch)
return unless yes?("Reset #{bad_branch} to #{last_known_good_tag}? (y/n)", :green)
+
assert_aggregate_branch!(bad_branch)
return if migrations_need_to_be_reverted?(bad_branch, last_known_good_tag)
say 'Resetting '
say "#{bad_branch} ", :green
@@ -32,10 +33,11 @@
private
def migrations_need_to_be_reverted?(bad_branch, last_known_good_tag)
return false unless File.exist?('db/migrate')
+
outdated_migrations = run_git_cmd('diff', "#{last_known_good_tag}...#{bad_branch}", '--name-only', 'db/migrate').split
return false if outdated_migrations.empty?
say "#{bad_branch} contains migrations that may need to be reverted. Ensure any reversable migrations are reverted on affected databases before nuking.", :red
say 'Example commands to revert outdated migrations:'
@@ -47,9 +49,10 @@
end
def current_build_tag(branch)
last_build_tag = build_tags_for_branch(branch).last
raise "No known good tag found for branch: #{branch}. Verify tag exists via `git tag -l`" unless last_build_tag
+
last_build_tag
end
def build_tags_for_branch(branch)
run_git_cmd 'fetch', '--tags'