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