diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2015-11-01 17:08:38 -0500 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2015-11-01 21:31:29 -0500 |
commit | d0401b04a4ed6a1684091a84bfd262b2b2cb560f (patch) | |
tree | 758526fcc63bc9fa1970c5de80155c0c95077064 /CMakeLists.txt | |
parent | c4826c300340a9e4df20964a14650caf64fc1b58 (diff) | |
download | rneovim-d0401b04a4ed6a1684091a84bfd262b2b2cb560f.tar.gz rneovim-d0401b04a4ed6a1684091a84bfd262b2b2cb560f.tar.bz2 rneovim-d0401b04a4ed6a1684091a84bfd262b2b2cb560f.zip |
build: Use `git describe` for version strings.
When building in a git repo:
- If HEAD corresponds to an annotated tag, (i.e. git_get_exact_tag()
returns truthy) the current build is considered a "release" build:
NVIM_VERSION_MEDIUM is directly assigned the tagged version name,
and NVIM_VERSION_* defines are ignored.
- If HEAD is not a tagged release, then NVIM_VERSION_MEDIUM is
directly assigned the result of `git describe`.
If git (or the repo) is not available:
- The NVIM_VERSION_* defines are used to define NVIM_VERSION_MEDIUM.
Sample outputs for `nvim --version` and `nvim +version`:
Building with git @ non-tagged commit e66df14:
NVIM v0.1.0-1-ge66df14 (compiled Nov 1 2015 19:10:30)
Commit: e66df148f9401be17adab324a6e41d927aae20b3
Building with git @ v0.1.1 tag:
NVIM v0.1.1 (compiled Nov 1 2015 19:03:52)
[no "Commit:" line]
Building this commit _not_ in a git repo:
NVIM 0.1.0-dev (compiled Nov 1 2015 19:16:11)
[no "Commit:" line]
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e43bbcd41..f11b9995c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,24 +47,26 @@ if(NOT CMAKE_BUILD_TYPE) endif() # Version tokens +# - In a git repo, these tokens are _ignored_. +# - If the current HEAD is tagged, the tag name is used. +# - Otherwise the result of `git describe` is used. +# - If not in a git repo (e.g. a tarball) these tokens set the version string. set(NVIM_VERSION_MAJOR 0) set(NVIM_VERSION_MINOR 1) set(NVIM_VERSION_PATCH 0) +set(NVIM_VERSION_PRERELEASE "-dev") file(TO_CMAKE_PATH ${CMAKE_CURRENT_LIST_DIR}/.git FORCED_GIT_DIR) include(GetGitRevisionDescription) -if(NVIM_VERSION_PRERELEASE) - get_git_head_revision(GIT_REFSPEC NVIM_VERSION_COMMIT) - - # TODO(justinmk): UTC time would be nice here #1071 - git_timestamp(GIT_TIMESTAMP) - if(GIT_TIMESTAMP) - set(NVIM_VERSION_BUILD "+${GIT_TIMESTAMP}") +get_git_head_revision(GIT_REFSPEC NVIM_VERSION_COMMIT) +if(NVIM_VERSION_COMMIT) # is a git repo + git_get_exact_tag(NVIM_VERSION_MEDIUM) + if(NVIM_VERSION_MEDIUM) # is a tagged release + unset(NVIM_VERSION_COMMIT) + else() # is a dev build + git_describe(NVIM_VERSION_MEDIUM) + get_git_head_revision(GIT_REFSPEC NVIM_VERSION_COMMIT) endif() -else() - # If possible, get the Git tag for the current revision. - git_get_exact_tag(NVIM_VERSION_COMMIT) - set(NVIM_VERSION_BUILD "") endif() set(NVIM_VERSION_BUILD_TYPE "${CMAKE_BUILD_TYPE}") |