Skip to content
Snippets Groups Projects
Commit fe17f276 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Seems finally to have fixed git info

parent 6dd246eb
Branches
Tags
No related merge requests found
......@@ -3,14 +3,49 @@
list(APPEND CMAKE_MODULE_PATH "${PASTIS_SOURCE_DIR}/cmake/cmake-modules")
include(GetGitRevisionDescription)
git_describe(PASTIS_GIT_TAG "--abbrev=0")
get_git_head_revision(PASTIS_GIT_HEAD PASTIS_GIT_HASH)
git_local_changes(PASTIS_GIT_HAS_LOCAL_CHANGES)
set(HAS_PASTIS_GIT_INFO "TRUE")
if(${PASTIS_GIT_HAS_LOCAL_CHANGES} STREQUAL "CLEAN")
find_package(Git QUIET)
if(GIT_FOUND)
execute_process(
COMMAND "${GIT_EXECUTABLE}" describe "--abbrev=0"
WORKING_DIRECTORY "${PASTIS_SOURCE_DIR}"
OUTPUT_VARIABLE PASTIS_GIT_TAG
RESULT_VARIABLE FOUND_PASTIS_GIT_INFO
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(FOUND_PASTIS_GIT_INFO EQUAL 0)
execute_process(
COMMAND "${GIT_EXECUTABLE}" reflog -1 "--format=%H"
WORKING_DIRECTORY "${PASTIS_SOURCE_DIR}"
OUTPUT_VARIABLE PASTIS_GIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND "${GIT_EXECUTABLE}" symbolic-ref HEAD
WORKING_DIRECTORY "${PASTIS_SOURCE_DIR}"
OUTPUT_VARIABLE PASTIS_GIT_HEAD
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND "${GIT_EXECUTABLE}" diff-index --quiet HEAD
WORKING_DIRECTORY "${PASTIS_SOURCE_DIR}"
RESULT_VARIABLE STATE
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(STATE EQUAL 0)
set(PASTIS_GIT_HAS_LOCAL_CHANGES "CLEAN")
set(PASTIS_GIT_IS_CLEAN true)
else()
set(PASTIS_GIT_IS_CLEAN false)
set(PASTIS_GIT_HAS_LOCAL_CHANGES "DIRTY")
endif()
else()
unset(HAS_PASTIS_GIT_INFO)
endif()
else()
unset(HAS_PASTIS_GIT_INFO)
endif()
string(FIND "${PASTIS_GIT_TAG}" "${CMAKE_PASTIS_VERSION}" FOUND_VERSION_SUBSTR)
......
......@@ -7,22 +7,48 @@ std::string RevisionInfo::version()
return PASTIS_VERSION;
}
bool RevisionInfo::hasGitInfo()
{
#ifdef HAS_PASTIS_GIT_INFO
return true;
#else
return false;
#endif
}
std::string RevisionInfo::gitTag()
{
#ifdef HAS_PASTIS_GIT_INFO
return PASTIS_GIT_TAG;
#else
return "unknown tag";
#endif
}
std::string RevisionInfo::gitHead()
{
#ifdef HAS_PASTIS_GIT_INFO
return PASTIS_GIT_HEAD;
#else
return "unknown head";
#endif
}
std::string RevisionInfo::gitHash()
{
#ifdef HAS_PASTIS_GIT_INFO
return PASTIS_GIT_HASH;
#else
return "unknown hash";
#endif
}
bool RevisionInfo::gitIsClean()
{
#ifdef HAS_PASTIS_GIT_INFO
return PASTIS_GIT_IS_CLEAN;
#else
return false;
#endif
}
......@@ -6,6 +6,8 @@
struct RevisionInfo
{
static std::string version();
static bool hasGitInfo();
static std::string gitTag();
static std::string gitHead();
static std::string gitHash();
......
#ifndef PASTIS_GIT_REVISION_HPP
#define PASTIS_GIT_REVISION_HPP
#cmakedefine HAS_PASTIS_GIT_INFO
#define PASTIS_GIT_TAG "@PASTIS_GIT_TAG@"
#define PASTIS_GIT_HEAD "@PASTIS_GIT_HEAD@"
#define PASTIS_GIT_HASH "@PASTIS_GIT_HASH@"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment