def assign project, config, opts, issue, maybe_release
if maybe_release && maybe_release.name == issue.release
raise Error, "issue #{issue.name} already assigned to release #{issue.release}"
end
puts "Issue #{issue.name} currently " + if issue.release
"assigned to release #{issue.release}."
else
"not assigned to any release."
end
release = maybe_release || begin
releases = project.releases.sort_by { |r| (r.release_time || 0).to_i }
releases -= [releases.find { |r| r.name == issue.release }] if issue.release
ask_for_selection(releases, "release") do |r|
r.name + if r.released?
" (released #{r.release_time.pretty_date})"
else
" (unreleased)"
end
end
end
issue.assign_to_release release, config.user, get_comment(opts)
puts "Assigned #{issue.name} to #{release.name}."
end