diff --git a/CMakeLists.txt b/CMakeLists.txt
index 83a819a7fdac151911af08daa508a4117912585e..08e1eb0ca76856e1262139486b836069b8d8649b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -34,6 +34,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modul
 include(GetGitRevisionDescription)
 get_git_head_revision(GIT_REF_SPEC GIT_REV)
 git_describe(GIT_DESC --always --long --dirty)
+git_branch_name(GIT_BRANCH)
 
 # external includes
 include_directories(${OPENGL_INCLUDE_DIR})
diff --git a/externals/cmake-modules/GetGitRevisionDescription.cmake b/externals/cmake-modules/GetGitRevisionDescription.cmake
index 2b9cde061c7750a2890563228bee5a14b6bfef0f..087f5deeae5bcdaa143514cd11c3d8ba147eea87 100644
--- a/externals/cmake-modules/GetGitRevisionDescription.cmake
+++ b/externals/cmake-modules/GetGitRevisionDescription.cmake
@@ -80,6 +80,34 @@ function(get_git_head_revision _refspecvar _hashvar)
 	set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE)
 endfunction()
 
+function(git_branch_name _var)
+	if(NOT GIT_FOUND)
+		find_package(Git QUIET)
+	endif()
+
+	if(NOT GIT_FOUND)
+		set(${_var} "GIT-NOTFOUND" PARENT_SCOPE)
+		return()
+	endif()
+
+	execute_process(COMMAND
+		"${GIT_EXECUTABLE}"
+		rev-parse --abbrev-ref HEAD
+		WORKING_DIRECTORY
+		"${CMAKE_SOURCE_DIR}"
+		RESULT_VARIABLE
+		res
+		OUTPUT_VARIABLE
+		out
+		ERROR_QUIET
+		OUTPUT_STRIP_TRAILING_WHITESPACE)
+	if(NOT res EQUAL 0)
+		set(out "${out}-${res}-NOTFOUND")
+	endif()
+
+	set(${_var} "${out}" PARENT_SCOPE)
+endfunction()
+
 function(git_describe _var)
 	if(NOT GIT_FOUND)
 		find_package(Git QUIET)
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index 1495e433b17b674fddc37c3a96bf2ef485fe1334..5eaf673652da458c7dc1b46140deb94a339739e7 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -1,4 +1,4 @@
-configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scm_rev.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/scm_rev.cpp" @ONLY)
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/scm_rev.cpp.in" "${CMAKE_CURRENT_SOURCE_DIR}/scm_rev.cpp" @ONLY)
 
 set(SRCS    break_points.cpp
             console_listener.cpp
@@ -13,10 +13,10 @@ set(SRCS    break_points.cpp
             misc.cpp
             msg_handler.cpp
             string_util.cpp
+            scm_rev.cpp
             symbols.cpp
             thread.cpp
             timer.cpp
-            utf8.cpp
-            ${CMAKE_CURRENT_BINARY_DIR}/scm_rev.cpp)
+            utf8.cpp)
 
 add_library(common STATIC ${SRCS})
diff --git a/src/common/scm_rev.cpp.in b/src/common/scm_rev.cpp.in
index 9e2bcfdd8d702796d165a8f959698127dc83910c..512c5bd4ce4d86b1d377bc3347cc4b088759422d 100644
--- a/src/common/scm_rev.cpp.in
+++ b/src/common/scm_rev.cpp.in
@@ -5,13 +5,13 @@
 #include "common/scm_rev.h"
 
 #define GIT_REV      "@GIT_REV@"
-#define GIT_REF_SPEC "@GIT_REF_SPEC@"
+#define GIT_BRANCH   "@GIT_BRANCH@"
 #define GIT_DESC     "@GIT_DESC@"
 
 namespace Common {
 
 const char g_scm_rev[]      = GIT_REV;
-const char g_scm_ref_spec[] = GIT_REF_SPEC;
+const char g_scm_ref_spec[] = GIT_BRANCH;
 const char g_scm_desc[]     = GIT_DESC;
 
 } // namespace