vivo/utilities/releaseScripts/8_merge_to_master.rb

57 lines
2 KiB
Ruby

=begin
--------------------------------------------------------------------------------
Merge the maintenance branches into the master branchs, and create the final
release tags.
This will only work if the release candidate is "final", and if the maintenance
branches already exist.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
=end
$: << File.dirname(File.expand_path(__FILE__))
require '_common'
#
# Merge the maintenance branch to the master branch and create the tag.
#
def merge_branch_to_master(branch, tag, message, repo_path)
Dir.chdir(repo_path) do |path|
cmds = [
"git checkout master",
"git merge --no-ff -Xtheirs #{branch}",
"git tag -a -f #{tag} -m '#{message}'"
]
cmds.insert(0, "git branch master origin/master") unless branch_exists?(path, "master")
approve_and_execute(cmds, "in #{path}")
end
end
#
# ------------------------------------------------------------------------------------
# Main method
# ------------------------------------------------------------------------------------
#
begin
branch = Settings.branch_name
candidate_label = Settings.confirm_candidate_label(Settings.candidate_label)
tag = Settings.tag_name
message = Settings.tag_message
vivo_path = Settings.vivo_path
vitro_path = Settings.vitro_path
raise BadState.new("Only the final release gets merged to the master branch.") unless candidate_label == "final"
raise BadState.new("Branch #{branch} doesn't exist in VIVO.") unless branch_exists?(vivo_path, branch)
raise BadState.new("Branch #{branch} doesn't exist in Vitro.") unless branch_exists?(vitro_path, branch)
get_permission_and_go("OK to merge the #{tag} tags to the master branches?") do
puts "Merging tags"
merge_branch_to_master(branch, tag, message, vivo_path)
merge_branch_to_master(branch, tag, message, vitro_path)
end
rescue BadState
puts "#{$!.message} - Aborting."
end