def commit project, config, opts, issue
opts[:edit] = true if opts[:message].nil?
args = {
:verbose => "--verbose",
:all => "--all",
:edit => "--edit",
}.map { |k, v| opts[k] ? v : "" }.join(" ")
comment = "# #{issue.name}: #{issue.title}"
tag = "Ditz-issue: #{issue.id}"
message = if opts[:message] && !opts[:edit]
"#{opts[:message]}\n\n#{tag}"
elsif opts[:message] && opts[:edit]
"#{opts[:message]}\n\n#{comment}\n#{tag}"
else
"#{comment}\n#{tag}"
end
message = message.gsub("\"", "\\\"")
exec "git commit #{args} --message=\"#{message}\""
end