From 5b694a081412397b8f5491ffa016d89dde9786fd Mon Sep 17 00:00:00 2001 From: Matthew Kent Date: Tue, 21 Nov 2023 15:44:59 -0800 Subject: [PATCH] Support passing a short-sha version for rollback when using git. Only for emergencies. --- lib/kamal/cli/main.rb | 2 +- lib/kamal/git.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/kamal/cli/main.rb b/lib/kamal/cli/main.rb index 6adc36fe..d602b4a1 100644 --- a/lib/kamal/cli/main.rb +++ b/lib/kamal/cli/main.rb @@ -93,7 +93,7 @@ class Kamal::Cli::Main < Kamal::Cli::Base mutating do invoke_options = deploy_options - KAMAL.config.version = version + KAMAL.config.version = Kamal::Git.used? ? Kamal::Git.resolve_revision(version) : version old_version = nil if container_available?(version) diff --git a/lib/kamal/git.rb b/lib/kamal/git.rb index 8d59827a..ebe3d4d2 100644 --- a/lib/kamal/git.rb +++ b/lib/kamal/git.rb @@ -13,6 +13,16 @@ module Kamal::Git `git rev-parse HEAD`.strip end + # Attempt to convert a short -> long git sha, or return the original + def resolve_revision(revision) + resolved_rev = `git rev-parse -q --verify #{revision}`.strip + if resolved_rev.empty? + revision + else + resolved_rev + end + end + def uncommitted_changes `git status --porcelain`.strip end