diff --git a/lib/vanagon/project/dsl.rb b/lib/vanagon/project/dsl.rb index f96adc83..97fec349 100644 --- a/lib/vanagon/project/dsl.rb +++ b/lib/vanagon/project/dsl.rb @@ -194,7 +194,16 @@ def release_from_git # def version_from_git git_version = Git.open(File.expand_path("..", @configdir)).describe('HEAD', tags: true, abbrev: 9) - version(git_version.split('-').reject(&:empty?).join('.')) + case git_version + # Matches semver.org spec for a pre-release, with a well-known alpha, + # beta, or RC identifier. Substitute "-" for "~" so that dpkg and + # rpm treat this as a pre-release and will upgrade packages to the + # final version. + when /\A\d+\.\d+\.\d+-(?:alpha|beta|rc)\d+/ + version(git_version.sub('-', '~')) + else + version(git_version.split('-').reject(&:empty?).join('.')) + end rescue Git::Error VanagonLogger.error "Directory '#{File.expand_path('..', @configdir)}' cannot be versioned by git. Maybe it hasn't been tagged yet?" end