middleman-deploy/lib/middleman-deploy/strategies/git/force_push.rb

53 lines
1.3 KiB
Ruby

module Middleman
module Deploy
module Strategies
module Git
class ForcePush < Base
def process
Dir.chdir(self.build_dir) do
add_remote_url
checkout_branch
commit_branch('-f')
end
end
private
def add_remote_url
url = get_remote_url
unless File.exist?('.git')
`git init`
`git remote add origin #{url}`
else
# check if the remote repo has changed
unless url == `git config --get remote.origin.url`.chop
`git remote rm origin`
`git remote add origin #{url}`
end
end
end
def get_remote_url
remote = self.remote
url = remote
# check if remote is not a git url
unless remote =~ /\.git$/
url = `git config --get remote.#{url}.url`.chop
end
# if the remote name doesn't exist in the main repo
if url == ''
puts "Can't deploy! Please add a remote with the name '#{remote}' to your repo."
exit
end
url
end
end
end
end
end
end